前几天在铸造$MMSS(黑猫NFT作者@shhan1211发行的brc20代币)的时候,踩到一个坑,仔细研究了一下原理,分享出来。
当时链上高优先级是110sat/vB左右,我为了尽快让交易在链上确认,所以加了10%左右的gas,给了120sat/vB。然而等待一段时间发现交易并没有被确认,于是仔细查看了mempool,发现了一个关键的参数,如下图所示,其中费率120sat/vB,是我设置的没有问题,但是下方有另外一个参数有效费率为112sat/vB,很显然我链上交易的优先级就是由该参数决定的,**那么什么是有效费率?为什么有效费率会低于我设置的费率?**这是我今天要重点介绍的问题。
在理解有效费率之前我们有必要先了解一下比特币的费率是什么?费率通常指的是用户为进行一笔比特币交易所支付的费用。这个费用是给予矿工的奖励,以便将用户的交易包含在区块链中。费率通常按照“每字节多少聪”来计算(聪是比特币的最小单位,隔离见证升级之前为此计算方式,隔离见证SegWit是将签名(见证数据)与交易数据分离,从而提高交易速度和区块容量,详细资料可以参考:
)。
但上图中显示费率的单位都是sat/vB,sat是聪很好理解,那么**vB(Virtual Byte,虚拟字节)又是什么?**在Segwit之前,一个区块的大小是由它包含的所有数据的总字节大小决定的,但是隔离见证升级之后,引入了“区块权重”的概念(单位:WU),用于计算区块的“虚拟字节”大小,其计算方法如下:
对于非SegWit交易,权重等于交易大小的四倍
对于SegWit交易,权重等于交易中非见证数据部分的四倍加上见证数据部分的一倍
假设签名数据(见证数据)+交易数据(非见证数据)= 2000字节,将这些数据以非SegWit和SegWit的方式分别进行发送,其虚拟字节大小计算过程如下图,由此可见,采用SegWit的方式可以使得交易在区块中占用的权重更少(减少375vB),这意味着在同样的区块权重限制下,可以包含更多的交易,并且可以降低每笔交易上链的费用。
在了解完费率的计算方式之后,我们来看一下为什么有效收费率会低于支付的费率?
还是回到下面这张图,可以看到有效收费率旁有一个按钮 CPFP,点击之后下方就是几笔交易的详情,问题就出在这个CPFP上。
CPFP(Child Pays for Parent,子支付父交易)是比特币中的一种机制,用于加速未确认的交易。它允许用户通过创建一个新的交易(子交易),并为这个交易支付较高的手续费,来加速一个或多个之前的未确认的交易(父交易),子交易的输入依赖于尚未确认的父交易的输出,矿工倾向于选择手续费更高的交易进行确认,因此通过CPFP,可以增加父交易被矿工优先处理的可能性。
所以如上图所示,这笔交易具有一共与三笔交易相关联,有两笔“后裔交易”,一笔“祖先交易”,祖先交易的费率仅为79.1sat/vB,所以当前这笔交易的费率被低费率的祖先交易拉低了。
以这笔交易为例,看一下有效费率112sat/VB是如何计算的?
如下表所示:
有效费率 = 总花费÷总虚拟大小 = 333152÷2976 = 112sat/vB
在花了这么大篇幅去讲解有效费率的原理之后,在GAS大战时,我们可以得出:
心法1:按照当前最高费率的110%-120%设置
心法2:不要使用包含未成交的低费率交易的钱包铸造新铭文
在此基础上再扩展一下其他的心法:
心法3:使用sparrow钱包通过CPFP或者RBF加速(视频教程:
)
心法4:使用铸造服务提供商的订单加速功能,如unisat,idclub等
心法5:使用一些矿池或者第三方服务商提供的加速服务,比如ViaBTC,BitAccelerate等。
以上内容主要是相对Bitcoin的费率和CPFP的原理做一个深入的介绍,同时也提供给大家一些加速交易的方法,不过实际情况,加速的费用可能会比你铸造的费用还贵,大家要量力而为。