什么是比特币改进提案 BIP 0069?
BIP(比特币改进提案)是一种用于优化比特币代码的建议。任何用户都可以提出此类提案,经社区讨论和批准后,有机会被采纳并实施。BIP 通常涉及重大更新(漏洞修复等小型更新不会提交至大规模讨论)。
本文将聚焦编号为 0069 的 BIP,并解析其重要性。该更新旨在提升比特币交易的安全性,使其更难被分析追踪。
哪些数据会被分析?
要理解 BIP 0069 的具体内容,首先需要了解比特币网络中资产是如何转移的。每笔交易都包含输入和输出,但实际上并没有资金在其中“流动”,它们只是记录比特币的流向。输入指向前一笔交易的输出,这些被称为未花费交易输出(UXTO)。如果觉得难以理解,可以看下面的例子。
我们可以把比特币的交易比作现金支付。例如,你想向朋友支付 15 BTC。此前你收到了两笔 10 BTC 的转账,相当于你手中有两张面值为“10”的“纸币”。每张纸币上都用铅笔标记了来源,这就是新交易的输入。因为有两张纸币,所以有两个输入。
你现在可以把这两张纸币交给朋友,并在上面写上“Charlie 转给 Peter”,这就是交易的第一个输出。朋友需要找零时,会从自己的钱包拿出 5 BTC,写上“Charlie 找零给 Peter”,这就生成了另一个输出,然后把找零交还给你。
这里我们大大简化了过程,只涉及三张“纸币”。实际上,你收到的 20 BTC 可能是“零钱”,这会产生更多的小额交易,也就是更多的输入和输出。
安全性问题
问题在于输入和输出的排序方式。目前并没有统一的标准,每个钱包都可以采用自己的排序方法。有些钱包会先列出支出输入,再列出找零输出,这样观察者就能推测出发送方和接收方钱包的资金情况。还有些钱包按添加时间排序,方式各异。这意味着通过数据分析可以识别某些钱包或服务的特定模式。
加密钱包开发还存在另一种潜在风险。BIP 0069 的作者 Kristov Atlas 提出过一种假设场景:攻击者(如开发者)如果能访问钱包代码,就可能把输入输出的排序方式改为根据私钥的某些位来排列。这样,攻击者只需追踪交易就能推算出私钥,这种“后门”极难被发现。
如何解决这个问题?
如果交易的输入和输出采用统一的排序方式,就能避免被分析出规律。BIP 0069 提出了非确定性排序方法,也就是说,无法从输入数据推断出排序规则。实际上,实现并不复杂,只需将数据按字典序(升序)排列即可。
Tangem Wallet 已经采用了这种方案,支持 iOS 和 Android 设备。