私有广播与降级陷阱:v31 匿名广播路径和 31.1 公告的教训 图 1
私有广播与降级陷阱:v31 匿名广播路径和 31.1 公告的教训 · 图 1

广播不只有”全网洪泛”一个按钮

你点下发送后,钱包做的事叫广播:把签好名的交易交给节点,节点再转告所有做交易中继的对等端,像墨水滴进水里。这个模型默认”所有人都该同时看到这笔交易”,但有些场景恰恰相反——你希望交易晚一点被不相干的人看见。最直接的动机是反狙击:谜题社区两起”解出即被抢”事件说明,交易一进公共内存池就等于进了猎场,能从中读出公钥的人可能在确认前替换抢跑。另一个日常动机是来源隐私:广播方 IP 本身就泄露地域与身份线索,两笔看似无关的交易还可能因为同一出口 IP 被关联。比特币核心 v31 把”先不给谁看”做成了官方选项。

私有广播与降级陷阱:v31 匿名广播路径和 31.1 公告的教训 图 2
私有广播与降级陷阱:v31 匿名广播路径和 31.1 公告的教训 · 图 2

v31 的私有广播做了什么

v31 发布说明的原文逻辑很清晰:常规情况下本地交易广播给所有做中继的连接;新增布尔选项 -privatebroadcast 后,sendrawtransaction 这条路径改为只经 Tor 或 I2P 网络完成广播。官方列出的隐私收益有两条:接收方永远不会知道广播者的 IP(也就推不出地理位置);广播者先后发送的两笔本无关联的交易不会因此被关联——因为每笔交易广播都使用独立连接。配套还给了两个运维 RPC:getprivatebroadcastinfo 查看当前正在私有广播队列里的交易,abortprivatebroadcast 把匹配的交易从队列移除。注意适用面:发布说明把行为明确挂在 sendrawtransaction RPC 上,钱包内部自动发送是否同样受控,启用前应以官方文档核对自己客户端的实际路径。

一个被官方公告点名的回退陷阱

v31.1 的安全公告披露了一个值得所有运营者细读的隐私回退案例:私有广播选择宣称支持 BIP324 v2 加密传输的 IPv4 或 IPv6 对端时,初始连接按预期经 Tor 代理路由;可一旦 v2 握手失败,核心会回退用 v1 重试这条连接——恶意对端可以故意掐断 v2 握手诱导这次回退,自己的真实 IP 就暴露给了目标,击穿 31.0 发布说明里”位置信息绝不会被接收方知晓”的承诺。官方给出的临时规避是二选一:-privatebroadcast=0 关掉该行为,或 -v2transport=0 关闭 v2 传输;修复随 31.1 版本发出。这个案例的教学价值极高:隐私保证必须覆盖降级路径,“默认加密”挡不住蓄意降级。

怎么用才算稳健

第一,前提是可达的暗网通路:Tor 或 I2P 的代理配置真实可用,否则私有广播没有落地通道。第二,版本纪律:涉及已知回退问题的版本组合,先升到修复版再启用,而不是靠关功能续命。第三,把回退参数显式写死:v2 开还是关要在配置里言明,别让软件在”兼容优先”的默认里替你选路。第四,别把队列当保险箱:abortprivatebroadcast 能撤回的是”还没广播出去”的排队状态,交易一旦上链就万事皆休,任何”可反悔广播”的想象都不该写进业务流程。

与现有隐私工具的对照表

把私有放进隐私工具箱里看更清楚:CoinJoin 处理的是交易结构的关联性,静默支付处理的是收款地址的复用,Tor 或 I2P 处理的是网络层的来源隐藏,私有广播只处理时间轴上的第一眼。它们正交互补,也各自失效:私有广播不改变链上图结构,CoinJoin 不阻止确认后的费率分析,暗网服务解决不了你直连明文对端的握手泄露。一个务实的组合是:网络层用暗网入口、结构层按需混币、收款层用一次性地址、敏感支出加私有提交——四层各自挡住一类观察者,任何单层的失守不至于满盘皆输。

风险提示:隐私功能的效果高度依赖版本与配置,部署前请核对官方公告与发布说明;本文只提供防御性建议,不构成任何规避监管的方案或投资建议。