使用Sparrow Wallet加速BTC交易(CPFP)
November 27th, 2023

理论

CPFP是Child Pays for Parent的缩写,是比特币交易加速的一种方法,它通过增加【子交易】交易的GAS费来加速相关联的【未确认父交易】。

CPFP之所以可以加速BTC交易,是因为BTC出块的激励机制,BTC矿工在打包交易时,会优先打包GAS费用高的交易。所以当一个【未确认父交易】由于GAS过低卡链时,可以提高【子交易】的GAS费用,从而让矿工有意愿优先打包【子交易】,同时由于交易的完整性,矿工打包【子交易】就必须同时打包【未确认父交易】,因此只要【子交易】的GAS费用给的足够高,使得父、子交易的GAS平均值比当前GAS水平高,就能激励矿工去打包这两个交易,从而达到加速【未确认父交易】的目的。

使用CPFP有个限制:必须拥有交易输出某条UTXO才可以。 换句话说,如果一个交易是你转给别人,同时输出中又没有任何UTXO属于你自己,那么你是没有办法通过CPFP的方式加速该笔交易的,只能由拥有输出UTXO的一方进行加速。

实操

【未确认父交易】

这个交易是朋友在ME市场购买铭文的交易,我们可以看到他设置的【未确认父交易】初始GAS费用是77.1sat/vB,而当时的链上GAS水平是90sat/vB,因此该交易被卡在链上。

首先从截图上可以获得几个关键信息:

1、【未确认父交易】的初始GAS是77.1sat/vB,体积是808.5vB;

2、输出中 0.07118233BTC 这条找零UTXO是属于发起地址拥有的,我们将要通过这个UTXO创建【子交易】,为什么不选其他的UTXO,是因为其他UTXO价值太小,不足以支付加速GAS;

打开Sparrow Wallet,在UTXOs管理面板,找到这条UTXO,会看到前面标注了【未确认,可支配】。

选定输出0.07118233BTC的UTXO来创建子交易
选定输出0.07118233BTC的UTXO来创建子交易

选定这一条UTXO后,点击右下角的Send Selected按钮,进入交易创建页面:

设置好所有信息,一路点击蓝色按钮,直至广播上链即可:

计算该给多少GAS:

为了方便理解,用方程式来表示,实际使用时直接计算即可。

有个已知常量:【子交易】属于(1个输入+1个输出的交易),其体积是111vB(所有1入1出的体积都是111vB)。

假设:X为加速后的GAS单价,单位是sat/vB;Y为【子交易】GAS总额,单位是sats;

*******************************************************

子交易体积X+父交易体积(X父交易初始GAS单价)=Y子交易体积 * X + 父交易体积 * (X - 父交易初始GAS单价) = Y

********************************************************

根据链上GAS水平,本案例中父交易需要加速至90sat/vB以上,才能保证快速出块。按照X=90sats/vB计算:

子交易GAS总额为:11190+808.5(9077.1)=20419.65sats111*90+808.5*(90-77.1)=20419.65sats

子交易GAS单价为:20419.65/111=183.96sat/vB20419.65/111=183.96sat/vB

所以,【子交易】GAS单价设置183.96sat/vB即可把【未确认父交易】加速至90sat/vB。

当然,一般会多给一些,以确保万无一失,所以本例最总按照200sats/vB设置的GAS (截图是滑动条不好拖动,稍微偏了一些,设置成了201.02,不影响理解)

现在我们反算验证一下:

子交易GAS单价为:111X+808.5(X77.1)=201.02111X=92.05992.1sat/vB111*X+808.5*(X-77.1)=201.02*111 ---→ X=92.059 ≈ 92.1 sat/vB

我的推特:

Subscribe to E
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from E

Skeleton

Skeleton

Skeleton