# 第 17 讲：比特币开发工具

![status](https://img.shields.io/badge/状态-已完成-success)
![author](https://img.shields.io/badge/作者-Beihaili-blue)
![date](https://img.shields.io/badge/日期-2024--07-orange)
![difficulty](https://img.shields.io/badge/难度-中级-yellow)

> 💡 比特币网络手续费时常波动，当费率处于低谷时，是整理钱包中「粉尘」 UTXO 、甚至发送一些「时间胶囊」交易的绝佳时机。本教程将带你构建一个可以通过自己全节点广播 ** 任意低费率 ** 交易的强大工具。

> 欢迎关注我的推特：[@bhbtc1337](https://twitter.com/bhbtc1337)
> 
> 进入微信交流群请填表：[表格链接](https://forms.gle/QMBwL6LwZyQew1tX8)
> 
> 文章开源在 GitHub：[Get-Started-with-Web3](https://github.com/beihaili/Get-Started-with-Web3)
> 
> 购买 BTC / ETH / USDT 等加密货币推荐 [币安](https://www.binance.com/zh-CN)[注册链接](https://www.bsmkweb.cc/register?ref=39797374)

## 目录

- [前言：为何要发送低费率交易？](# 前言为何要发送低费率交易)
- [准备工作](# 准备工作)
- [核心原理：通过配置本地节点实现](# 核心原理通过配置本地节点实现)
  - [步骤 1：修改 `bitcoin.conf`](# 步骤 1 修改 - bitcoinconf)
  - [步骤 2：编写 `low_fee_broadcaster.py` 脚本](# 步骤 2 编写 - low_fee_broadcasterpy - 脚本)
  - [步骤 3：运行脚本与成果展示](# 步骤 3 运行脚本与成果展示)
- [多节点广播与低费率交易实战经验](# 多节点广播与低费率交易实战经验)
- [安全注意事项](# 安全注意事项)
- [总结](# 总结)
- [2026 更新：Bitcoin Core 31.0 后的费率与 mempool](#2026-更新bitcoin-core-310-后的费率与-mempool)
- [常见问题](# 常见问题)

## 前言：为何要发送低费率交易？

你是否曾发现自己的比特币钱包里充满了大量零散的、价值极小的交易输出 (UTXO)？这些通常被称为「交易粉尘」。在网络费用低廉时，我们可以做一些很有意义的事情：
- ** 归集 UTXO**：未来当手续费上涨时，整合过的 UTXO 可以让你用更少的输入来构建交易，从而支付更低的总手续费。
- ** 提升钱包性能 **：管理大量 UTXO 会增加钱包软件的负担。
- ** 抓住低费时机 **：在 Gas 费用（交易费率）处于历史低位时进行归集，是成本效益最高的时机。
- ** 发送「时间胶囊」**：以极低的成本广播一笔交易，等待未来某个时刻被确认。

本教程将教你如何抓住这个时机，亲手打造一个实用的低费率交易工具。

## 准备工作

在开始之前，请确保你已准备好以下环境：
- **Bitcoin Core**：安装并完成同步的比特币全节点（** 钱包功能需要开启 **）。
- **Python 环境 **： `Python 3.8` 或更高版本。
- ** 依赖库 **：
  ```bash
  pip install python-bitcoinrpc
  ```

## 核心原理：通过配置本地节点实现

要广播一笔手续费极低（例如 `0.1 sat/vB`）的交易，最可靠、最符合比特币去中心化精神的方法是配置并使用你自己的全节点。

这种方法由 Peter Todd 等核心开发者推崇，它让你拥有完全的自主权，无需依赖任何可能不稳定或收取额外费用的第三方 API 服务。

我们将通过两个步骤实现这个目标：首先，调整节点的配置，使其愿意接纳并转发低费率交易；然后，编写一个简单的 Python 脚本来创建和广播这笔交易。

### 步骤 1：修改 `bitcoin.conf`

要让你的节点接受并转发低于常规费率的交易，你需要修改其配置文件 `bitcoin.conf` 。

1.  找到你的 `bitcoin.conf` 文件。
    -   **macOS**: `~/Library/Application Support/Bitcoin/`
    -   **Linux**: `~/.bitcoin/`
    -   **Windows**: `% APPDATA%\Bitcoin\`
2.  在文件中添加或修改以下行：
    ```ini
    # 设置节点愿意接受和转发的最低交易费率（单位：BTC/kB）
    # 0.000001 BTC/kB 等价于 0.1 sat/vByte
    minrelaytxfee=0.00000100

    # 确保钱包功能已开启
    disablewallet=0
    ```
3.  ** 重启 Bitcoin Core** 以使配置生效。

### 步骤 2：编写 `low_fee_broadcaster.py` 脚本

这个脚本的目标非常纯粹：** 用指定的极低费率，发送一笔简单的单输出交易 **。它利用了 Bitcoin Core 强大的 `fundrawtransaction` RPC ，让节点自动为我们选择 UTXO 并处理找零，极大地简化了代码。

`low_fee_broadcaster.py` 脚本的核心逻辑如下：
1.  ** 连接节点 **：通过 RPC 安全地连接到本地的 Bitcoin Core 。
2.  ** 创建空交易 **：创建一个只包含目标地址和金额的「空壳」交易。
3.  ** 自动资金匹配 **：调用 `fundrawtransaction` ，并传入我们期望的费率（如 `0.1 sat/vB` ）。 Bitcoin Core 会自动：
    -   从钱包里选择合适的 UTXO 作为输入。
    -   计算所需的确切手续费。
    -   如果需要，创建一个找零地址并计算找零金额。
4.  ** 签名交易 **：调用 `signrawtransactionwithwallet` 对节点构建好的交易进行签名。
5.  ** 本地广播 **：调用 `sendrawtransaction` 将签名后的交易广播到比特币网络。由于我们已经调低了 `minrelaytxfee` ，我们自己的节点会欣然接受这笔交易并将其转发出去。

### 步骤 3：运行脚本与成果展示

一切准备就绪后，运行脚本非常简单：

```bash
# 使用 0.1 sat/vB 的费率，向指定地址发送 0.00001 BTC
python3 02_GetStartedWithBitcoin/05_BitcoinUTXOConsolidator/low_fee_broadcaster.py \
--rpc-user your_rpc_user \
--rpc-password 'your_rpc_password' \
--recipient bc1... \
--amount 0.00001 \
--fee-rate 0.1
```

** 成果展示 **：我们使用此脚本成功广播了一笔 `0.1 sat/vB` 的交易！

- ** 交易 ID**: `4168dadc0759b4daa2134b6791a87370f112b937ee787ce31638f4b3bf04884a`
- ** 查看详情 **: [https://mempool.space/tx/4168dadc0759b4daa2134b6791a87370f112b937ee787ce31638f4b3bf04884a](https://mempool.space/tx/4168dadc0759b4daa2134b6791a87370f112b937ee787ce31638f4b3bf04884a)

这笔交易被我们的节点成功广播，并进入了全球比特币网络的内存池中，等待有缘的矿工将其打包。

## 多节点广播与低费率交易实战经验

在比特币网络中，低费率甚至零费率的交易能否被确认，取决于交易被多少节点接收和转发，以及最终被矿工打包的概率。以下是一些实用经验和技术要点：

- ** 多节点广播的优势 **：如果你拥有多台分布在不同地区的比特币全节点，并且这些节点与大量其他节点互联，可以显著提升低费率交易在全网的传播速度和覆盖范围。这样，低费率交易更容易被更多矿工看到，从而增加被打包进区块的机会。
- ** 低费率交易的加速与确认 **：即使是极低费率（如 0.1 sat/vB 甚至更低）的交易，在网络不拥堵或部分矿池愿意填充区块空间时，也有被确认的可能。低费率交易本质上类似「买彩票」，需要耐心等待合适的网络环境。
- **UTXO 不会永久锁定 **：低费率交易广播后，相关 UTXO 会被节点临时锁定。但只要你用正常费率重新花用这些 UTXO ，原来的低费率交易会被新交易直接替换，不会造成 UTXO 永久无法使用。
- ** 进阶建议 **：有条件的用户可以尝试搭建多节点环境，分布式广播低费率交易，进一步提升交易被全网接收和打包的概率。这也是比特币网络去中心化精神的极致实践。

## 安全注意事项

- ⚠️ ** 私钥安全 **：确保你的 `wallet.dat` 和 RPC 凭证安全，切勿将 RPC 端口暴露于公网。
- 🧪 ** 先行测试 **：强烈建议首先在 `Testnet` 或 `Regtest` 模式下测试脚本。
- ** 金额阈值 **：在进行大规模 UTXO 归集时，谨慎设置金额阈值，避免误操作。

## 总结

恭喜你！通过本教程，你已经掌握了如何通过配置自己的全节点，来获得广播任意低费率交易的自主权。这不仅仅是构建了一个工具，更是对比特币去中心化精神的一次深度实践。

现在，你拥有了在下一次网络手续费低谷时，以极低成本整理钱包、甚至发送「纪念品」交易的能力。

## 📖 费率估算策略详解

理解比特币交易费率是掌控交易成本的关键。费率的单位是 `sat/vB`（聪 / 虚拟字节），表示你愿意为每个虚拟字节的交易数据支付多少聪。

### 🔑 费率优先级与确认时间

| 优先级 | 费率范围（sat/vB） | 预期确认时间 | 适用场景 |
|--------|-------------------|-------------|----------|
| ** 极高优先 ** | 100+ | 下一个区块（~10 分钟） | 紧急转账、抢购 |
| ** 高优先 ** | 50-100 | 1-2 个区块（10-20 分钟） | 较紧急交易 |
| ** 中等优先 ** | 20-50 | 3-6 个区块（30-60 分钟） | 日常交易 |
| ** 低优先 ** | 10-20 | 6-24 个区块（1-4 小时） | 不急的转账 |
| ** 经济模式 ** | 5-10 | 1-3 天 | 非紧急、节省费用 |
| ** 超低费率 ** | 1-5 | 数天到数周 | UTXO 归集、时间胶囊 |
| ** 极限低费率 ** | 0.1-1 | 数周到数月（不保证） | 实验性、趣味性 |

### 🔑 费率估算方法

1. **mempool.space 实时查看 **：访问 [mempool.space](https://mempool.space/) 查看当前内存池的费率分布
2. **Bitcoin Core RPC 查询 **：
   ```bash
   # 查询 6 个区块内确认的推荐费率（单位：BTC/kB）
   bitcoin-cli estimatesmartfee 6

   # 查询 1 个区块内确认的推荐费率
   bitcoin-cli estimatesmartfee 1

   # 查询 144 个区块（约 1 天）内确认的推荐费率
   bitcoin-cli estimatesmartfee 144
   ```
3. ** 第三方 API**：
   ```bash
   # mempool.space API
   curl -s https://mempool.space/api/v1/fees/recommended
   # 返回格式：{"fastestFee":25,"halfHourFee":20,"hourFee":15,"economyFee":8,"minimumFee":5}
   ```

> 💡 ** 小贴士 **：比特币网络的费率在一天中会有明显波动。通常在 UTC 时间凌晨到清晨（对应亚洲白天、美洲夜间）费率较低，而 UTC 下午到晚间（美洲白天）费率较高。周末费率通常低于工作日。

### 🔑 影响交易费用的因素

交易的总费用 = 费率（sat/vB） x 交易大小（vB）。交易大小取决于：

| 因素 | 影响 | 说明 |
|------|------|------|
| ** 输入数量 ** | 每个输入增加约 57-148 vB | 输入越多，交易越大，费用越高 |
| ** 输出数量 ** | 每个输出增加约 31-43 vB | 输出越多，费用越高 |
| ** 地址类型 ** | 不同类型大小不同 | SegWit 地址比 Legacy 地址更省空间 |
| ** 脚本复杂度 ** | 多签等复杂脚本更大 | 2-of-3 多签交易比单签更贵 |

不同地址类型每个输入的典型大小对比：

| 地址类型 | 前缀 | 每个输入大小（约） | 节省比例 |
|----------|------|-------------------|----------|
| Legacy (P2PKH) | `1...` | 148 vB | 基准 |
| 兼容 SegWit (P2SH-P2WPKH) | `3...` | 91 vB | ~38% |
| 原生 SegWit (P2WPKH) | `bc1q...` | 68 vB | ~54% |
| Taproot (P2TR) | `bc1p...` | 57.5 vB | ~61% |

## 📖 mempool 分析实操

[mempool.space](https://mempool.space/) 是比特币网络最实用的可视化工具之一。学会阅读它的数据，可以让你做出更明智的费率决策。

### 🔑 mempool.space 仪表板解读

访问 mempool.space 首页，你会看到以下关键信息：

1. ** 推荐费率区块 **：顶部显示的三个色块分别表示：
   - ** 高优先 **（No Priority / Low / Medium / High）：不同确认速度对应的推荐费率
   - 颜色越深表示费率越高

2. ** 内存池大小 **：表示当前等待确认的交易总量
   - 单位通常是 vMB（虚拟兆字节）
   - 当内存池大小 < 1 个区块（~1 vMB）时，几乎所有交易都会在下一个区块被确认
   - 当内存池大小 > 20 vMB 时，低费率交易可能需要很长时间

3. ** 费率分布柱状图 **：展示内存池中不同费率区间的交易分布
   ```
   示例解读：
   ┌─────────────────────────────────┐
   │ 100+ sat/vB  ████              │ ← 少量紧急交易
   │ 50-100       ████████          │ ← 较多高优先交易
   │ 20-50        ████████████████  │ ← 大量中等优先交易
   │ 10-20        ██████████        │ ← 低优先交易
   │ 5-10         ████              │ ← 经济模式交易
   │ 1-5          ██                │ ← 极低费率交易
   └─────────────────────────────────┘
   ```

4. ** 最近区块信息 **：显示最近被挖出的区块的费率范围和交易数量

### 💡 利用 mempool 数据制定策略

```bash
# 通过 API 获取内存池统计信息
curl -s https://mempool.space/api/mempool | python3 -m json.tool

# 获取最近 10 个区块的费率信息
curl -s https://mempool.space/api/v1/blocks | python3 -m json.tool
```

** 实操判断流程 **：

1. 查看内存池大小：如果 < 5 vMB，说明网络较空闲，适合发送低费率交易
2. 查看推荐费率：如果「经济模式」< 5 sat/vB，是归集 UTXO 的好时机
3. 查看费率趋势：如果费率在持续下降，可以再等等；如果在上升趋势中，建议尽快发送

> 💡 ** 小贴士 **：在周末和节假日，比特币网络交易量通常较少，是发送低费率交易和归集 UTXO 的黄金时段。

## 2026 更新：Bitcoin Core 31.0 后的费率与 mempool

Bitcoin Core 31.0 对 mempool、交易替换、隐私广播和费率估算都做了重要调整。低费率广播工具不能只停留在“调低 `minrelaytxfee`”这一层，还要理解节点策略正在变得更精细。

### Cluster mempool：从祖先/后代限制到交易簇

过去 mempool 主要使用 ancestor/descendant 限制来控制未确认交易依赖关系。Bitcoin Core 31.0 引入 cluster mempool，把存在父子依赖关系的交易视为一个 connected component，也就是“交易簇”。

这会影响三件事：

1. ** 区块模板构建 **：矿工更容易根据一组相关交易的整体费率做选择。
2. **mempool 淘汰 **：节点在内存不足时，可以更合理地判断哪些交易组合应该被淘汰。
3. **RBF 判断 **：替换交易需要让替换后的 mempool 费率图更好，而不是只看单笔交易。

对普通用户来说，含义是：低费率父交易 + 高费率子交易这类组合会越来越依赖包和簇的整体经济性。

### Package relay：低费父交易可以被高费子交易带动

Package relay 允许节点按“交易包”理解父子交易。Bitcoin Core 31.0 扩展了一父一子 package relay：父交易费率即使低于 `minrelaytxfee`，也可能因为子交易支付足够高费用而被一起转发。

```text
父交易：低费率，单独看不容易传播
子交易：高费率，花费父交易输出
整体包：平均费率足够，节点愿意转发和矿工愿意打包
```

实际使用中，这比“孤零零广播一笔 0.1 sat/vB 交易然后祈祷”更可靠。你需要考虑的是包的整体费率，而不是单笔交易费率。

### `settxfee` 删除：按交易指定 fee_rate

Bitcoin Core 31.0 删除了此前已废弃的 `-paytxfee` 启动项和 `settxfee` RPC。原因很直接：全局静态费率容易导致过付或欠付。

新的习惯应该是：每次构造交易时明确传入 `fee_rate`。

```bash
bitcoin-cli -named fundrawtransaction \
  hexstring="$RAW_TX" \
  options='{"fee_rate": 1.0, "replaceable": true}'
```

或者在钱包 RPC 中使用支持 `fee_rate` 的方法，例如 `sendtoaddress`、`send`、`sendall`、`sendmany`。具体参数以当前 Bitcoin Core RPC 文档为准。

### 0.1 sat/vB 费率桶：费率估算更细

Bitcoin Core 31.0 把费率估算器的最低费率桶从 1 sat/vB 调整到 0.1 sat/vB，与默认 `minrelaytxfee` 对齐。这意味着在网络长期低费时，节点有机会学习并返回 sub-1 sat/vB 的估算。

注意两点：

- 节点升级后会重新学习费率估算数据，历史 `fee_estimates.dat` 不再直接沿用。
- 估算器能返回低费率，不代表所有矿池都会快速打包低费率交易。

### Private broadcast：广播隐私的新选项

Bitcoin Core 31.0 新增 `-privatebroadcast`，可让 `sendrawtransaction` 的本地交易只通过 Tor 或 I2P 路径广播。它的目标是降低交易来源 IP 被关联的风险。

适合场景：

- 你运行自己的节点并关心交易来源隐私。
- 你愿意接受更复杂的网络配置和潜在传播延迟。
- 你不希望多笔无关交易因为同一出口 IP 被轻易关联。

不适合场景：

- 你没有配置 Tor/I2P。
- 你需要极高可靠性和最快传播。
- 你不理解隐私广播可能带来的排障复杂度。

### 低费率广播的新实践建议

2026 年更推荐的实践是：

1. ** 优先使用 RBF **：发送时启用 replaceable，方便后续加费。
2. ** 理解 CPFP/package relay **：不要只看父交易，关注父子包整体费率。
3. ** 按交易指定 fee_rate **：不要依赖全局 `settxfee`。
4. ** 先在 regtest/testnet 测试 **：确认脚本不会误选 UTXO 或误设找零。
5. ** 小额试运行 **：主网先用极小金额验证流程。
6. ** 观察 mempool 状态 **：低费率交易适合网络空闲期，不适合拥堵期硬发。
7. ** 保护 RPC 和钱包 **：低费率实验不值得牺牲节点安全。

## 📖 RBF（Replace-By-Fee）详细示例

**RBF（手续费替换）** 允许你在交易未被确认前，用更高费率的新交易替换原交易。这是比特币协议内置的「加速」机制。

### 🔑 RBF 的前提条件

- 原交易必须在发送时设置了 **RBF 信号 **（nSequence < 0xfffffffe）
- 大多数现代钱包默认启用 RBF
- Bitcoin Core 默认启用 RBF（`-walletrbf=1`）

### 🔑 使用 Bitcoin Core CLI 进行 RBF 操作

** 步骤 1：发送初始低费率交易 **

```bash
# 创建一笔费率为 5 sat/vB 的交易
bitcoin-cli -named sendtoaddress \
  address="bc1qxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  amount=0.001 \
  fee_rate=5

# 返回交易 ID，记录下来
# 例如：a1b2c3d4e5f6...
```

** 步骤 2：查看交易状态 **

```bash
# 查看交易详情
bitcoin-cli gettransaction "a1b2c3d4e5f6..."

# 查看内存池中的交易信息
bitcoin-cli getmempoolentry "a1b2c3d4e5f6..."
```

** 步骤 3：使用 RBF 提高费率 **

```bash
# 方法一：使用 bumpfee 命令（最简单）
bitcoin-cli bumpfee "a1b2c3d4e5f6..."

# 方法二：指定新的费率
bitcoin-cli -named bumpfee \
  txid="a1b2c3d4e5f6..." \
  options='{"fee_rate": 25}'

# 方法三：指定目标确认区块数
bitcoin-cli -named bumpfee \
  txid="a1b2c3d4e5f6..." \
  options='{"conf_target": 3}'
```

** 步骤 4：验证替换交易 **

```bash
# 新的交易 ID 会在 bumpfee 的返回结果中
# 查看新交易状态
bitcoin-cli gettransaction "新交易 ID..."
```

> ⚠️ ** 重要提示 **：RBF 替换交易时，新交易的费用必须高于原交易的费用（不仅仅是费率更高，总费用也必须更高）。此外，每次替换都会产生一个新的交易 ID（TXID）。

### 🔑 RBF 的常见应用场景

1. ** 紧急加速 **：交易发出后发现急需确认，提高费率加速确认
2. ** 费率误判 **：初始设置的费率太低，需要提高
3. ** 多轮提升 **：可以多次使用 RBF，逐步提高费率，避免一次性支付过高费用

## 📖 CPFP（Child-Pays-For-Parent）详细示例

**CPFP（子交易替父交易支付）** 是另一种加速未确认交易的方法。原理是创建一笔新交易花费未确认交易的输出，矿工为了打包高费率的子交易，会连带打包低费率的父交易。

### 🔑 CPFP 与 RBF 的对比

| 对比项 | RBF | CPFP |
|--------|-----|------|
| ** 操作方 ** | 发送方 | 接收方或发送方（利用找零） |
| ** 前提条件 ** | 原交易必须启用 RBF 信号 | 无特殊前提 |
| ** 原理 ** | 替换原交易 | 创建子交易激励矿工打包父交易 |
| ** 费用效率 ** | 更高效（替换而非叠加） | 较低效（需要额外的交易费用） |
| ** 交易 ID** | 原交易 ID 会改变 | 原交易 ID 保持不变 |

### 🔑 CPFP 实操步骤

** 场景 **：Alice 给 Bob 发送了一笔 1 sat/vB 的交易，长时间未确认。Bob 想加速这笔交易。

** 步骤 1：Bob 找到未确认交易的输出 **

```bash
# Bob 查看自己钱包中的未确认交易
bitcoin-cli listunspent 0 0
# 参数：最小确认数 = 0，最大确认数 = 0（仅显示未确认）
```

** 步骤 2：计算所需费率 **

```
假设：
- 父交易大小：200 vB，费率 1 sat/vB，费用 200 sat
- 目标综合费率：20 sat/vB
- 子交易大小：150 vB

计算：
- 父子交易总大小：200 + 150 = 350 vB
- 目标总费用：350 × 20 = 7,000 sat
- 子交易需支付：7,000 - 200 = 6,800 sat
- 子交易有效费率：6,800 / 150 = 45.3 sat/vB
```

** 步骤 3：创建 CPFP 子交易 **

```bash
# 使用未确认的 UTXO 创建新交易，设置高费率
bitcoin-cli -named sendtoaddress \
  address="bc1q_bob_自己的另一个地址" \
  amount=0.00099 \
  fee_rate=46
```

> 💡 ** 小贴士 **：对于发送方，如果交易有找零输出，也可以用 CPFP 方法。花费找零输出并设置高费率即可。Sparrow Wallet 等钱包支持直接对未确认交易进行 CPFP 操作。

## 📖 UTXO 合并实战指南

UTXO 合并（Consolidation）是将多个小额 UTXO 合并为少数大额 UTXO 的操作，可以优化未来的交易费用。

### 🔑 什么时候需要合并 UTXO

| 情况 | 是否需要合并 | 说明 |
|------|-------------|------|
| 钱包中有 50+ 个小额 UTXO | ** 是 ** | 大量小 UTXO 在高费率时会导致巨额手续费 |
| 每个 UTXO < 10,000 sat | ** 强烈建议 ** | 这些「粉尘」UTXO 在高费率时可能花费成本超过其价值 |
| 网络费率处于历史低位 | ** 最佳时机 ** | 合并成本最低 |
| 你预计未来需要大额转账 | ** 是 ** | 提前合并可以在未来节省大量手续费 |
| 你只有少量大额 UTXO | ** 不需要 ** | UTXO 数量少且金额大，无需合并 |

### 🔑 合并成本分析

假设你有 100 个 UTXO 需要合并为 1 个，使用原生 SegWit 地址：

| 费率（sat/vB） | 交易大小（约 vB） | 总费用（sat） | 总费用（BTC） | 美元费用（BTC=$100k） |
|----------------|-------------------|-------------|-------------|---------------------|
| 1 | 6,881 | 6,881 | 0.00006881 | $6.88 |
| 5 | 6,881 | 34,405 | 0.00034405 | $34.41 |
| 10 | 6,881 | 68,810 | 0.00068810 | $68.81 |
| 25 | 6,881 | 172,025 | 0.00172025 | $172.03 |
| 50 | 6,881 | 344,050 | 0.00344050 | $344.05 |

> 交易大小计算：10.5（固定开销）+ 100 × 68（100 个 SegWit 输入）+ 31（1 个输出）= 6,841.5 vB（向上取整）

### 🔑 使用 Bitcoin Core 合并 UTXO

```bash
# 1. 查看当前 UTXO 列表
bitcoin-cli listunspent

# 2. 获取一个新的收款地址（合并到此地址）
bitcoin-cli getnewaddress """bech32"

# 3. 发送全部余额到新地址（自动选择所有 UTXO）
bitcoin-cli -named sendtoaddress \
  address="bc1q_你的新地址" \
  amount=0 \
  subtractfeefromamount=true \
  fee_rate=2

# 注意：amount=0 + subtractfeefromamount 会发送全部余额
```

### 💡 合并策略建议

1. ** 分批合并 **：如果 UTXO 数量极多（500+），建议分批合并，每批 100-200 个
2. ** 选择性合并 **：优先合并最小的 UTXO，保留大额 UTXO 不动
3. ** 隐私注意 **：合并会将所有 UTXO 关联到同一地址，降低隐私性。如果隐私重要，考虑分批合并到不同地址
4. ** 定期维护 **：养成在低费率期间定期合并的习惯，避免 UTXO 过度碎片化

> ⚠️ ** 重要提示 **：UTXO 合并操作会将多个地址的资金发送到一个地址，这在链上分析中会暴露这些地址属于同一所有者。如果隐私性对你很重要，请慎重考虑合并策略。

## 📖 交易加速服务对比

当你的交易已经广播但迟迟未被确认时，除了 RBF 和 CPFP，还可以考虑使用第三方交易加速服务。

### 🔑 主流加速服务

| 服务 | 提供方 | 费用 | 工作原理 | 特点 |
|------|--------|------|----------|------|
| **ViaBTC 交易加速器 ** | ViaBTC 矿池 | 免费 / 付费 | 矿池优先打包指定交易 | 免费版每小时限额，付费版即时处理 |
| **BTC.com 加速器 ** | BTC.com | 付费 | 矿池优先打包 | 支持比特币和 BCH |
| **MARA Slipstream** | Marathon Digital | 免费提交 | 接受非标准交易 | 适合低费率或特殊交易 |
| **mempool.space 加速 ** | mempool.space | 付费 | 通过合作矿池加速 | 界面直观 |

### 🔑 使用 ViaBTC 交易加速器

1. 访问 [ViaBTC Transaction Accelerator](https://www.viabtc.com/tools/txaccelerator)
2. 输入你的交易 ID（TXID）
3. 选择免费加速或付费加速：
   - ** 免费加速 **：每小时限 100 笔，先到先得
   - ** 付费加速 **：支付加速费用后优先处理
4. 提交后等待 ViaBTC 矿池在下一个出块时打包你的交易

### 💡 加速服务使用建议

- ** 优先使用 RBF**：如果你是发送方且交易启用了 RBF，这是最高效的加速方式
- ** 其次使用 CPFP**：无需第三方参与，完全自主
- ** 最后考虑加速服务 **：当 RBF 和 CPFP 都不可用时的备选方案
- ** 注意隐私 **：使用第三方加速服务需要提交交易 ID，会暴露你的交易信息

> 💡 ** 小贴士 **：最好的策略是在发送交易时就做好规划 —— 总是启用 RBF，根据紧急程度选择合适的费率，留好找零输出以备 CPFP 使用。防患于未然好过事后补救。

## 常见问题

#### ❓ 这个工具安全吗？
只要你的 RPC 接口没有暴露在公网上，并且你的私钥是安全的，这个脚本就是安全的。它通过标准 RPC 与你自己的节点交互来创建和签名交易，私钥永远不会离开你的节点。广播也是通过你自己的节点完成的，完全不依赖第三方。

#### ❓ 为什么需要修改 `minrelaytxfee`？
比特币网络中的每个节点都有一个「中继费率」门槛。如果一笔交易的费率低于这个门槛，节点就不会接受它，更不会将它转发给其他节点。默认的费率门槛通常是 `1 sat/vB` ( `0.00001 BTC/kB` )。通过手动将其调低到 `0.1 sat/vB` ( `0.000001 BTC/kB` )，我们等于是在告诉自己的节点：「嘿，这种超低费率的交易是可接受的，请帮我广播出去。」 这样，交易才能进入网络，被其他矿工看到。

#### ❓ `0.1 sat/vB` 的交易真的能被确认吗？
** 能，但需要耐心。** 它已经被我们的节点广播出去了。现在它正漂浮在巨大的交易海洋（内存池）中。绝大多数矿工会优先打包高费率的交易。但是，当网络不拥堵时，或者当某些矿池（如 MARA Pool 、或未来其他矿池）为了填满区块空间而打包低费率交易时，我们的这笔交易就会被确认。这可能需要几天，几周，甚至更长时间，这正是「时间胶囊」的魅力所在。

#### ❓ 低费率交易会导致 UTXO 永久锁定吗？
不会。低费率交易广播后，相关 UTXO 会被节点临时锁定，但只要你用正常费率重新花用这些 UTXO ，原来的低费率交易会被新交易直接替换（即 RBF 机制），不会造成 UTXO 永久无法使用。你可以放心尝试低费率归集或「时间胶囊」玩法，不用担心影响后续正常使用。

---

<div align="center">
<a href="https://github.com/beihaili/Get-Started-with-Web3">🏠 返回主页 </a> | 
<a href="https://twitter.com/bhbtc1337">🐦 关注作者 </a> | 
<a href="https://forms.gle/QMBwL6LwZyQew1tX8">🗣️ 加入交流群 </a>
</div>
