最后的羸家9星评价
2020-10-30 11:33:14
手续费的目的一来为激励矿工不辍挖矿,二来以维护比特币网络安全(维稳费?)。早期矿工的挖矿底薪比较高,每个区块50枚BTC,但是创世块之后每出21万个块(每四年),底薪减半。所有2100万枚比特币都被挖出后,由交易费充当挖矿奖励。
奖励金在2012年当时候从50比特币减半为25比特币,2016年从25比特币减半为12.5b比特币。大概2020年就会再减半为6.25比特币。
好比, Bob给Alice转了2枚比特币;Rose又给Alice转了3枚比特币,那么两次转账金额会单独地趴在Alice的钱包中,直到被花出去。(注意:两笔转账不会“自动合并”为5BTC)。
那么,经过一阵子,钱包中会积累不同金额的比特币,所以才说,得考虑下用哪些做支付。
比特币的手续费规则也被纳入了比特币的网络规则,即取决于标准客户端(reference client)的行为。当你尝试通过bitcoin-qt(当前通用的标准客户端)进行转帐时,它要经过以下几个步骤:
1. 选取要支出的比特币
客户端首先要从你所拥有的比特币中选取一部分用来完成支付。每次你接受别人的支付时,这笔交易会记录到钱包中,直到你再把它花出去。
假设你收到两笔支付,分别为2BTC和3BTC,则这两份余额会单独地存放在你的钱包中,而不会“合并”为一个5BTC。在经过一段时间之后你的钱包中积累了不同金额的比特币,当你想要支付时客户端就需要决定选择哪些金额最为合适。
这些可用的金额称为一笔交易的“输入”,而最终发送出去的金额(包括可能被退回到你的钱包的找零)称为“输出”。
2. 不鼓励零碎的支付
如果交易的“输出”(包括找零)低于0.01BTC,那么就要收取0.0001BTC的手续费。“选币算法”会尽量避免找零金额低于0.01BTC。
3. 优先支付历史久远和数量多的比特币
如果你要支付的比特币金额过小,或者离你得到它的时间比较近,那这笔交易就难逃收费一劫了。每笔交易都被赋予了一个优先级,由“输入”的历史时间、金额和笔数来决定。
具体来说,对于每笔“输入”客户端都会使用其金额来乘以其在区块中存在的时间,最后相加后除以这笔交易的字节长度。如果结果小于0.576则交易会被收费。这意味着你可以在交易中选取大量零碎且/或时间较近的“输入”的同时仍然避免被收费——只需在其中附上一笔时间久远的“输入”即可。关键的是金额乘以历史时间的均值。
如果在第3步中某笔交易原本确定要被收费,但有可能随着时间流逝,新区块不断产生,这笔交易原先的“输入”的历史时间也会增长,使得交易的优先级得到提升,因此在第3步中产生的费用可能会被免除。
4. “称重”收费(按每千字节收费)
最后客户端会检查交易的字节长度。这一长度取决于输入和输出的数量,大致可用下列公式计算:148 * 输入数量 + 34 * 输出数量 + 10
如果这一长度小于10000字节且在第3步中有足够高的优先级,那么这笔交易最终被确认为免费,否则需要交费。费用按每千字节收费(不足1k的按1k计算)。单位费用默认为0.0001BTC,你也可以在客户端的“设置-选项-主要”选项卡中提高这一费用——神马!提高?尼玛不填0的都得继续治疗啊!很抱歉,低于0.0001BTC的设置不会生效。如果你在这里设置了任何费用,则其会替代第2步中的费用,而不是叠加。
习惯就就就好4星评价
2020-09-01 17:07:34
发送的时候如果选择RBF选项,可以追加,或者通过Child Pays For Parent (CPFP)就是后面的交易多一些手续费,请求矿工把之前的交易给一起确认了。但是这个功能要看矿工用的软件版本,老一些的不支持。
交易进入队列后会随着时间的增加处理优先级会增加,理论上随着优先级增加,总会被矿工收录的,慢慢等。