最近,在cz几条推特的轰炸之下,全球第二大交易所FTX因为挪用用户资产,被挤兑后迅速宣告破产,由此导致了用户对CEX资产储备不透明的强烈不信任感。而cz提出CEX要做MerkleTree的资产证明,并计划几周内发布,其他交易所纷纷表示跟进。
那么,什么是MerkleTree,中心化交易所应如何通过MerkleTree实现自身资产储备≥用户资产?本文将从技术角度讨论并给出完整的证明方案与代码实现。
我们以ETH为例,当我们要实现资产证明时,我们要证明的是链上资产ETH总额≥交易所用户ETH资产总额。因此,证明分为链上与链下两部分。
链上证明
链上证明比较简单,因为交易所通常会将所有用户充值汇总到几个地址,列出这几个地址在链上自查即可。为证明这些地址是交易所拥有,可用私钥签名一条简单的消息即可,签名只需要发布一次。
Curve原生稳定币crvUSD铸造数量突破1.1亿枚:7月20日消息,Curve原生稳定币crvUSD铸造数量突破1.1亿枚。其中基于wstETH的铸造数量为5767万枚,基于WBTC的铸造数量约为2337万枚,基于sfrxETH的铸造数量为979万枚,基于ETH的铸造数量为343万枚。[2023/7/20 11:06:31]
链下证明
链下证明就比较复杂,需要用到MerkleTree。
MerkleTree是一种二叉树,其最底层叶子节点存储数据以及数据的哈希,而每上一层节点则存储两个子节点的哈希,最后由根节点的哈希保证这个MerkleTree的任何节点数据的完整性。因为修改任何一个叶子节点的数据都会导致根节点的哈希变化,因此,使用MerkleTree可以保证,只要发布了Root,树的所有子节点均不可修改:
战略咨询公司贝恩公司收购Web3数字产品工作室Umbrage:2月2日消息,战略咨询公司贝恩公司宣布收购 Web3 数字产品工作室 Umbrage,Umbrage 将与 Bain 的创新与设计服务密切合作,并在产品管理、UI/UX 设计、全栈开发、DevOps、QA 和 Web3 等领域额外的深厚技术专长。此举将进一步为客户提供端到端交付能力,以概念化、设计、构建和扩展下一层软件驱动的业务模型和产品。
迄今为止,贝恩的数字交付平台 Vector 团队已为全球各行各业的 6700 多个数字项目提供建议,在高级分析、创新与设计、软件工程和企业技术方面提供端到端的交付能力。[2023/2/2 11:43:00]
Bybit斥资380万美元购买Bithumb股东T-Scientific的可转换债务:金色财经报道,加密货币交易所Bybit表示,它向韩国加密货币交易所Bithumb的第三大股东T-Scientific投资55亿韩元(380万美元)。
Bybit购买了T-Scientific在上个月底发行的160亿韩元可转换债券中的几乎三分之一。T-Scientific(057680)在韩国证券交易所上市。可转换债券是一种固定收益证券,支付利息,但在某些条件下可以转换为股权。(coindesk)[2022/10/25 16:37:41]
假设交易所全部5个用户持有若干不等的ETH,按用户ID可表示如下:
Evmos:v8.0.0 版本升级将被推迟,请用户在版本更新提案中投反对票:8月26日消息,Evmos 在 Twitter 表示,v8.0.0 版本升级将被推迟,新版本仍需进行修改。Evmos 表示希望用户在版本更新提案(Prop #50)中投反对票,未来将推出新的版本。[2022/8/26 12:49:59]
可将用户ID视为索引,构造MerkleTree并计算MerkleRoot:
FTX发布关于TSLA股票分割的说明:据官方公告,TSLA将进行股票分割,FTX将通过以下方式处理本次股票分割:
2022年08月25日06:00(UTC):TSLA和TSLA-0930将更名为TSLAPRE和TSLAPRE-0930。
2022年08月25日07:00(UTC):
* 拆分后的新TSLA/USD、TSLA/DOGE、TSLA/BTC和TSLA-0930市场将上线;
* FTX将自动以3:1的比例将TSLAPRE-0930仓位和TSLAPRE余额转换为TSLA-0930和TSLA余额;
* TSLAPRE-0930和TSLAPRE/USD市场将下架。[2022/8/25 12:46:56]
交易所发布MerkleRoot后,可确保所有子节点——即用户ID对应的子节点余额均完全确定下来,每个用户均可根据自己的用户ID查询余额是否相符,只要有任何一个用户发现自己的余额在指定索引的位置不符,即可判断交易所造假。
为了证明交易所的用户资产储备总额,交易所也不得不公开所有子节点的索引与余额,这样任何第三方才能计算出用户资产总额,并根据交易所公布的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
由Filecoin、FilecoinFoundation举办的FIL-Singapore活动于新加坡当地时间2022年9月26日-9月27日在新加坡的MarinaBaySands举行.
1900/1/1 0:00:00AIGC的发展速度有点超乎预期,CopyAI在实现200万用户后的10天时间,注册用户就又新增加了100万,这预计会给其ARR带来500万美金的增量达到1500万美金,如果按照这个速度下去.
1900/1/1 0:00:00公共物品在任何大规模生态系统中都是一个非常重要的话题,但通常也是一个难以定义的话题。这里有三种不同的定义:经济学家:非排他性和非竞争性物品,这两个技术术语合在一起意味着很难通过私有财产和基于市场的方式提供.
1900/1/1 0:00:00什么是投票托管? 投票托管是由CurveFinance提出,代币持有者将其治理代币锁定一段预定的时间,并获得投票托管代币作为回报的一种协议,例如CRV代币持有者可以将CRV锁定一段时间并获得veCRV.
1900/1/1 0:00:00ZKP加速 本文将主要讨论ZKP作为扩容方案的发展现状,从理论层面描述产生证明过程中主要需要优化的几个维度,并引深到不同扩容方案对于加速的需求。然后再围绕硬件方案着重展开,展望zk硬件加速领域的摩尔定律.
1900/1/1 0:00:00前言 当我们推开Web3.0的大门后,看到的只有荒芜。DID本身是不能独立存在的,必须和Web3.0各项内容互相促进,相互成长.
1900/1/1 0:00:00