主页 > 苹果手机下载imtoken钱包流程 > CoinEx科普:一篇文章了解比特币的UTXO记账系统,助你降低转账手续费!

CoinEx科普:一篇文章了解比特币的UTXO记账系统,助你降低转账手续费!

币圈人一提到比特币,就会说比特币交易手续费便宜,交易速度快,比支付宝好用得多。

但情况可能并非如此!比特币拥堵时,一笔交易的手续费往往要几十元。如果交易费用较少,则可能需要几个小时才能收到。

那么比特币交易费用究竟是如何计算的?我怎样才能避免支付更少的费用?这时候就不得不提比特币的UTXO记账系统了。

要了解比特币交易手续费的秘密,首先要了解比特币的记账系统,也就是UTXO,代表Unspent Transaction Output,中文翻译为【未使用的交易输出】。

目前银行、支付宝、证券交易等都是[基于账户的]记账系统,而不是比特币采用的UTXO系统。

假设A想通过银行向B支付100元,在现有账户体系下,流程如下:

查看A的账户余额是否有100元,如果余额不足100元则终止交易

从A的账户中扣除100元(假设手续费为零)

给B的账户加100元

比特币的UTXO没有使用上述账户体系,而是描述了一个比特币从诞生到多次交易的经历。

假设一个场景,张三是一名矿工,他通过挖矿获得了 12.5BTC,几天后,他将 2BTC 给了李四,几天后,他和李四将钱还给王舞,张三给了3个BTC,李斯给了2个BTC。

如果是基于账户体系的,那么流程是这样的:

而基于比特币UTXO,那么流程应该是这样的:

你看出区别了吗?

比特币账本记录一笔又一笔交易。

每笔交易都有多个交易输入,即资金来源,也有多个交易输出,即资金去向。未使用的交易输出反映在地址上的比特币中。

01号交易中,输入12.5BTC挖矿获得,输出到张三的地址。由于这个输出没有花费,所以张三的地址有12.5BTC。

理解这个概念的最佳方式是查看区块链浏览器。在区块链浏览器中,我们可以查看某笔交易的所有交易输入和交易输出。

左边是交易的来源比特币2010年转账手续费,右边是交易的目的地。一笔交易的输出成为下一笔交易的输入。

了解了比特币UTXO之后,终于可以进入手续费的部分了。

当你使用比特币客户端发送比特币时,整个过程大致分为以下几个步骤:

第 1 步:比特币客户端选择适当的未花费输出

如前所述,一笔交易最终会留下多个未花费的输出,而这些未花费的输出不会被合并! !例如,如果您收到两笔付款,2BTC 和 3BTC,这两个未使用的输出分别存储在钱包中,不会合并为 5BTC。

当你想用比特币支付给别人时,比特币客户端会选择合适的未花费输出发送出去,成为下一笔交易的输入。下面这张图可谓是这个过程的生动示范。建议点击大图研究。

【图片来自网络】

第 2 步:阻止分散支付的比特币系统

比特币目前的算法不鼓励碎片化支付,因为大量的碎片化支付会使交易数据变大,导致整个系统的交易变慢。 Satoshi Nakamoto 将区块更改为 1M,因为当时有人恶意发送了大量零碎付款,使其变得更大。所有用户的客户数据。如果交易的“输出”小于0.01BTC,则收取0.0001BTC的手续费。钱包在准备你的支付金额时有一个既定的规则,即在多个输入中准备支付金额时,尽量避免小于0.01BTC的金额有任何变化(例如,如果你要支付< @5.005BTC,钱包尽量选择3+2.005或者1+1+3.005而不是5+0.005)。

第3步:金额越高,币种越旧,优先级越高

每笔交易都会有一个优先级,一笔交易是否需要收费取决于以下优先级值的大小(只是一个Simple模型,实际情况更复杂):

如果 X 的值小于 0.576 则交易将被收取费用。

你有没有发现,有一种情况是肯定要收费的,就是支付的金额很小,而且是由多个零钱组成的,而你拿到这些零钱的时间是仍然非常接近。那么这笔交易必然会被收取费用。

反之,如果交易的输入量大,时间长,就可以避免被扣费。

第四步:“称重”收费

事务表现为一串数字数据,内容越多的数据占用磁盘空间越多,传输需要的网络带宽也越大。因此,交易的输入越复杂,金额越大,需要支付的手续费也越多。

比如我想给别人发价值66元的比特币,用网上钱包发比特币,但是​​我发现每发一个66元的比特币会被扣除50元左右的手续费。后来在区块链浏览器中看到网上钱包使用零碎的零花钱,导致我的交易数据量增加。 ,交易费上涨了。当然,也有可能是钱包扩展了交易数据,让我的交易能尽快被矿工打包。因为矿工会选择那些交易费用高的交易进行打包。 ,而手续费的高低不取决于交易的金额,而取决于交易本身的数据量。

如果一笔交易没有拿到三点中提到的优先级,那么就必须收取交易费!具体的付款金额将根据您的交易规模“权衡”。

称重公式为:

尺寸=148*输入数量+34*输出数量+10

按千字节收费(小于1k按1k计算),按千字节收费0.0001BTC。

典型交易的输出数量是2:一个给收款人,一个给系统改变。

按以上公式称重,支付0.0001BTC,最大输入数量只能为6,如果输入数量为7,则交易费用翻倍至0.0002BTC!

这就解释了为什么钱包里有 3BTC,却不能支付给别人2.999BTC。假设你的钱包里只有 3BTC,而 3BTC 分别来自 1BTC 和 2BTC 两个输入。因为这次交易会产生0.001BTC的找零输出,这个输出低于0.01BTC,所以会收取0.0001BTC的手续费,但是你的找零没有找零钱包支付过多的手续费,会导致支付失败。

神奇的是,如果你付给商家3BTC(土豪,主动加价),就可以免去手续费! (假设事务有优先级)

那么我如何估算我的一笔交易的费用?

如前所述,一笔交易费用取决于交易所占用的数据量比特币2010年转账手续费,所以如果我们知道数据量,就可以知道交易费用!但遗憾的是,大多数钱包不会告诉你这些信息,你只能估计当前交易的平均数据大小。我们可以在网页链接中发现,当前交易的平均数据大小为 225 字节。该网站建议每字节收取 114 satoshis 的费用,因此每笔交易的估计交易费用 = 225*114=25650 satoshis。但是,网站给出的建议费用通常太高。如果想知道实际出价,可以在区块链浏览器中点击最新区块查看该区块的交易手续费出价,可以看到有人出价。这是 250 聪/字节,有人出价 248 聪/字节。根据别人的出价,我们可以设定一个合理的价格,这样交易就可以打包到下一个区块,不用等太久。