比特币的手续费机制
人们宣传比特币的时候常常会讲:“可以向各种张三李四免费转账。”其实不一定,有时还是需要手续费的。
2013年,一个比特币的价格为20美元。2017年,转一个比特币要花20美元。
手续费的目的一来为激励矿工不辍挖矿,二来以维护比特币网络安全(维稳费?)。早期矿工的挖矿底薪比较高,每个区块50枚BTC,但是创世块之后每出21万个块(每四年),底薪减半。所有2100万枚比特币都被挖出后,由交易费充当挖矿奖励。
关于减半算法的代码,长这样。
CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
奖励金在2012年当时候从50比特币减半为25比特币,2016年从25比特币减半为12.5b比特币。大概2020年就会再减半为6.25比特币。
那么,怎么确定什么时候需要掏交易费、掏多少合适?
比特币网络规则内置交易费用结构,取决于系统推荐的(标准)客户端。 我们拿比特币核心(bitcoin core)打个比方,看看转帐时,需要过哪几道:
1. 花哪些币?
客户端首先确定用哪些币来完成支付。
好比, Bob给Alice转了2枚比特币;Rose又给Alice转了3枚比特币,那么两次转账金额会单独地趴在Alice的钱包中,直到被花出去。(注意:两笔转账不会“自动合并”为5BTC)。
那么,经过一阵子,钱包中会积累不同金额的比特币,所以才说,得考虑下用哪些做支付。
可用金额叫做交易的“输入”,最终发送金额(包括退回到钱包的找零)称为“输出”。
2. 避免过于零碎的支付
若交易“输出”(包括找零)小于0.01BTC,则收取0.0001BTC的手续费。 “选币”时,算法会尽量避开那些找零金额低于0.01BTC的币。
3. 老币、大额交易优先
若发送的比特币金额过小,或币龄过低,则很有可能被收取费用。 每笔交易都有优先级,由“输入”的年龄、金额和交易输入数量决定。
具体而言就是, 客户端将每一笔输入的金额与该输入在区块中存在的时间相乘,将所有乘法结果相加再除以交易字节大小。
若结果小于0.576,则收取交易费。所以,有一堆零碎且/或很新的“输入”,又不想掏手续费可以这么干,交易里加上一个大额且较老的输入即可。这里边,比较关键的就是这个金额x年龄的平均值。
如果在第3步中某交易本来是收费的,但随着时间流逝,又有新的区块不断产生,那么原先交易中“输入”年龄也随之增长,进一步提升了交易的优先级,因此第3步中产生的费用可能会被免除。
4. “称重”收费(按每千字节收费)
最后,客户端检查交易的字节长度。长度取决于输入和输出的数量,大致可用下列公式计算:
148 * 输入数量 + 34 * 输出数量 + 10
若长度小于10000字节且在第3步中有足够高的优先级,那么这笔交易最终被确认为免费,反之需收费, 费用默认为0.0001BTC/千字节(不足1k的按1k计算)。 可自行在客户端相关设置中更改交易费数额。 低于0.0001BTC的设置不会生效。新费用设置生效后,将覆盖步骤2中的费用,两者不叠加。
接着说几个例子:
1. 过犹不及
说:Alice钱包中趴着两笔“输入”,金额分别为1BTC和2BTC。然后Alice想买杯2.99999BTC的咖啡。这时就不存在选币这一说了,因为有且只有两笔输入,都用上才够咖啡钱,剩下0.00001BTC找零。注意,步骤2提到: 若交易“输出”(包括找零)小于0.01BTC,则收取0.0001BTC的手续费。 说明,咖啡交易将被征收0.0001BTC的手续费。结果就是交易会失败,因为Alice手里的余额不足。
这就有意思了:Alice手上有3BTC,但是没法买2.99999BTC的咖啡。Alice可以把3BTC全部付给商家以避免手续费(假设第3步的费用为0),但有些商家可能会要求支付准确的金额。
2. 人品爆发
说:Alice人品大爆发,在某赔率64000的赌博游戏中,用0.02BTC拨来1280BTC。网站支付奖金时,自己钱包里并没有可丁可卯的1280BTC,于是只能用各种零碎输入(含找零)来各种凑。
最后,这笔凑出来的奖金大小是51203字节。是这样,交易大小超过10000字节,费用增至0.0005BTC/每千字节(其实早期的交易费用就是0.0005,后来变成0.0001的),那么, 这里的手续费就是52*0.0005 = 0.026BTC。 比玩家的本儿还高。
当然,还是比PayPal转便宜。
注: 使用Paypal手续费为 4.4% + 0.3 USD/每笔。
好比,1280刀转账,1280*4.4% + 0.3 = 56.62 刀
注意:最后缴纳的手续费是0.0286BTC,有可能是因为没有使用(推荐)标准客户端来创建交易,然后这个客户端在计算费用时有点小问题。
这是个真事儿,见:Bitcoin Transaction 0a05beb2b1ad62d54a40e624d763cd97f10369b8e0527a3046dd2562cef4652c
3. 机关算尽,不掏钱
有种交易踏在免费的悬崖边上,大小为9999字节,堪称交易费躲闪之王。全部输入中只有一个是1聪(satoshi,即比特币最小单位,0.000 000 01 BTC = 1 satoshi, 以致敬比特币创始人Satoshi Nakamoto);但是有另一个大额输入拉高了优先级,免除交易费用。
必须支付手续费吗?
捎带脚说一句,手续费其实不是强制的。有些矿工并没有很在意这些收费标准,也会把一些没有手续费的交易记录到区块中。使用标准客户端的“原始交易”(raw transactions)界面能创建手续费低于标准费用的交易,而且,还是有可能人品爆发的被矿工打包入块的。
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场