DIG:中心化交易所如何用Merkle Tree实现资产储备证明

最近,在cz几条推特的轰炸之下,全球第二大交易所FTX因为挪用用户资产,被挤兑后迅速宣告破产,由此导致了用户对CEX资产储备不透明的强烈不信任感。而cz提出CEX要做MerkleTree的资产证明,并计划几周内发布,其他交易所纷纷表示跟进。

那么,什么是MerkleTree,中心化交易所应如何通过MerkleTree实现自身资产储备≥用户资产?本文将从技术角度讨论并给出完整的证明方案与代码实现。

我们以ETH为例,当我们要实现资产证明时,我们要证明的是链上资产ETH总额≥交易所用户ETH资产总额。因此,证明分为链上与链下两部分。

链上证明

链上证明比较简单,因为交易所通常会将所有用户充值汇总到几个地址,列出这几个地址在链上自查即可。为证明这些地址是交易所拥有,可用私钥签名一条简单的消息即可,签名只需要发布一次。

Coinbase CEO呼吁监管机构关注中心化实体,不要管DeFi项目:12月20日消息,加密货币交易所Coinbase的联合创始人兼首席执行官Brian Armstrong呼吁监管机构关注中心化实体,不要管去中心化金融 (DeFi) 项目。他还呼吁建立一个公平的执法环境,因为少数有问题的演员不遵守规则是公开的秘密。

Armstrong称,最好首先围绕加密货币中的集中参与者(稳定币发行人、交易所和托管人)建立监管清晰度,因为这是我们看到消费者伤害风险最大的地方,几乎每个人都同意应该这样做。[2022/12/21 21:57:07]

链下证明

链下证明就比较复杂,需要用到MerkleTree。

MerkleTree是一种二叉树,其最底层叶子节点存储数据以及数据的哈希,而每上一层节点则存储两个子节点的哈希,最后由根节点的哈希保证这个MerkleTree的任何节点数据的完整性。因为修改任何一个叶子节点的数据都会导致根节点的哈希变化,因此,使用MerkleTree可以保证,只要发布了Root,树的所有子节点均不可修改:

Solana生态去中心化交易所Orca推出质押功能:9月28日消息,Solana生态去中心化交易所Orca宣布推出质押功能,在接下来的几周,用户将能够在质押池中存入ORCA和Collectibles来赚取更多的ORCA代币。[2021/9/28 17:11:44]

假设交易所全部5个用户持有若干不等的ETH,按用户ID可表示如下:

可将用户ID视为索引,构造MerkleTree并计算MerkleRoot:

报告显示:2020年去中心化交易所代币平均投资回报率高达241%:根据加密货币研究平台Messari的最新DeFi报告,2020年迄今,去中心化交易所(DEX)代币的投资回报率是中心化交易所代币投资回报率的五倍以上。DEX代币今年平均增长率为241%,而中心化交易所代币平均增长率为44%。(Cointelegraph)[2020/6/11]

交易所发布MerkleRoot后,可确保所有子节点——即用户ID对应的子节点余额均完全确定下来,每个用户均可根据自己的用户ID查询余额是否相符,只要有任何一个用户发现自己的余额在指定索引的位置不符,即可判断交易所造假。

金融学博士吴建刚:去中心化不准确,非中心化更合适:近日,区块链专家、中欧陆家嘴国际金融研究院研究员吴建刚接受采访时表示,去中心化这个词还不是特别准确。我更愿意用非中心化这个词。它意味着不要过于中心化,但是在很多时候,中心化并不可完全去掉。但是交易中介是会慢慢的被程序所替代的。也就是说,交易将会并不需要有中介参与撮合。但是信息中介,作为一种信息服务商,应该不会被完全替代。所以我觉得,去的是交易中介,但是还是会存在各种中心。不过将不会有一个非常强大的中心,将大家的数据存放于此。[2018/5/1]

为了证明交易所的用户资产储备总额,交易所也不得不公开所有子节点的索引与余额,这样任何第三方才能计算出用户资产总额,并根据交易所公布的MerkleRoot确认这些子节点数据没有被篡改。

然而,这样一来,每个用户的持币余额就完全公开了,可以很容易地对持币大户进行跟踪。因此,我们需要一种机制将一个用户的余额拆成若干份,并存储在多个不同的索引地址。为了确保索引不会冲突,可使用SparseMerkleTree,用以太坊地址作为索引。对SparseMerkleTree不熟悉的同学可以参考针对以太坊实现的一种SparseMerkleTree。

例如,对于用户45678持有的45.67余额,我们可以分为3份:

14.727835427.8394771023.10268748然后,根据ID计算出确定的若干地址索引:

6f1cc8a44919eb1c6576d6819b37ac9ab288ecb59759bf1d54e5f25f135d7674dea3bef0d24fb15346daefba020f7e5bfa957b13aeaa4b72034a90fd这样我们就可以把这个用户的余额分别存放在3个子节点上。把所有用户都处理一遍,假设结果如下:

我们就可以得到一个地址索引=余额的列表。对地址进行排序,以便让同一个用户的多个地址不再连续列出,得到地址/余额的CSV如下:

交易所计算总额683.91以及MerkleRoot值0x61cdf659...c41c40fe,公开CSV文件及MerkleRoot后,任何第三方可校验树的有效性,并获得用户资产总额,再与链上对比。对于每一个用户来说,需要根据自己的ID,快照时产生的余额,以及交易所给出的用于生成确定性地址的随机数,可自行验证对应的若干节点余额总和与自己的资产额度完全相等。

这种方式既能保证每个用户可验证自己的资产,又能保证其他人无法推算某个用户的资产,其缺点是计算较为繁琐,需要相应的第三方工具帮助用户校验。

小结

本文给出了一种交易所用户资产的额度证明,并保证不泄漏任何用户的额度。详细代码可参考GitHub源码:

https://github.com/michaelliao/eth-smt/blob/master/sample/src/main/java/com/itranswarp/sample/Proof.java

责任编辑:Kate

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

狗狗币TAL:Web3领域中最值得关注的3大主题

2014年,以太坊联合创始人加文·伍德提出Web3.0概念,将其描述为一种全新的互联网运行模式:用户自己发布、保管信息,不可追溯并且永不被泄露,即“去中心化的网络”.

[0:0ms0-8:893ms