最近,在cz几条推特的轰炸之下,全球第二大交易所FTX因为挪用用户资产,被挤兑后迅速宣告破产,由此导致了用户对CEX资产储备不透明的强烈不信任感。而cz提出CEX要做MerkleTree的资产证明,并计划几周内发布,其他交易所纷纷表示跟进。
那么,什么是MerkleTree,中心化交易所应如何通过MerkleTree实现自身资产储备≥用户资产?本文将从技术角度讨论并给出完整的证明方案与代码实现。
我们以ETH为例,当我们要实现资产证明时,我们要证明的是链上资产ETH总额≥交易所用户ETH资产总额。因此,证明分为链上与链下两部分。
链上证明
链上证明比较简单,因为交易所通常会将所有用户充值汇总到几个地址,列出这几个地址在链上自查即可。为证明这些地址是交易所拥有,可用私钥签名一条简单的消息即可,签名只需要发布一次。
Polygon Q4报告:基于Polygon的活跃钱包数Q4创历史新高:金色财经报道,Polygon发布Q4运营报告,报告称,基于Polygon的活跃钱包数呈上升趋势,Q4 创历史新高 1100 万+,较去年 Q4 增长 115%,活跃钱包总数达到 2.06 亿(较 2021 年增长 58%)。
尽管2022下半年主要的交易量大幅下降,但 Polygon 网络保持了月交易量超过 8000 万美元的健康水平。另一方面,Binance 的交易量从年初下降到 6800 万美元左右,不到其一半,Avalanche 一直稳定到 4 月,但到 12 月下降到 280 万美元。
此外,尽管市场放缓,但 Polygon 上的游戏和 DeFi dApp 并未出现大幅下滑。9 月份游戏钱包的激增可归因于 Animoca Brands 推出的免费游戏Benji Bananas,该游戏去年增加了 140 万+ 活跃钱包并处理了 400 万+ 交易。[2023/2/25 12:28:50]
链下证明
Solana生态钱包Solflare带来高Gas Fees\"优先\"服务:金色财经报道,Solana生态钱包Solflare周一宣布其用户现在可以支付更高的Gas Fees来克服网络拥堵。Solrise Finance联合创始人Vidor Gencel在推特上表示,钱包内的交易将自动以当前市场价格的费用为优先,确保你的交易比其他钱包内的交易更快列入。[2023/1/18 11:17:33]
链下证明就比较复杂,需要用到MerkleTree。
MerkleTree是一种二叉树,其最底层叶子节点存储数据以及数据的哈希,而每上一层节点则存储两个子节点的哈希,最后由根节点的哈希保证这个MerkleTree的任何节点数据的完整性。因为修改任何一个叶子节点的数据都会导致根节点的哈希变化,因此,使用MerkleTree可以保证,只要发布了Root,树的所有子节点均不可修改:
比特币市值占比回升至38%,加密货币总市值跌破8600亿美元:金色财经报道,12月16日,据Coingecko数据显示,当前比特币市值占比回升至38%,以太坊市值占比暂报16.9%,USDT、USDC、BUSD三种Stablecoin市值占比分别为7.49%、5.12%、2.12%。
全网加密货币总市值为859,382,583,987美元,24小时跌幅达3.2%。[2022/12/17 21:49:38]
Solana生态NFT平台Metaplex宣布裁员,但称FTX崩溃对其财务状况无直接影响:11月18日消息,Solana生态NFT平台Metaplex首席执行官Stephen Hess今日凌晨在推特上宣布该公司已裁员的消息,但未透露具体裁员规模。他表示:“今天我们做出了一个艰难的决定,与Metaplex Studios团队的几名成员分道扬镳。虽然我们的财务状况没有受到FTX崩溃的直接影响,但对市场的间接影响是重大的,这要求我们采取更保守的方法前进。同时推进关键路径工作将是我的首要任务。”
此前消息,Metaplex曾于今年1月份宣布完成4600万美元融资,9月份Metaplex宣布推出其实用和治理代币MPLX,并向Solana NFT创作者进行空投。[2022/11/18 13:20:47]
假设交易所全部5个用户持有若干不等的ETH,按用户ID可表示如下:
康奈尔团队提出环保的比特币开采方案,结合碳捕获和可再生能源能获得环境经济更高效益:金色财经报道,近期,康奈尔大学团队对美国 50 个州的比特币技术,以及投资进行了全面分析。研究人员考察分析了比特币在美国各州的经济效益和环境效益。相关论文以《通过碳捕获和可再生能源开采比特币以实现美国各州的碳中和》为题,以封底形式发表在 Energy & Environmental Science 上。研究结果表明,电网中可再生能源比例高,并且电价较低的州更适合环保高效的采矿。
该团队研究结果表明,最赚钱的州是华盛顿州,其次是佛蒙特州和纽约州。而佛蒙特州、缅因州、华盛顿州、爱达荷州和新罕布什尔州的二氧化碳排放量较少。从经济角度来看,美国各州中夏威夷、罗德岛、阿拉斯加州、康涅狄格州、西弗吉尼亚州和肯塔基州是排位最靠后的几个州。在所有情况下,特拉华州、西弗吉尼亚州、罗德岛州和肯塔基州的二氧化碳排放量最高。[2022/9/26 22:31:00]
可将用户ID视为索引,构造MerkleTree并计算MerkleRoot:
交易所发布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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。