RC20:技术解读:高效的链上动态 Merkle Tree-ODAILY

编按:本文是QuarkChain创始人&CEO周期博士在以太坊技术论坛ethresear.ch发布的一篇技术文章,介绍了一个高效的Merkletree方案设计。

原地址:

https://ethresear.ch/t/effici...

简介

遵循以太坊2.0的无状态客户端的思想,我们实现了一个高效的链上动态Merkletree:

动态 | Mphasis与QEDIT签署协议 以提供基于区块链的增强隐私技术解决方案:信息技术解决方案提供商Mphasis周四宣布与QEDIT建立合作伙伴关系,为企业提供基于区块链的隐私增强技术解决方案。(Moneycontrol)[2020/1/23]

链上包含性验证;链上添加/就地更新;O(1)存储空间成本;更新/添加操作的O(1)存储写入成本。

背景

Merkletree广泛用于以极低存储成本在链上大量成员身份验证,例如Uniswap链上空投。无需上传链上所有用户大量的空投信息,空投可以通过以下方式显著节省成本:

声音 | Consensys执行董事:呼吁用区块链技术解决社会问题:10月24日,在联合国世界投资论坛区块链专题论坛中,以太坊软件公司ConsenSys执行董事Vanessa Grellet表示,目前全球面临有2000万左右难民,还有100万人没有身份等等社会问题,区块链或许不能解决所有难题,但这项技术将是解决这些问题的方法之一。目前,区块链技术主要被应用于4个社会领域:供应链透明;环境与气候变化,在链上记录碳足迹;身份登记;融资。去年以来,区块链还被用于人权保护、提升投票的透明度。区块链还非常适合用于慈善款项追踪。他还呼吁全场的区块链从业者,与联合国等国际机构合作,用区块链技术解决这些社会问题。[2018/10/24]

将树的根哈希存储在链上使用链下计算证明用户奖励用户通过链上提交证明来获取奖励

河南利用区块链技术解决基层公共卫生难题:据人民网消息,从有关方面获悉,河南通过互联网区块链技术打造健康服务智慧云平台,用于解决中国基层公共卫生服务面临的主要难点。目前,该平台已在河南周口、平顶山应用于实践,取得良好效果。据了解,通过上述平台,医疗卫生部门可以便捷、真实、有效地完成公共卫生居民健康体检工作。居民则可随时通过电脑或智能手机查看及打印个人档案,并可在线向专家医生咨询病情或在线预约挂号。[2018/7/16]

此外,链上动态Merkletree正在引起人们的兴趣。著名的会计事务所安永(Ernst&Young,EY)开发了一种仅能在链上添加的动态Merkletree(https://github.com/EYBlockcha...5)。它通过只存储“边界”节点而不是树的所有节点来节省树的存储成本,但是,添加操作的写入成本为O(log2(N)),这可能会在EVM上消耗相当大的gas。

安妮股份:旗下“版权家”平台基于区块链技术解决了海量版权随时随地快速存证的问题:安妮股份4月20日晚间发布2017年年报,截至2017年年末,旗下“版权家”平台累计为专业版权人提供百万次的版权服务,同时基于区块链技术也解决了海量版权随时随地快速存证的问题。公司将持续建设多版权运营平台,加强区块链建设,推进“创作即确权”“使用即授权”“发现即维权”的版权综合服务。[2018/4/22]

基本想法

类似于现有的静态Merkletree,它使用默克尔证明来验证包含性,链上动态树的基本思想是在包含验证后重用默克尔证明来更新树的根哈希。树更新的步骤如下:

给定LeafIndex、oldLeafHash、newLeafHash、oldRootHash、proof用oldLeafHash和proof计算rootHash。如果计算出的rootHash!=oldRoothHash,则包含验证失败;否则继续使用newLeafHash和proof计算newRootHash,其中证明被重用,newRootHash将是更新后树的根哈希

请注意,只有newRootHash被写入区块链,因此空间和写入的成本是O(1)。

应用

MerklizedERC20

ERC20标准可以修改为Merklize的树。任何造币/销毁/转移操作都需要Merkle证明。MerklizedERC20的应用或许可以:

链上投票——治理提案投票可以廉价地使用ERC20快照并根据快照计算链上投票,而不需要保留ERC20余额变化或链下快照的所有历史记录。远程流动性挖掘——远程链上的合约对本地ERC20用户进行空投/流动性挖矿,其中ERC20快照通过去中心化预言机定期转发到另一条链。

示例代码可以在这里找到:https://github.com/QuarkChain...

/SPDX-License-Identifier:MITpragmasolidity^0.8.0;import"hardhat/console.sol";import"@openzeppelin/contracts/token/ERC20/IERC20.sol";import"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";import"@openzeppelin/contracts/utils/Context.sol";import"./DynamicMerkleTree.sol";

contractMerklizedERC20isContext,IERC20,IERC20Metadata{mapping(address=>uint256)private_balances;mapping(address=>uint256)private_indices1;uint256private_totalSupply;stringprivate_name;stringprivate_symbol;

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

金星链

[0:15ms0-0:899ms