火星链 火星链
Ctrl+D收藏火星链
首页 > 火星币 > 正文

BIT:给以太坊做个大手术:MPT十六叉树转二叉树需要这三步

作者:

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

写在前面:

想象一下,你正在翻译一本5000页的书籍,作者一直打电话告诉你他对故事做了调整,这会影响到你已经翻译过的页面……而这可能会一直持续下去,这就是以太坊从当前使用的MPT十六叉树转变为二叉树结构中遇到的一个类似困境。对此,以太坊核心开发者GuillaumeBallet提出了一种方案,可以在大约几天的时间内,通过3个步骤完成这一转换手术。

(图片来自:tuchong.com)

以下是译文:

影响以太坊的众多问题之一是账户和合约数据的存储方式,以太坊目前选择的结构称为默克尔帕特里夏树(MerklePatriciaTree,或简称MPT)。尽管从理论上讲,它是很有意义的,但在实践中,它带来的问题要比其解决的问题要更多。多年来,核心开发人员一直在讨论向二叉树的转换,在本文中,我将介绍我对这一问题的看法,然后给出一个解决它的方法。

上海市经信委主任:今年着力打造元宇宙超级场景:4月12日消息,上海市经信委主任吴金城参与“2023上海民生访谈”节目表示,为增强市民的获得感、体验感,今年我们联合相关部门,着力打造元宇宙超级场景。比如“元”上苏河,围绕苏州河水岸景观构建数字孪生场景,把苏州河沿岸21公里20余个优秀历史建筑“搬到”云上,基于沿岸各类传感器同步呈现真实世界信息,实现元宇宙空间的实时渲染和虚实联动。此外,上海还将建设元宇宙智慧医院、前滩东体元宇宙、张江数字孪生未来之城等元宇宙超级场景。(上观新闻)[2023/4/12 13:58:50]

提议的过程引入了一个过渡期,在此期间,两种树结构都会存在。这样做的好处是,在转换树结构时,主链可以保持运行,并且还可以确保将所有帐户转换为二叉树格式。

背景

目前,以太坊的账户是被存储到一棵十六叉树当中的。所谓十六叉,就表示一个节点有16个子节点,理论上这是很好的,因为这意味着你需要更少的"阶段"来存储你所有的数据。

例如,这就是以十六叉树的形式表示键与值对的过程。在十六进制中,170表示为0xaa,因此你只需要两层:其中之一用于第一个a,另一层则用于第二个a。

比特币全网未确认交易数量为30511笔:金色财经报道,据BTC.com数据显示,目前比特币全网未确认交易数量为30511笔,全网算力为353.36 EH/s,24小时交易速率为3.60交易/s,目前全网难度为46.84 T,预测下次难度上调0.26%至46.96 T,距离调整还剩8天15小时。[2023/3/29 13:31:47]

图1:这是一棵十六叉trie树示例,显示了值“v”如何存储在键0xaa处。此树只有2字节长的键,并且只沿0xaa键的子树被展开。为了简洁起见,不相关的子树被替换为“…”。

注意,这棵树很浅,也很宽。然后将其与以下相同键与值对的二叉树表示法进行比较。在二进制中,

Nansen:过去7天Arbitrum跨链桥交易额达到9340万美元:金色财经报道,区块链分析公司Nansen发推表示,用户正在“押注”Arbitrum和StarkWare将是下一波代币空投的头部链,Arbitrum金额在1万美元以上、StarkWare金额在100-1000美元的跨链交易量大幅上涨。

数据显示,过去7天Arbitrum L1 Custom Gateway的总交易额达到9340万美元、Polygon PoS ERC20跨链桥总交易额为4680万美元、Optimism约为4440万美元、Synapse以太坊桥总交易额为2900万美元。[2023/2/14 12:05:57]

170表示为

10101010。

Bitstamp西班牙子公司获得当地监管机构批准并在央行完成注册:金色财经报道,Bitstamp 西班牙子公司已获得该国监管机构批准并在央行(The Bank of Spain)完成注册,成为西班牙第 46 家获得许可的加密企业。Bitstamp 是欧洲最大的加密货币平台之一,允许该交易所为当地客户提供服务,此前 Bitstamp 已在意大利、卢森堡和荷兰接受当地监管,本次获得西班牙监管批准后可在当地提供加密货币兑换服务和电子钱包托管服务。(financefeeds)[2022/11/18 13:20:03]

图2:和图1中相同的键值对,以二叉树形式进行存储。为了简洁起见,不相关的子树被表示为“…”。

你可以看到,这棵树要深得多,也窄得多。

在以太坊中,每个区块都包含一个stateRoot字段,它是MPT根的哈希值。总而言之,这个哈希,是通过对根的16个子项的哈希列表进行哈希运算而获得的。这些子哈希列中的每一个,又依次是其子哈希列表的哈希,依此类推。

每次生成一个新区块时,矿工都会更新帐户树并重新计算其根哈希值。哈希存储在新区块的stateRoot字段中,然后新区块被密封。

NFT项目Slick City将发布其第一套基于实用程序的NFT:金色财经报道,以太坊区块链上的NFT项目Slick City将发布其第一套基于实用程序的NFT,该NFT包含4444个独特的、下一个一代、高级时尚、半人类/半外星人的收藏品。[2022/7/19 2:24:01]

图3区块头的stateroot字段指向十六叉树的根。

