原文编辑:吴说区块链
前言:FTX 暴雷,使得所有交易所开始共同推进默克尔树储备证明方案,未来这将成为类似 DeFi 项目的安全审计一样、几乎所有交易所的必备选项。目前国外与国内实践时间较长的是 Kraken 与 Gate。究竟什么是 Merkle Tree 储备证明,它有什么意义,又有什么不足?这篇文章汇总了一些内容,以供读者了解。
内容一:
国内最早长期使用的 Gate 的说明
默克尔树(Merkle tree)是一种哈希二叉树,1979年由Ralph Merkle发明,将数据存储在树状结构的叶子节点中,并通过对数据的逐级哈希(Hash)操作确保数据的不可篡改性。叶子节点数据的任何变动,都会传递到上一级节点并最终反应到树根的变化。比特币区块里面的每一笔交易就是通过默克尔树结构进行存储的。
我们提出的方法中,采用两种方式分别提供平台用户所属资产总额证明和有效用户保证金证明。通过默克尔树的方式将每一个用户的账户资产哈希值存储在默克尔树的叶子节点中。通过第三方的财务审计机构审计默克尔树的叶子节点中存储的用户资产总额,同时也由第三方的财务审计机构审查和验证平台所持有的有效用户保证金。最终由第三方的财务审计机构提供书面审计报告对外公布审计结果。同时对外公开存储所有用户资产哈希值的默克尔树。每一个平台用户都可以通过数学算法验证自己的账户资产金额是否被准确包含在默克尔树中。
对于主流币种,我们将跟审计公司配合,逐一完成审计报告,在Github平台上公布所有用户资产哈希值默克尔树,并且开源验证代码程序,任何平台用户都可以从“我的财务”的“余额证明页面”获取验证信息,并且通过我们公开的默克尔树和验证程序验证自己的资产是否被我们准确公布和包含到审计过程中。
对于其他币种,任何项目方或个人均可以提出要求让平台按同样标准完成审计工作和公开用户资产默克尔树,但需要由提出人承担一定的费用。费用标准将根据审计难度确定,根据币种是否多链存储,是否具有PoS理财功能,是否具有隐私功能等制定。
内容二:
作者:Babywhale,Foresight News
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 中,部分用于抵押借贷,交易所本身很难将全部的用途公之于众。
当下,证明交易所兑付能力的储备证明仅仅是一个开始,如何证明用户资金没有与自有资金混淆、如何证明理财产品并非旁氏骗局、如何证明做市商的承兑能力等等,都是交易所后续需要去思考和解决的问题。
内容三:
不同观点,来自 Chainfeed
Ben :潜在的问题有:1. 树根的更新频率问题;2. 前端欺诈问题;3. 第三方审计的信用问题;4. 吹哨人可用性问题。但愈加透明总体上对 CEX 用户而言是一种更好的趋势。
Haotian:交易所 CEX 都说要采用默克尔树储备证明,有积极影响,但潜在问题依然存在:1)默克尔树储存的数据频率如何更新,不能做到每笔 input 和 output 都实时刷新,资金挪用问题还是存在;2)默克尔树数据存在交易所自家服务器上,顶多算可验证了,「验证」都是事后查证性质了,说到底还是会存在平台公信力问题。
Jolestar:Merkle tree 方案实际上起不了多大作用,不过聊胜于无吧,这个趋势是好的。真正的方案需要参考 layer2 的思路,要保证用户单方面的提币权,要有欺诈惩罚。
Mindao :核心问题是光知道储备还不够,关联交易、负债关系、保证金交易,这些都无法通过储备体现。牛市来了,用户杀红眼,更不在乎这。聊胜于无吧,但最终:他律> 自律。DeFi 是永续资产链上证明,而且连业务逻辑、权限都明明白白、可验证。我们又回到原点,all in DeFi 就对了。
Benmo:除了各家 Cex 做保证金 100% 证明,希望跨链桥们也做一下保证金 100% 证明。