技术解读:高效的链上动态 Merkle Tree_虚拟币交易所平台,数字货币,NFT

admin 阅读:34 2024-04-01 14:45:35 评论:0
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

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


This article is a technical article published by Dr. Cycle, the founder, at the Ethereum Technology Forum, introducing an efficient scheme design. 比特币今日价格行情网_okx交易所app_永续合约_比特币怎么买卖交易_虚拟币交易所平台

原文链接:

https://ethresear.ch/t/efficient-on-chain-dynamic-merkle-tree/11054


简介


遵循以太坊2.0的无状态客户端的思想,我们实现了一个高效的链上动态Merkle tree(默克尔树):
链上包含性验证;链上添加/就地更新;O(1) 存储空间成本;更新/添加操作的 O(1) 存储写入成本。


背景


Merkle tree广泛用于以极低存储成本在链上大量成员身份验证,例如 Uniswap 链上空投。无需上传链上所有用户大量的空投信息(比如,地址、数量),空投可以通过以下方式显著节省成本:
将树的根哈希存储在链上使用链下计算证明用户奖励用户通过链上提交证明来获取奖励
此外,链上动态 Merkle tree 正在引起人们的兴趣。著名的会计事务所安永(Ernst Young ,EY) 开发了一种仅能在链上添加的动态 Merkle tree (https://github.com/EYBlockchain/timber 5)。它通过只存储“边界”节点而不是树的所有节点来节省树的存储成本,但是,添加操作的写入成本为 O(log2(N)),这可能会在 EVM 上消耗相当大的 gas。

基本想法


类似于现有的静态Merkle tree,它使用默克尔证明来验证包含性,链上动态树的基本思想是在包含验证后重用默克尔证明来更新树的根哈希。树更新的步骤如下:
给定 LeafIndex、oldLeafHash、newLeafHash、oldRootHash、proof用 oldLeafHash 和 proof 计算 rootHash。如果计算出的rootHash != oldRoothHash,则包含验证失败;否则继续使用 newLeafHash 和 proof 计算 newRootHash,其中证明被重用,newRootHash 将是更新后树的根哈希
请注意,只有 newRootHash 被写入区块链,因此空间和写入的成本是 O(1)。

应用

MerklizedERC20


ERC20 标准可以修改为 Merklize (账户,余额)的树。任何造币/销毁/转移操作都需要 Merkle 证明。Merklized ERC20 的应用或许可以:
链上投票——治理提案投票可以廉价地使用 ERC20 快照并根据快照计算链上投票,而不需要保留 ERC20 余额变化(Compound)或链下快照的所有历史记录。远程流动性挖掘——远程链上的合约对本地 ERC20 用户进行空投/流动性挖矿,其中 ERC20 快照通过去中心化预言机定期转发到另一条链。
示例代码可以在这里找到:

QuarkChain/DynamicMerkleTree/blob/abe6c7ee8f2fef105649943d5e329e5f5e697f8d/contracts/MerklizedERC20.sol


/SPDX-License-Identifier: MITpragma solidity ^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\";
contract MerklizedERC20 is Context, IERC20, IERC20Metadata { mapping(address = uint256) private _balances;
mapping(address = uint256) private _indices1;
uint256 private _totalSupply;
string private _name; string private _symbol;

文字格式和图片示例

注册有任何问题请添加 微信:MVIP619 拉你进入群

弹窗与图片大小一致 文章转载注明 网址:https://netpsp.com/?id=47953

美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
平台列表
美化布局示例

欧易(OKX)

  全球官网 大陆官网

币安(Binance)

  官网

火币(HTX)

  官网

Gate.io

  官网

Bitget

  官网

deepcoin

  官网
关注我们

若遇到问题,加微信客服---清歌

搜索
排行榜
扫一扫,加我为微信好友加我为微信好友