一把钥匙只能用一次:Stacks 用“一次性签名”转出了 sBTC,量子防护到底怎么做?

昨天说到,比特币有一大块币的公钥已经“露在外面”。今天看一种解法的真实演示。

Stacks Labs 11月11日在官方博客和官方X上称:他们在 Stacks 主网上完成了一笔 sBTC 转账,用的不是现在常见的椭圆曲线签名,而是 Lamport 一次性签名,并且没有升级协议。

先说为什么要换签名:
比特币和 Stacks 现在都用椭圆曲线签名。官方原话的意思是:足够强的量子计算机可以从公钥反推出私钥,然后伪造签名转走资金。基于哈希的签名被认为能抵抗已知的量子攻击。

拆开看这次具体怎么做的:
1. 不改链,只写合约:Stacks 的合约语言 Clarity 本来就有哈希函数,工程师写了一个“金库”合约,只有验证通过一个有效的 Lamport 签名才放款。哈希算法用的是 SHA-256。
2. 签名里锁死了什么:从哪个金库出、什么资产、多少数量、给谁、下一把钥匙是哪把,还绑定了链、合约和当前转账计数。改任何一项,授权直接失效。
3. 一把钥匙只签一次:同一把 Lamport 钥匙签两条不同的消息,就会暴露更多秘密值、变得不安全。所以转账成功后,合约在同一笔交易里把计数加一、装上下一把钥匙,旧授权不能重放。签名软件会先记下指令,重启后也拒绝用同一把钥匙签别的消息。
4. 谁付手续费:由另一个 Stacks 账户提交消息并用 STX 付费,金库自己验签后把 sBTC 放给消息里写死的收款人。
5. 代价:官方承认 Lamport 签名比椭圆曲线签名大得多,选它是因为结构简单、好审计;最终用哪种方案还在评估。

这件事没改变什么,要分清:
- 这是一个原型演示,不是比特币协议升级,比特币本身还没有抗量子。
- 本地测试确认:改收款人、改下一把钥匙、重放已完成的转账,都会被拒绝。合约、签名软件和测试证据已在 GitHub 公开。
- 下一步官方说先评估让 Stacks 网络本身抗量子的方案和迁移路径,再研究 sBTC 背后 BTC 的量子风险,后续文章“今年晚些时候”发。

能直接拿去用的:
1. 看到“抗量子”宣传,先问三句:是协议升级还是合约演示?在主网还是测试网?代码和测试证据公开了吗?这次的答案分别是:合约演示、主网、已公开。
2. 自己能做的最简单一步还是那条:不要反复用同一个比特币地址收款找零,用过的地址里的币,公钥已经上链。
3. 有人借“量子”喊你买币或换钱包,先找项目官方博客原文核对,别信截图。

关注我,每天拆一条能直接用的避坑方法,不喊单。