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