# 使用Sparrow Wallet加速BTC交易(CPFP)

By [E](https://paragraph.com/@cyberscavenger) · 2023-11-27

---

理论
--

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

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

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

实操
--

【未确认父交易】

[https://mempool.space/tx/b31accb049d5d5e36d83d263aaed02ad4d9669cfddcffc64e3b7fcbc524607e6](https://mempool.space/tx/b31accb049d5d5e36d83d263aaed02ad4d9669cfddcffc64e3b7fcbc524607e6)

![](https://storage.googleapis.com/papyrus_images/635e1d268a93f4132e26c3dd12470782aeae8814c779e89d377cdb9157d3d65e.png)

这个交易是朋友在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来创建子交易](https://storage.googleapis.com/papyrus_images/3935eca8b69c845dbc0cdedd7f2b4b884563e65253f1f06707b8eaa20c5bd985.png)

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

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

![](https://storage.googleapis.com/papyrus_images/28b0c2dba75bdbbaad1baa71de6b5da3da880c0322e5660ec32055d77b5654bf.png)

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

![](https://storage.googleapis.com/papyrus_images/684605dcfe1101bce3b116790d4b041ffd4f8436b21ab39a65be9b3e4bb38aca.png)

### 计算该给多少GAS：

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

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

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

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

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

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

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

子交易GAS总额为：$$111_90+808.5_(90-77.1)=20419.65sats$$

子交易GAS单价为：$$20419.65/111=183.96sat/vB$$

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

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

现在我们反算验证一下：

子交易GAS单价为：$$111_X+808.5_(X-77.1)=201.02\*111 ---→ X=92.059 ≈ 92.1 sat/vB$$

![](https://storage.googleapis.com/papyrus_images/30412887bab6fb8bb9c560ec7d741f90793ef3eec2645625a63682e1d7591b95.png)

![](https://storage.googleapis.com/papyrus_images/f8072fe70faff2cf1caee974ef42fa95178f4b9b6592927c36d7e19a25231619.png)

我的推特：

![](https://storage.googleapis.com/papyrus_images/d86d3a95880ace827b7fc76b5d7a8ede4b08efd2a92921e02451fa6f52e1749f.png)

---

*Originally published on [E](https://paragraph.com/@cyberscavenger/sparrow-wallet-btc-cpfp)*