问题就出现在这里了:通过对所有节点进行哈希运算来重新计算哈希根花费的时间太长,因此,为了计算根节点,矿工将从数据库中检索同级哈希。尽管从数据库中获取所有子叶并对整棵树进行哈希运算所需的时间不多,但此操作仍然需要大量时间。这是因为必须要从数据库中获取每个哈希。

在十六叉树中,通常每个阶段要获取15个同级哈希。在上面的示例中,这就是30个哈希。

即使更深入,二叉树每个阶段也只需要一个同级哈希。在上面的示例中,就只有8个哈希!这就是为什么在实践当中,二叉树实际上要更好的原因。

覆盖转化法

不幸的是,要将以太坊从十六叉树切换到二叉树,并不是一件容易的事。有很多数据需要转换,并且执行更改需要花费超过15秒的区块时间。

除此之外,想象一下,你正在翻译一本5000页的书籍,作者一直打电话告诉你他对故事做了调整,这会影响到你已经翻译过的页面……而这可能会一直持续下去。

这就是目前以太坊遇到的问题,因为用户可以更新已转换的地址,这意味着你必须重新开始转换过程。

解决此问题的建议是设一个过渡期,在此期间,在十六叉树的顶部放置一棵覆盖二叉树,它的作用是保存状态发生的所有更改,直到基树转换为二叉树。

这种过渡会分成三步进行:

第1步-转换

在这种方法中,确定在区块高度

H1处,区块具有两个

stateRoots:一个用于“基础”十六叉树,一个用于“覆盖”二叉树。

图4:在转换过程中,区块具有2个状态根:一个是传统十六叉树的只读根,第二个是“覆盖”二叉树的根。

十六叉树被认为是只读的,因此对状态的任何更新都将是对覆盖树的更新。

当一笔交易读取或更新一个帐户时,系统首先搜索覆盖树。如果在那里找不到帐户,系统将在旧的十六叉树中搜索该值。

而在同时,十六叉树正在后台转换。现在可以不用担心插入,因为所有更改都存储在顶部树中。

第2步-基转换

后台转换过程完成后,矿工将通过转换结果替换只读的十六叉树基础根来宣布他们已准备好进行切换。对状态的读写操作与步骤1相同。

图5:转换的第二个阶段,区块头将十六叉树基础根替换为其二叉树转换基础根,以向网络发送信号,告知它们已准备就绪。

当一个足够大的序列区块对转换后的基础根具有相同的值时,这意味着大多数矿工都完成了转换,并对转换后的树的外观达成了共识。接下开,就进入到合并过程。

第3步-合并两颗树

合并过程会逐渐进行:每次生成新区块时,都会从叠加层中删除n个键,然后将其重新插入到基础树中。该过程将持续进行,直到从叠加层中删除所有键为止。在此阶段,覆盖状态根将从区块头中删除。

除此之外,如果交易执行写入覆盖树中找到的键,则该键将从覆盖树中删除,并直接写入到基础树。

下一步

我们已经创建了一个初步的原型,以便估计完成转换所需的时间。我们相信,整个过程可以在合理的时间内完成。随着算法的改进,我将发布更多的细节。

致谢

这项提议得益于AlexeyAkhunov,VitalikButerin,AnnaGeorge,SinaMahmoodi,TomaszStanczak以及MartinH.Swende提供的宝贵意见。

相关讨论:https://ethresear.ch/t/overlay-method-for-hex-bin-tree-conversion/7104

标签:STA以太坊BIT元宇宙Starship Inu比特币以太坊最新价格bitkeep有人向我转了三万虚拟币元宇宙怎么赚钱

火星币热门资讯
DEF:观点 | 朱幼平:区块链在新基建中的机会,应用需瞄准五大数字基建领域

本文来源:陀螺财经,原题《朱幼平:区块链在新基建中的机会》作者:朱幼平新基建必然代替旧基建,数字基建是新基建的主体模块.

1900/1/1 0:00:00
BIT:比特币史上最动荡的一周,究竟发生了什么?

来源:ArcaneResearch译者|?Moni出品?|?Odaily星球日报3月9日——3月15日,比特币市场创下了史上最动荡的一周.

1900/1/1 0:00:00
SOL:探寻转型新方向 8家上市公司再融资“惠顾”区块链

来源:证券日报见习记者?余俊毅自新冠肺炎疫情爆发以来,云办公、数字化以及区块链都成为火热的转型方向。不少企业在寻找转型的机遇,开始了新的布局.

1900/1/1 0:00:00
HET:印度政府、央行以及证券交易委员会将联合讨论加密货币监管框架

据报道,印度政府正在与中央银行,印度储备银行和印度证券交易委员会讨论加密货币的监管框架。此外,印度政府正在等待最高法院另一起加密货币案的结果,以就加密货币监管做出最终决定.

1900/1/1 0:00:00
EDE:俄罗斯银行:新的数字资产法案将禁止加密货币发行和交易

俄罗斯银行法律办公室负责人AlexeyGuznov在接受俄罗斯新闻社Interfax采访时表示,俄罗斯数字资产法案的最新版本将包括禁止发行和出售加密货币的禁令.

1900/1/1 0:00:00
OTM:谁拥有真正的储存价值:BTC、分叉币,还是平台币?

来源:加密谷作者:JamieHolmes翻译:子铭?价值储存即意味着该资产可以在不贬值的情况下维持其价值,比如黄金和类似于美国国债一样的生息资产.

1900/1/1 0:00:00