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,会看到前面标注了【未确认,可支配】。
选定这一条UTXO后,点击右下角的Send Selected按钮,进入交易创建页面:
设置好所有信息,一路点击蓝色按钮,直至广播上链即可:
为了方便理解,用方程式来表示,实际使用时直接计算即可。
有个已知常量:【子交易】属于(1个输入+1个输出的交易),其体积是111vB(所有1入1出的体积都是111vB)。
假设:X为加速后的GAS单价,单位是sat/vB;Y为【子交易】GAS总额,单位是sats;
*******************************************************
********************************************************
根据链上GAS水平,本案例中父交易需要加速至90sat/vB以上,才能保证快速出块。按照X=90sats/vB计算:
子交易GAS总额为:
子交易GAS单价为:
所以,【子交易】GAS单价设置183.96sat/vB即可把【未确认父交易】加速至90sat/vB。
当然,一般会多给一些,以确保万无一失,所以本例最总按照200sats/vB设置的GAS (截图是滑动条不好拖动,稍微偏了一些,设置成了201.02,不影响理解)
现在我们反算验证一下:
子交易GAS单价为:
我的推特: