比特币转账手续费(Transaction Fees)详解

Unknown view 67 2014-2-19 02:21
share to
Scan QR code with WeChat

人们经常说你可以免费将比特币发送到地球的任意角落,通常情况下的确可以免费转账,但是在某些情况下你必须支付手续费(Transaction Fees)才能完成转账, 每次在比特币OKCoin交易平台(个人认为中国最正规的比特币交易平台www.okcoin.com)充值提现比特币的时候经常会遇到有时收万分之一有时又不收,总是不知道规则,看到了一篇关于比特币手续费的文章,终于有所了解了,发出来跟大家分享一下。

这个手续费是奖励给矿工的,以激励矿工继续挖矿为比特币提供足够的算力从而确保比特币网络的安全。目前矿工的主要收入是通过创造新的块(Block)来获得25BTC的奖励,但是这个奖励每4年减半,随着时间的推移比特币交易手续费奖励将逐渐取代创造新块的奖励。

什么情况下需要支付手续费?金额是多少?

比特币系统有一系列的网络规则,其中包含手续费规则,这一系列规则也就是“客户端要做什么”。当你使用Bitcoin客户端(钱包,Bitcoin-Qt)发送比特币的时候,整个过程大致分为以下步骤:

1. 筹备你要发送的比特币

客户端负责收集你钱包(Bitcoin-Qt)里的比特币余额为支付做准备,因为你收到的每一笔比特币都存在你的钱包里面直到你花掉它们。

假如在OKCoin比特币提现3BTC与2BTC两次,它们在你钱包的记录是相互独立的,即一个3BTC和一个2BTC,而不是合并为5BTC(钱包只记录交易明细,并不将余额合并,但是你在钱包的界面上可以看到总的余额),随着时间的推移你的钱包里会积累许多这样数量不等的比特币,可想而知OKCoin比特币钱包里应该有成千上万条这样的记录了吧。所以当你发送比特币的时候钱包必须决定用哪些上述记录最适合用来本次发送。

在一次交易中你得到的比特币称为“输入(inputs)”,支出的比特币称为“输出(outputs)”,在你的钱包里存在多个输入和输出。

2. 阻止大量微额(dust)支付冲击网络

如果你向OKCoin比特币交易平台充值小于0.01BTC(包括你钱包内部的资金变动)的话,你必须要支付0.0001的手续费。钱包在准备你的支付金额的时候有一个既定的规则,就是在众多输入(inputs)中筹备支付金额的时候尽量避免产生小于0.01BTC的金额变动(比如你要向OKCoin比特币充值5.005BTC,钱包尽可能的选择3+2.005或者1+1+3.005,而不是5+0.005)。

3. 数额越大、币龄(age)越高优先级越高

如果你发送金额太小或者是你的比特币刚开采出来不久,那么你的转账就不再免费之列。每一个交易都会分配一个优先级,这个优先级通过币的新旧程度、交易的字节数和交易的数量。具体来说,对于每一个输入(inputs)来讲,客户端会先将比特币的数量乘以这些币在块中存在的时间(币龄,age),然后将所有的乘积加起来除以此次交易的大小(以字节为单位),计算公式:priority = sum(input_value_in_base_units * input_age)/size_in_bytes,计算结果如果小于0.576,那么该交易就必须支付手续费。这也是为什么你在OKCoin比特币提现的时候都要加一个0.0001的原因了,因为OKCoin钱包内的比特币转账频繁,比特币在块中的时间比较短,因此需要支付手续费。如果你确实有大量的小额输入,比如小矿工,又想免费转出,这时候你可以加一个数额大的、币龄大的比特币金额,就会将平均优先级提高,从而可以免费转出比特币。

4. 每千字节的收费

在转账的最后客户端会计算本次转账的大小(以字节为单位),大小一般取决于输入和输出的数额大小,计算公式如下:148 × 输入数额 + 34 × 输出数额 + 10,如果该次转账的大小超过10000字节但是优先级符合免费的标准,那么仍然可以享受免费转账,否则需要支付手续费。每1000字节的费用默认是0.0001BTC,但是你也可以在客户端里进行追加,依次打开选项卡“设置>选项>主要”进行手续费的调整。如果你在设置的手续费小于0.0001BTC按0.0001算。当本条规则适用时将会取代步骤2的规则而不是累加。

原文出处:http://bitcoinfees.com/

来自:http://bitcoinlead.org/t/4473

btcfans公众号

Scan QR code with WeChat

From the Internet
Disclaimer:

Previous: 比特信(Bitmessage) 最安全的通信系统 Next: 写给似懂非懂者:比特币101

Related