比特币低费率广播工具
💡 比特币网络手续费时常波动,当费率处于低谷时,是整理钱包中"粉尘"UTXO、甚至发送一些"时间胶囊"交易的绝佳时机。本教程将带你构建一个可以通过自己全节点广播任意低费率交易的强大工具。
欢迎关注我的推特:@bhbtc1337
进入微信交流群请填表:表格链接
文章开源在 GitHub:Get-Started-with-Web3
目录
前言:为何要发送低费率交易?
你是否曾发现自己的比特币钱包里充满了大量零散的、价值极小的交易输出(UTXO)?这些通常被称为"交易粉尘"。在网络费用低廉时,我们可以做一些很有意义的事情:
- 归集UTXO: 未来当手续费上涨时,整合过的UTXO可以让你用更少的输入来构建交易,从而支付更低的总手续费。
- 提升钱包性能:管理大量UTXO会增加钱包软件的负担。
- 抓住低费时机:在Gas费用(交易费率)处于历史低位时进行归集,是成本效益最高的时机。
- 发送"时间胶囊":以极低的成本广播一笔交易,等待未来某个时刻被确认。
本教程将教你如何抓住这个时机,亲手打造一个实用的低费率交易工具。
准备工作
在开始之前,请确保你已准备好以下环境:
- Bitcoin Core: 安装并完成同步的比特币全节点(钱包功能需要开启)。
- Python环境:
Python 3.8
或更高版本。 - 依赖库:
pip install python-bitcoinrpc
核心原理:通过配置本地节点实现
要广播一笔手续费极低(例如 0.1 sat/vB
)的交易,最可靠、最符合比特币去中心化精神的方法是配置并使用你自己的全节点。
这种方法由 Peter Todd 等核心开发者推崇,它让你拥有完全的自主权,无需依赖任何可能不稳定或收取额外费用的第三方API服务。
我们将通过两个步骤实现这个目标:首先,调整节点的配置,使其愿意接纳并转发低费率交易;然后,编写一个简单的Python脚本来创建和广播这笔交易。
步骤1:修改 bitcoin.conf
要让你的节点接受并转发低于常规费率的交易,你需要修改其配置文件 bitcoin.conf
。
- 找到你的
bitcoin.conf
文件。- macOS:
~/Library/Application Support/Bitcoin/
- Linux:
~/.bitcoin/
- Windows:
%APPDATA%\Bitcoin\
- macOS:
在文件中添加或修改以下行:
# 设置节点愿意接受和转发的最低交易费率(单位:BTC/kB) # 0.000001 BTC/kB 等价于 0.1 sat/vByte minrelaytxfee=0.00000100 # 确保钱包功能已开启 disablewallet=0
- 重启 Bitcoin Core 以使配置生效。
步骤2:编写 low_fee_broadcaster.py
脚本
这个脚本的目标非常纯粹:用指定的极低费率,发送一笔简单的单输出交易。它利用了 Bitcoin Core 强大的 fundrawtransaction
RPC,让节点自动为我们选择UTXO并处理找零,极大地简化了代码。
low_fee_broadcaster.py
脚本的核心逻辑如下:
- 连接节点:通过RPC安全地连接到本地的 Bitcoin Core。
- 创建空交易:创建一个只包含目标地址和金额的"空壳"交易。
- 自动资金匹配:调用
fundrawtransaction
,并传入我们期望的费率(如0.1 sat/vB
)。Bitcoin Core会自动:- 从钱包里选择合适的UTXO作为输入。
- 计算所需的确切手续费。
- 如果需要,创建一个找零地址并计算找零金额。
- 签名交易:调用
signrawtransactionwithwallet
对节点构建好的交易进行签名。 - 本地广播:调用
sendrawtransaction
将签名后的交易广播到比特币网络。由于我们已经调低了minrelaytxfee
,我们自己的节点会欣然接受这笔交易并将其转发出去。
步骤3:运行脚本与成果展示
一切准备就绪后,运行脚本非常简单:
# 使用 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
这笔交易被我们的节点成功广播,并进入了全球比特币网络的内存池中,等待有缘的矿工将其打包。
多节点广播与低费率交易实战经验
在比特币网络中,低费率甚至零费率的交易能否被确认,取决于交易被多少节点接收和转发,以及最终被矿工打包的概率。以下是一些实用经验和技术要点:
- 多节点广播的优势:如果你拥有多台分布在不同地区的比特币全节点,并且这些节点与大量其他节点互联,可以显著提升低费率交易在全网的传播速度和覆盖范围。这样,低费率交易更容易被更多矿工看到,从而增加被打包进区块的机会。
- 低费率交易的加速与确认:即使是极低费率(如0.1 sat/vB甚至更低)的交易,在网络不拥堵或部分矿池愿意填充区块空间时,也有被确认的可能。低费率交易本质上类似"买彩票",需要耐心等待合适的网络环境。
- UTXO不会永久锁定:低费率交易广播后,相关UTXO会被节点临时锁定。但只要你用正常费率重新花用这些UTXO,原来的低费率交易会被新交易直接替换,不会造成UTXO永久无法使用。
- 进阶建议:有条件的用户可以尝试搭建多节点环境,分布式广播低费率交易,进一步提升交易被全网接收和打包的概率。这也是比特币网络去中心化精神的极致实践。
安全注意事项
- ⚠️ 私钥安全: 确保你的
wallet.dat
和RPC凭证安全,切勿将RPC端口暴露于公网。 - 🧪 先行测试: 强烈建议首先在
Testnet
或Regtest
模式下测试脚本。 - 金额阈值: 在进行大规模UTXO归集时,谨慎设置金额阈值,避免误操作。
总结
恭喜你!通过本教程,你已经掌握了如何通过配置自己的全节点,来获得广播任意低费率交易的自主权。这不仅仅是构建了一个工具,更是对比特币去中心化精神的一次深度实践。
现在,你拥有了在下一次网络手续费低谷时,以极低成本整理钱包、甚至发送"纪念品"交易的能力。
常见问题
❓ 这个工具安全吗?
只要你的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永久无法使用。你可以放心尝试低费率归集或"时间胶囊"玩法,不用担心影响后续正常使用。