人们经常说你可以免费将比特币发送到地球的任意角落,通常情况下的确可以免费转账,但是在某些情况下你必须支付手续费(Transaction Fees)才能完成转账, 在0.8.3版Bitcoin钱包中默认是0.0001比特币的转账手续费。
这个手续费是奖励给矿工的,以激励矿工继续挖矿为比特币提供足够的算力从而确保比特币网络的安全。目前矿工的主要收入是通过创造新的块(Block)来获得25BTC的奖励,但是这个奖励每4年减半,随着时间的推移比特币交易手续费奖励将逐渐取代创造新块的奖励。
什么情况下需要支付手续费?比特币手续费收取多少?手续费怎么算?
比特币系统有一系列的网络规则,其中包含手续费规则,这一系列规则也就是“客户端要做什么”。当你使用Bitcoin客户端(钱包,Bitcoin-Qt)发送比特币的时候,整个过程大致分为以下步骤:
1. 筹备你要发送的比特币
客户端负责收集你钱包(Bitcoin-Qt)里的比特币余额为支付做准备,因为你收到的每一笔比特币都存在你的钱包里面直到你花掉它们。
假如你收到3BTC与2BTC两次付款,它们在钱包的记录是相互独立的,即一个3BTC和一个2BTC,而不是合并为5BTC(钱包只记录交易明细,并不将余额合并,但是你在钱包的界面上可以看到总的余额),随着时间的推移你的钱包里会积累许多这样数量不等的比特币,所以当你发送比特币的时候钱包必须决定用哪些比特币最适合用来本次发送。
在一次交易中你得到的比特币称为“输入(inputs)”,支出的比特币称为“输出(outputs)”,在你的钱包里存在多个输入和输出。
2. 阻止大量微额(dust)支付冲击网络
如果你的输出(outputs)小于0.01BTC(包括你钱包内部的资金变动)的话,你必须要支付0.0001的手续费,即使是你自己转给你自己。钱包在准备你的支付金额的时候有一个既定的规则,就是在众多输入(inputs)中筹备支付金额的时候尽量避免产生小于0.01BTC的金额变动(比如你要支付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,那么该交易就必须支付手续费。如果你确实大量的小额输入,又想免费转出,这时候你可以加一个数额大的、币龄大的比特币金额,就会将平均优先级提高,从而可以免费转出比特币。
4. 每千字节的收费
在转账的最后客户端会检测本次转账的大小(以字节为单位),大小一般取决于输入和输出的数额大小,计算公式如下:148 * 输入数额 + 34 * 输出数额 + 10,如果该次转账的大小超过10000字节但是优先级符合免费的标准,那么仍然可以享受免费转账,否则需要支付手续费。没1000字节的费用默认是0.0001BTC,但是你也可以在客户端里进行追加,依次打开选项卡“设置>选项>主要”进行手续费的调整。如果你在设置的手续费小于0.0001BTC按0.0001算。当本条规则适用时将会取代步骤2的规则而不是累加