如果你曾为“到底该给比特币交易设置多少手续费”而挠头,你并不孤单。如何让交易既不被卡住、又不至于多掏钱,是几乎每位比特币用户绕不过的问题。本文将带你拆解 Bitcoin Core 的 手续费估算逻辑,了解其“迟钝”背后的科学,读完即可对“比特币手续费算法”、“mempool 策略”、“transaction fee 设置方法”有更落地的认知。
比特币为何需要手续费?
区块空间有限,供给 ≈ 每 10 分钟 2 MB(400 万 weight 单位)。如果完全免费,瞬间就被灌水:时间戳文件、白皮书全文、预言机数据……抛压远超容量。于是比特币引入市场化的手续费:
用户竞价 → 矿工择优打包 → mempool 充当去中心化 清算所。
一句话:手续费越高,插队成功率越大。
手续费估算为何如此困难?
| 变量 | 难点 |
|---|---|
| 供给 | 区块出现的间隔呈泊松分布,1 分钟之内或 45 分钟无块皆属常态,供给极不稳定。 |
| 需求 | 不仅工作日>周末,黑客攻击、交易所宕机等黑天鹅都会把 mempool 塞爆。需求曲线更难预测。 |
| 用户画像 | 有人急等转账,有人跑套利机器人,有人只图盖章。不同场景对确认时间的容忍度差异巨大。 |
于是:
- 设高了:白白浪费手续费。
- 设低了:交易卡到怀疑人生。
三种数据来源各有利弊
1. 瞬时 mempool 快照
- 原理:把自己交易费率设为“最低 2 MB 区块边界值”。
坑点
- 矿工可能正挖新区块,同步延迟让策略失效。
- 下一个块期望值仍为 10 分钟——即时不一致意味着你的对手是未来 10 分钟新交易,而非当前 mempool。
- 每个节点 mempool 不共享,可观测偏差极大。
2. 纯粹历史区块
- 玩法:一定时间窗口内区块的最低费率为基准。
- Bug:矿工自己发高费率交易塞满区块即可“造假”。估算器被牵着鼻子走,用户买单。
3. 综合 mempool+区块历史
- Bitcoin Core 采用版本:既看链上数据,又观察交易池,通过大样本减弱操控风险。
Bitcoin Core v0.14 的估算机制
下文仅聚焦 v0.14,新版本在 0.15 升级,后续再谈。
核心概念:Bucket 与 Target
- Bucket —— 指数级增长的费率区段(1–1.1、1.1–1.21…最高 9 400+ 聪/字节)。
- Target —— 你希望的确认区块数(范围 1–24)。
数据追踪
按 “bucket & target” 合体存储两列:
- 进入某 bucket 的交易总量 A。
- 在 target 区块内成功上链的交易数 B。
确认概率 = B/A。
加权历史:让旧数据逐渐“失声”
每出一个新区块,旧区块计数 × 0.998(346 块的半衰期)。
结果:越旧的数据权重越小,系统能灵敏响应最新市场变化,而不会因 1 个月前的超高峰费率误导决策。
API:estimateSmartFee()
开发者与钱包最常用的接口:
- 用户给出 target 区块数。
- 从最高 bucket 往下扫描,找满足 ≥95% 确认概率的 最低费率桶。
- 返回该桶内费率 中位数 作为建议值。
95% 而非 100%?出于抗操纵与不可预见因素双重保险。
接口同时为 sendtoaddress/sendmany/GUI 默认调用,几乎人人都在用。
FAQ:一次性解决高频疑问
Q1:比特币交易手续费为 0 会被打包吗?
A:理论上极少数矿工出于测试或仁慈会收,但全网高度竞争条件下,0 费率基本等于“永久待打包”。
Q2:mempool 瞬时拥堵时,我能不能暂时提高手续费?
A:使用 RBF(Replace-by-Fee) 即可在原交易上追加费用替换上链;发送时需提前勾选 RBF。
Q3:estimateSmartFee() 给出的值会被矿工操控吗?
A:样本量足够大;若矿工想系统性抬价,需要广播并真实支付大量高费交易,成本极高。
Q4:手续费单位到底用 sat/vB 还是 sat/WU?
A:隔离见证后统一用 sat/vByte(virtual byte)最为直观;钱包当前显示往往已替用户算好。
Q5:为什么有时系统建议 1 小时之内确认,结果 5 分钟就打一块?
A:泊松分布可能让你“踩坑”,等待时间服从指数分布;算法用 95% 可靠区间而非最坏上限。
Q6:闪电网络会不会让手续费估算彻底失业?
A:小额高频走向闪电,大额结算仍需主链。估算需求不会被消灭,只是量级与行为模式迁移。
总结:算法克制,方得长远
Bitcoin Core 的算法并不追求“预言术”,而是用统计学工具给用户最诚恳的 95% 把握范围:
- 只记录过去,不过度普尔。
- 用 decay weight 抵住操纵。
- 拒绝过度工程,保持可解释性与鲁棒性。
虽在快速波动的牛市中偶尔失灵,但相比“拍脑袋”更靠谱。v0.15 之后,工作窗口与衰减参数再优化,抗震能力大幅提升,后续篇章我们再细聊。