钥匙先亮出来就危险了吗?BIP-360 与暴露时间的攻防 图 1
钥匙先亮出来就危险了吗?BIP-360 与暴露时间的攻防 · 图 1

谈量子计算对比特币的威胁,绕不开一个变量:时间。椭圆曲线上的公钥一旦公开,理论上足够强大的量子计算机可以用 Shor 算法反推私钥;但这需要运行足够长的计算。于是所有防护思路都会落到同一个问题上——你的公钥要在众目睽睽下暴露多久?BIP-360 的 Pay-to-Merkle-Root(简称 P2MR)就是围绕这个问题设计的一个软分叉提案。

长暴露与短暴露

提案用两个术语切分了威胁面。所谓长暴露攻击,针对的是那些公钥长期停留在链上的情况:比如早期往裸露的旧式地址里存过币、或者使用了会先把公钥原样写在输出里的地址类型——公钥从收款那一刻起就一直躺在那儿,攻击者有以年计的时间从容运算。所谓短暴露攻击,针对的是花费瞬间:标准做法里公钥只出现在解锁脚本中,从交易进入内存池到被打包,窗口只有几分钟到几小时。P2MR 的目标被明确限定为前者:它防的是长暴露,不防短暴露。提案自己承认,想覆盖短暴露要另走后量子签名的路线,届时会提出独立方案。

钥匙先亮出来就危险了吗?BIP-360 与暴露时间的攻防 图 2
钥匙先亮出来就危险了吗?BIP-360 与暴露时间的攻防 · 图 2

从 Taproot 减去一条通道

P2MR 的输出在几乎所有方面与 Pay-to-Taproot 相同:仍然支持脚本树、支持 tapscript 的柔性支出策略、地址编码体系也相近。唯一删掉的是“密钥路径”——就是那把可以直接用单个 Schnorr 签名走快捷通道花钱的密钥。删掉它的效果是:创建输出时,链上只需要写一个承诺哈希(脚本树的默克尔根),完全不必写下任何公钥;公钥推迟到真正花钱的那笔交易里才出现。于是“地址可以随便贴、贴十年也不泄露公钥”成为可能,长期暴露在输出层面被掐断了。代价是每个支出必须走脚本路径,签名里附上被满足的那段脚本和它的路径证明,交易比密钥路径支出略大。

定位与状态

这是一份 Draft 状态的 Specification 类提案(编号于 2024 年 12 月分配),属于共识层软分叉设计:意味着它一旦被激活,旧节点也能安全地继续运作,但反对者显然也会围绕“是否值得动协议”争论多年。把它当作时间线来读时务必谨慎:草案存在不等于测试网存在,测试网存在不等于主网激活,读者核实现状请直接查阅 BIP 仓库与实现动态,本文的描述以提案文本本身为准,不构成任何部署预期。

一笔暴露时间的账

把两类威胁放到时间轴上更直观:走密钥路径的 Taproot 支出,公钥只在花费那几分钟到几小时里露面;而把币放在早期年代公开的旧式地址里,公钥从存入起就写死在链上,暴露长度以十年计。反推私钥这类算法最不缺的输入恰恰就是时间。所以防御顺位很清楚:先消灭十年尺度的暴露(迁币,或者像 P2MR 这样从源头不在输出里写公钥),再处理分钟尺度的暴露——后者需要抗量子签名并让整个生态同步换钥匙体系,工程量大出一个数量级。这个排序是提案文本自带的结论,不是推测。

快速问答

问:普通用户现在该做什么? 答:正常使用即可;若持有落在旧式裸露公钥地址里的远古币,公开讨论里的通行思路是尽快迁入现代地址类型,任何迁移操作先小额试跑并核验地址。

问:P2MR 地址看起来和 Taproot 一样吗? 答:输出结构与承诺方式相近,但少了密钥路径,钱包软件必须明确支持才能管理这类输出。

问:这是不是说明比特币快被量子攻破了? 答:不是。这是防御性预研,提案本身把问题按暴露时长分层,正说明社区在按威胁的轻重缓急排期。

风险提示:本文仅科普协议草案机制,不构成投资建议;涉及任何迁移或升级决策,请先在测试环境完整演练并核验收款方要求。