比特币的UTXO记账体系是怎么算的的?(图)

资讯 6个月前 manoon
0

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

然而,情况可能并非如此!如今,一笔交易费用往往在几十元人民币。如果交易费用少,可能几个小时都没有支付。

那么比特币的交易手续费是如何计算的呢?如何避免支付较少的手续费?

比特币的 UTXO 记账系统

要弄清比特币交易手续费的秘密,首先要了解比特币的记账系统,即UTXO,即Unspent Transaction Output,中文翻译为【Unspent Transaction Output】。.

现在的银行、支付宝、证券交易都是【基于账户的】记账系统比特币交易手续费多少,而不是比特币采用的UTXO系统。

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

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

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

向B的账户充值100元

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

让我们一起假设一个场景。张三是一名矿工。他通过挖矿找到了12.5BTC。几天后,他给了李斯2BTC。几天后,他和李斯凑钱还给了王舞,张三给了3个BTC,李斯给了2个BTC。

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

比特币的UTXO记账体系是怎么算的的?(图)

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

比特币的UTXO记账体系是怎么算的的?(图)

你看得到差别吗?

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

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

在交易01中,输入12.5BTC挖矿获得,输出到张三的地址。由于这个输出不是cost,所以张三的地址有12.5BTC。.

理解这个概念的最好方法是查看区块链浏览器。在区块链浏览器中,我们可以查看某笔交易的所有交易输入和交易输出。btc.com 是一款不错的区块链浏览器,这里推荐一下。

比特币的UTXO记账体系是怎么算的的?(图)

左边是交易的来源,右边是交易的目的地。一笔交易的输出将成为下一笔交易的输入。

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

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

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

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

当你想用比特币支付给其他人时,比特币客户端会选择合适的未花费输出并将其作为下一笔交易的输入发送出去。下面这张图可以说是形象的展示了这个过程,建议打开大图研究学习。

比特币的UTXO记账体系是怎么算的的?(图)

第 2 步:阻止零碎支付的比特币系统

比特币目前的算法不鼓励碎片化支付,因为大量碎片化支付会增加交易数据,导致整个系统的交易缓慢。Satoshi Nakamoto 将区块改为 1M,因为当时有人恶意发送了大量碎片化支付,这使得它变得更大。保存所有用户的客户端数据。如果交易的“产出”低于0.01BTC,则收取0.0001BTC的手续费。钱包在准备你的支付金额时有一个既定的规则比特币交易手续费多少,就是避免小于0.01BTC的金额发生变化(比如你要支付5.005BTC,钱包应该选择3+< @2.005 或 1+1+3.005 而不是 5+0.005) 尽可能。

第三步:金额越高,币龄越高,优先级越高

每笔交易都有一个优先级。一笔交易是否需要支付佣金取决于以下优先级值的大小(只是一个简单的模型,实际情况比较复杂):

比特币的UTXO记账体系是怎么算的的?(图)

如果 X 的值小于 0.576,交易将被收费。

你有没有发现有一种情况是肯定要收费的,就是支付的钱本来就很少,而且是由多个零散钱组成的,而且你拿到零散钱的时间很近,那么这个交易不会逃脱被收费。

相反,如果交易的输入金额大,时间长,则可以避免被收费。

第 4 步:“称重”费用

交易显示为一串数字数据。具有更多内容的数据将占用更多的磁盘空间并需要更多的网络带宽来传输。因此,交易的输入项目越复杂,数据量越大,需要支付的手续费也就越多。

比如我想给某人发送价值66元的BTC,使用网络钱包发送比特币,但我发现每次发送价值66元的比特币,我都会被扣除大约50元作为手续费,然后我去区。再看区块链浏览器,网上钱包使用了零散钱的碎片,导致我的交易数据增加,交易手续费增加。当然,也有可能钱包是为了让我的交易尽快被矿工打包,这样交易数据才会被放大。因为矿工在很多交易中选择那些手续费高的交易打包,手续费的高低不取决于交易所的数量,而是交易本身的数据量。

比特币的UTXO记账体系是怎么算的的?(图)

如果交易没有获得第三点提到的优先级,则必须收取交易费用!您必须“权衡”您的交易规模。

称重公式为:

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

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

典型交易的输出数量有两种:一种是针对收款人,一种是针对系统变更。

根据上述称重公式,支付0.0001BTC,最大输入数量只能为6笔交易。如果输入数量为7笔交易,交易费用将翻倍至0.0002BTC!

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

神奇的是,如果给商家3BTC(土豪,主动加价),那么就可以免手续费!(假设本次交易有优先权)

那么我如何估算其中一笔交易的手续费呢?

如前所述,交易费用取决于交易所占用的数据量,所以如果我们知道数据量,我们将无法知道交易费用!不幸的是,大多数钱包不会告诉你这些信息。您只能根据当前事务的平均数据大小来估计它。在 bitcoinfees.21.co/ 中我们可以发现当前平均交易数据大小为 226 字节。网站推荐的每字节交易费为270 Satoshi,所以每笔交易的预估交易费=226*270=61010 Satoshi。但是网站给出的推荐费用一般都比较高。如果想知道实际出价,可以在区块链浏览器中点击最新区块,查看该区块的交易手续费出价,可以看到有人在出价。是 400 Satoshi/字节,有人出价 1 Satoshi/byte。根据其他人的出价,我们可以设定一个合理的价格,这样交易就可以打包到下一个区块中,而无需等待太久。

比特币的UTXO记账体系是怎么算的的?(图)

参考:

“其实没有比特币,只有UTXO”

“比特币费用解释”

“了解比特币交易免费”

“比特币如何释放工作以及为什么它们如此之高”

版权声明:manoon 发表于 2021-11-18 16:57:42。
转载请注明:比特币的UTXO记账体系是怎么算的的?(图) | 198区块链导航

暂无评论

暂无评论...