宇宙链 宇宙链
Ctrl+D收藏宇宙链

使用覆盖层改变以太坊状态树的格式

作者:

时间:1900/1/1 0:00:00

编者按:本文来自以太坊爱好者,作者:GuillaumeBallet,翻译&校对:裴奇&阿剑,Odaily星球日报经授权转载。账户和合约存储数据的方式是影响以太坊的众多问题之一。以太坊协议选用了MerklePatriciaTree来组织账户及合约数据。尽管这种数据结构在理论上效果很好,但在实际应用中,它带来的问题却比它能够解决的问题多。核心开发者们已经讨论多年,想要把这种数据结构换为二叉树,我将在这篇文章中阐述我对这个问题的看法以及如何实现这种转变。我所提议的处理方法包括一段时间的过渡期,在这段时间内,网络要同时维护两种树结构。这样做的好处是,转换树结构的过程不会影响链的运行,并且可以确保所有的账户都被转换成了二进制格式。背景

目前,以太坊的状态树是十六叉制的。十六叉制表示每个节点有16个孩子节点。理论上讲,这种方式挺好的,因为孩子节点多意味着只需要更少的“层”便可存储所有数据。例如,下图是用十六叉树表示的键值对(170,v)。十六进制中,170记作0xaa,因此你只需要两层:第一层记录第一个a,第二层记录第二个a。

Layerzero Labs CEO:LayerZero成为使用最多的消息传递系统之一:金色财经报道,Layerzero Labs首席执行官兼联合创始人Bryan Pellegrino在社交媒体上表示,当LayerZero非常公开地成为世界上使用最多的消息传递协议时,它也非常安静地成为使用最多的消息传递系统之一。LayerZero_Labs目前每天处理 500,000 条消息,150 万笔交易,5 亿次RPC调用。[2023/5/26 10:40:38]

Circle:如果储备金短缺,将使用公司资源不排除使用外部资本以弥补不足:金色财经报道,USDC 发行商 Circle 发文回应 USDC 脱锚表示,如果硅谷银行的 33 亿美元储备金不能 100% 返还,Circle 将使用公司资源,不排除涉及使用外部资本,来弥补任何短缺。[2023/3/12 12:57:57]

-图1.十六叉树的例子,展示了值v是如何在在对应键0xaa处是存储的。这棵树的键长度只有2个字节,只有沿着0xaa的子树被表现出来了。为了简洁,不相关的子树替换为“...”-可以看出,上图的树很矮,而且很宽。给定相同的键值对,下图展示了二叉树存储的情形。170在二叉树中被表示为10101010。

欧洲央行:数字欧元只有被欧洲用户广泛使用才能成功:金色财经报道,根据欧洲中央银行(ECB)的说法,只有被欧洲用户广泛接受的数字欧元才能被认为是成功的。

欧洲央行周三在该行行长克里斯蒂娜·拉加德和执行委员会成员法比奥·帕内塔撰写的博客文章中公布了数字欧元的主要目标。随附的文件列出了供公众使用的欧盟单一货币的数字版本的一些基本设计考虑因素。该帖子称,“只有成为欧洲人日常生活的一部分,数字欧元才能成功。与现有解决方案相比,它必须增加价值”。

欧洲央行于 2021 年 6 月启动了数字欧元项目,并于10 月启动了对零售央行数字货币 (CBDC) 的为期两年的调查阶段。此后,负责提出新立法的欧盟执行机构欧盟委员会表示,将在 2023 年推出数字欧元法案。(coindesk)[2022/7/14 2:13:30]

-图2.与图1相同的键值对,存储在二叉树中。为了简洁,不相关的子树被表示为“...”-从图中可见,二叉树要深得多,也窄得多。以太坊中,每个区块包含一个stateRoot字段,这是该块处理完成后表示以太坊全局状态的MPT的树根哈希值。总的来说,这个哈希值是对根节点的16个孩子节点的哈希值所组成的列表作哈希运算得到的。这些孩子节点的哈希值又是孩子的16个孩子节点的哈希值所组成的列表做哈希运算得到的,以此类推。每次打包交易生成新区块时,矿工都会更新账户树,重新计算根哈希。根哈希存储在新区块的stateRoot字段,然后新区块被共识。

以太坊研发者:或有很多USDT迁移到L2或侧链致使其Gas使用量下降:9月7日,以太坊研发者Philippe Castonguay发推称,长期以来,USDT一直是以太坊上消耗Gas最多的智能合约,自上个月以来,其使用量在稳步下降。对此,Philippe Castonguay表示,最有可能的解释是,可能现在有很多USDT迁移到L2或者侧链。[2020/9/7]

-图3.区块头中的状态根字段,指向十六叉树的树根-问题在于:如果要对所有节点做哈希,重新计算根哈希的时间就太长了,因此,为了计算根节点的哈希,矿工将从数据库中检索同层节点的兄弟哈希值。虽然后者花费的时间没有前者那么多,这个操作还是很耗时。因为每个哈希都必须从数据库中取出。在十六叉树中,通常每一层你都需要取出15个兄弟哈希值。在上面那个我构造的例子中,就需要30个哈希值。尽管二叉树层次更深一点,但在每一层只需要一个兄弟哈希值。在上述例子中,仅仅需要8个哈希值!这就是为什么在实际中二叉树更优。覆盖层转变方法

