一文厘清 Merkle Tree,看中心化交易所如何“自证清白”
撰文:Babywhale,Foresight News
图片来源:由 无界版图AI 工具生成
2019 年 2 月,比特币和区块链基础设施公司 Blockstream 发表了名为 《标准化比特币储备证明》 的博客文章,阐述了如何自证交易所等机构的比特币储备以及对这些储备资金的控制权。Blockstream 最初研究该方案是旨在向审计员证明比特币侧链 Liquid Network 上的比特币储备,后发展为比特币储备证明的一种规范。
在 Blockstream 之前,验证的方案的多样性使得用户难以了解每个交易所的储备情况。此外,由于需要验证私钥的所有权,所以在签名交易转移资产的过程中可能有资金被盗的风险。
该方案通过比特币特殊的 UTXO(未花费交易输出)交易格式实现,交易所通过构建一个包含交易所所有比特币储备的交易输出,但同时构建一个无效的输入。该交易会在广播时被网络拒绝从而无法产生实际的交易,但该交易仍可以作为交易所控制的比特币数量的证明。
事实上,早在 2014 年,Crypto 社区就对交易所如何向审计机构证明其储备展开了讨论。在 Blockstream 提出了比特币的储备证明方案并加入 BIP 之后,市场开始研究更加细化的方案,而基于 Merkle Tree 的证明模式就是当下市场普遍认可的一种方案。
总部位于美国的加密货币交易所 Kraken 对其储备证明的方案进行了较为详细的 解释 。Kraken 表示,所谓 PoR(Proof of Reserves,储备证明)是由第三方进行的独立审计,审计员将对所有的账户余额进行匿名快照,并将其聚合至 Merkle Tree 中,并获得 Merkle Root:一种在创建快照时产生的唯一的标识这些余额的数据组合。
然后,审计员收集由 Kraken 生成的数字签名,这些签名通过可公开验证的余额来证明对链上地址的所有权。最后,审计师比较并验证这些余额是否超过或匹配 Merkle Tree 中显示的客户账户余额,来确定交易所是否持有足额的准备金。
简单解释一下,Merkle Tree 的底层数据为每个账户持有的资产数据生成的 Hash,之后 Merkle Tree 再通过两个 Hash 生成一个新的 Hash,以此类推,最终的 Hash 代表着交易所所拥有的资产总额,该数字应该大于或至少等于所有用户持有的资产。该方案能够被接受的最大原因在于每个用户的资产数据都被包含其中,如果交易所想要篡改该过程中任何一个数据,都会对最终数据产生极大的影响(产生影响的原因来自于生成 Hash 的算法特性,在此不做赘述)。
虽然该方案在证明审计时交易所拥有足以兑付所有用户资产的能力,但也存在一定的缺陷。例如无法证明私钥是独家拥有的、审计时的资产是否为临时借入、如何证明以将交易所资金(相当于所有者权益)与用户资产(相当于交易所负债)进行了隔离以及审计本身的审慎性等。
除了 Kraken 之外,加密货币交易所 BitMEX 在 2021 年公开了其 验证交易所持有的比特币储备的方案 ,该方案同样采用了基于 Merkle Tree 的证明模式,为每个用户的账户生成 ID,使得用户可以自己运行一个比特币节点,再通过运行这一套程序来验证每个比特币区块高度中账户资产与交易所的总资产。
此外,BitMEX 还在方案发布时描述了其在用户隐私层面所做的考虑。若将数据公开,则所有用户的资产情况也将随之公开,BitMEX 计划将用户的资产进行一定程度上的分割,并将不同用户的部分资产数据组合形成 Merkle Tree,使得即时在首次公开时暴露了部分持仓,也难以在后续观察到该用户的资产分布以及对其操作进行跟踪。
写在最后
虽然 FTX 事件为我们敲响了警钟,也推动了交易所透明度的进一步发展,但事实上当前的资产验证方案仍存在包括上述缺点在内的不少漏洞。在很多细节方面,交易所仍然难以「自证清白」。中心化机构的透明度一直以来都是一个被广泛关注和讨论的问题,不够透明会引发投资者的担忧,但过于透明可能会一定程度上暴露商业机密,而这些矛盾不仅仅发生在 Web3 领域。
举个简单的例子,当前中心化交易所很多都推出了加密货币理财产品。在交易所没有滥用这些资产的前提下,可能部分用于量化交易,部分用于对冲风险,部分用在 DeFi 中,部分用于抵押借贷,交易所本身很难将全部的用途公之于众。
当下,证明交易所兑付能力的储备证明仅仅是一个开始,如何证明用户资金没有与自有资金混淆、如何证明理财产品并非旁氏骗局、如何证明做市商的承兑能力等等,都是交易所后续需要去思考和解决的问题。