『数据库』以太坊核心开发者:MPT十六叉树将被替换( 二 )
在十六叉树中 , 通常每个阶段要获取15个同级哈希 。 在上面的示例中 , 这就是30个哈希 。
即使更深入 , 二叉树每个阶段也只需要一个同级哈希 。 在上面的示例中 , 就只有8个哈希!这就是为什么在实践当中 , 二叉树实际上要更好的原因 。
覆盖转化法不幸的是 , 要将以太坊从十六叉树切换到二叉树 , 并不是一件容易的事 。 有很多数据需要转换 , 并且执行更改需要花费超过15秒的区块时间 。
除此之外 , 想象一下 , 你正在翻译一本5000页的书籍 , 作者一直打电话告诉你他对故事做了调整 , 这会影响到你已经翻译过的页面……而这可能会一直持续下去 。
这就是目前以太坊遇到的问题 , 因为用户可以更新已转换的地址 , 这意味着你必须重新开始转换过程 。
解决此问题的建议是设一个过渡期 , 在此期间 , 在十六叉树的顶部放置一棵覆盖二叉树 , 它的作用是保存状态发生的所有更改 , 直到基树转换为二叉树 。
这种过渡会分成三步进行:
第1步-转换在这种方法中 , 确定在区块高度H1处 , 区块具有两个stateRoot
s:一个用于“基础”十六叉树 , 一个用于“覆盖”二叉树 。
本文插图
图4: 在转换过程中 , 区块具有2个状态根(state Root):一个是传统十六叉树的只读根 , 第二个是“覆盖”二叉树的根 。
十六叉树被认为是只读的 , 因此对状态的任何更新都将是对覆盖树的更新 。
当一笔交易读取或更新一个帐户时 , 系统首先搜索覆盖树 。 如果在那里找不到帐户 , 系统将在旧的十六叉树中搜索该值 。
而在同时 , 十六叉树正在后台转换 。 现在可以不用担心插入 , 因为所有更改都存储在顶部树中 。
第2步-基转换后台转换过程完成后 , 矿工将通过转换结果替换只读的十六叉树基础根来宣布他们已准备好进行切换 。 对状态的读写操作与步骤1相同 。
本文插图
图5:转换的第二个阶段 , 区块头将十六叉树基础根替换为其二叉树转换基础根 , 以向网络发送信号 , 告知它们已准备就绪 。
当一个足够大的序列区块对转换后的基础根具有相同的值时 , 这意味着大多数矿工都完成了转换 , 并对转换后的树的外观达成了共识 。 接下开 , 就进入到合并过程 。
第3步-合并两颗树合并过程会逐渐进行:每次生成新区块时 , 都会从叠加层中删除n个键 , 然后将其重新插入到基础树中 。 该过程将持续进行 , 直到从叠加层中删除所有键为止 。 在此阶段 , 覆盖状态根将从区块头中删除 。 除此之外 , 如果交易执行写入覆盖树中找到的键 , 则该键将从覆盖树中删除 , 并直接写入到基础树 。
下一步我们已经创建了一个初步的原型 , 以便估计完成转换所需的时间 。 我们相信 , 整个过程可以在合理的时间内(大约几天)完成 。 随着算法的改进 , 我将发布更多的细节 。
致谢
这项提议得益于Alexey Akhunov , Vitalik Buterin , Anna George , Sina Mahmoodi , Tomasz Stanczak以及Martin H. Swende提供的宝贵意见 。
【『数据库』以太坊核心开发者:MPT十六叉树将被替换】相关讨论:https://ethresear.ch/t/overlay-method-for-hex-bin-tree-conversion/7104
- 戮默科技■助力企业数字化升级,戮默科技深挖软件开发核心
- 『未央网』4月正式上线,10家韩国金融及监管机构联合推出开放金融数据库
- 『爱生活爱快乐爱自己』英特尔新型5 GHz第十代核心H系列
- 军武数据库:在电磁炮时代会复兴吗?,坚船利炮——男人的梦
- 【空军世界】欧洲国家将核心技术出售中国,美军阻挠也没用,比乌克兰都大方
- 『巴比特资讯』Buterin提出解决方案,以太坊名称服务暴露隐私缺陷,Vitalik
- [核心价值发现者]金博股份IPO被指“空手套白狼”,实控人廖寄乔借钱增资
- 巴比特资讯■为多客户端测试网发布开绿灯,以太坊2.0将发布代码规范最新版本v0.11.1
- 人民网■安徽 实体经济显活力(经济聚焦)
- [盛锐大视界丽英]促进SA设备成熟,工信部:持续支持5G核心芯片等研发