动态 | Coinbase宣布纽约居民可使用XRP进行交易:据cointelegraph消息,美国最大的加密货币交易所Coinbase近日宣布,居住在纽约的加密货币用户可以使用XRP进行交易。纽约居民可以购买和出售XRP,转账,登录Coinbase网站或使用Coinbase iOS和Android应用程序。虽然3月1日,Coinbase已经宣布了上市XRP,但当时英国和纽约的居民没有在用户范围之内。[2019/5/14]

不幸的是,转换为二叉树并不简单。需要转换的数据太多了,执行转换花费的时间将多于15秒的区块生成时间。除此以外,设想你要翻译一本5000页的书,作者还在不停地告诉你他们对故事做了些修改,并且这些修改会影响你已经翻译过的页……那这个过程就没完没了。转换状态树的格式也是一样的问题:可能你刚完成某个地址的格式转换,用户就使用了该地址,那你又得从头转换一遍。解决这个问题的办法是增加一个过渡期,过渡期间,在十六叉树基层上建立一棵覆盖树。这棵覆盖树是二叉树格式的,它的作用是保存状态上发生的所有变化,直到基层十六叉树完全转换为二叉树。转换分为3步进行。第1步——转换

在这种方法下,区块高度为H1时肯定会有两个状态根:一个是“基层”十六叉树状态根,一个是“覆盖层”二叉树状态根。

-图4.转换过程中,区块拥有两个状态根:一个是传统十六叉树的只读根,一个是覆盖二叉树的可读写根-十六叉树被设置为只读,因此对状态的任何更新都将在覆盖树上进行。当一笔交易读取或者更新一个账户时,系统首先会搜索覆盖树。如果在覆盖树中找不到账户,接着将会在旧的十六叉树中搜索值。与此同时,十六叉树在后台进行转换。此时不需要担心值插入的问题,因为所有的改变都会存储在上层的覆盖树中。

第2步——基层树切换

当后台转换过程完成,矿工对外宣告,他们已经准备好用转换结果来替换只读的十六进制基层树根。对状态的读写与步骤1阶段是一样的。

-图5.转换的第二个阶段,矿工在区块头使用转换所得二叉树的树根替换十六叉树根,向网络示意他们已经准备好了-当足够多的一系列区块对转换所得的二叉基层树根给出了相同的值,意味着大多数矿工都完成了转换,并且认可转换后的树。合并过程则开始。第3步——合并两棵树

合并过程不断推进:每产生一个新的区块,就从覆盖树上删除n个键,把它们重新插入二叉基层树。此过程一直持续,直到所有的键都从覆盖树上移除。到达这步时,区块头就不再保留覆盖状态树的树根。整个步骤的核心只有一个:如果交易执行时要写的键存在于覆盖树上,这个键就会从覆盖树上删除,写操作直接在二叉基层树上进行。下一步

为了估计完成转换所需要的时间,我已经做了一个低转换率的原型系统。我们确信,整个过程花费的时间不会太离谱,也就是说几天时间就够了。我们会随着算法的改进而公布更多细节。致谢此提议得益于AlexeyAkhunov、VitalikButerin、AnnaGeorge、SinaMahmoodi、TomaszStanczak以及MartinH.Swende的宝贵意见。

标签:以太坊COIOINERO国内以太坊交易平台OP CoinInescoinYoHero

莱特币最新价格热门资讯
2020全球金融大洗牌后,加密市场主力博弈逻辑发生哪些巨变?

2020年,全球?融市场剧烈动荡,加密市场也出现了巨?变化,?特币经历了暴跌极端?情,?天鹅事件频发,一些投资者可能会对盘面摸不着头脑,除了黑天鹅事件,市场主力也是对行情变化影响非常大的因素.

1900/1/1 0:00:00
彼得?希夫:当比特币价格暴跌时,黄金将会飙升

编者按:本文来自Cointelegraph中文,作者:SAMUELHAIG,Odaily星球日报经授权转载。直言不讳的加密货币怀疑者和黄金支持者彼得·希夫再次将目标对准了Twitter上的比特币社区.

1900/1/1 0:00:00
五月的比特币奖励减半将迫使弱小矿商退出网络

编者按:本文来自Cointelegraph中文,作者:ANTóNIOMADEIRA,Odaily星球日报经授权转载。过去几周,随着新冠肺炎大流行占据了大多数头条新闻,加密货币领域已经将其部分注意力转向了比特币奖励减半.

1900/1/1 0:00:00
Dai数据完全指南

Maker协议是一个复杂的系统,具备许多的灵活组件。人们不仅可以直接享受Dai的稳定性,而且Maker协议的完全透明性意味着任何人都可以探索、挖掘和审计多抵押Dai系统的数据和健康状况.

1900/1/1 0:00:00
科普:以太坊2.0信标链中的状态转换

编者按:本文来自以太坊爱好者,作者:SlyGryphon,译者&校对:IANLIU&阿剑,Odaily星球日报经授权转载。信标链由区块和不断递进的状态组成;区块被产出、签名、传遍网络,然后用于更新状态.

1900/1/1 0:00:00
USDT疯狂增发的背后:为什么就是不涨?

编者按:本文来自蓝狐笔记,Odaily星球日报经授权转载。 USDT在最近几个月发行量激增,截止到2020年4月16日截稿时,当前的USDT总量超过69亿美元,而在一年前才20多亿美元,大约一年的时间增长了3倍多.

1900/1/1 0:00:00