本周我们正在修改 科技树 为了反映以太坊1.x研发的一些新的主要里程碑,这些里程碑并不完全是对无国籍以太坊的完全实现,但在中期可以实现得多。技术树中最重要的补充是Alexey的再生提案。这远非明确指定的升级,但是研发的普遍观点是,再生为朝着“完全无状态”愿景的最终目标迈出了戏剧性但更不可能实现的一步。在许多方面,再生是一个静态状态网络,它将有助于在基于Bittorrent风格的DHT网络中分发状态快照和历史链数据。同时,诸如代码Merkleization和国家的二进制二线代表之类的近期改进正越来越接近现成EIP。下面,我将解释并澄清所做的更改,并链接到相关讨论,如果您想深入研究任何特定功能。
二进制Trie
以太坊目前使用的 Merkle-Patricia被溅出 要编码状态,通过切换到二进制格式,特别是在预期的证人规模中,可以获得可观的效率提高。对以太坊状态的完整重新编码需要指定新格式,并需要明确的过渡策略。最后,需要确定是否也将智能合同代码也将被融合,以及是否应该将其纳入二进制Trie过渡中或作为独立更改。
二进制Trie格式
比以太坊当前的十六进制的Trie结构,二进制二进制的总体想法要简单一些(双关次:))。二进制二进制二进制二进制的三位一体没有有16条可能的途径之一,而是从Trie的根部走向儿童节点。有2个。随着Trie的完整重新指定,Trie提供了更多的机会,可以改善已建立良好效率的效率低下的机会他们自己现在知道以太坊已经运营了5年以上。特别是,这可能是一个机会,使国家更加适应数据库编码的现实性能挑战(在 先前的有关州增长的文章)。
可以找到有关正式二进制Trie规范和汇编规则的讨论 在中央研究中。
二进制Trie过渡
重要的不仅是目的地(二进制Trie格式),而且旅程本身!在理想的过渡中,整个Nework的交易处理不会中断,这意味着客户将需要构建新的二进制Trie 同时 处理新块每15秒钟滚动时。继续看起来最有前途的过渡策略被称为 覆盖方法这部分基于Geth的新快照同步协议。简而言之,将以二进制格式添加新的状态变化(六十六进制)TRIE,在过渡过程中形成了一种二进制/六型混合动力。未接触状态转换为背景过程。转换完成后,两层将变成单个二进制Trie。
重要的是要注意,二元过渡是客户多样性非常重要的一种情况。每个客户都需要实现自己的过渡版本,或者依靠其他客户来转换并等待转换的另一侧的新Trie。这绝对是“两次测量,一次剪裁”的情况,所有客户团队共同努力实施测试并协调切换。为了安全和保障的利益,该网络在过渡过程中需要简要暂停服务(例如,一些空块),但是目前就任何特定计划达成共识都无法预测。
代码merkleization
智能合同代码占以太坊国家Trie的很大一部分(约占约50GB的州的1 GB)。任何智能合同互动的证人都必须提供与之相互作用的代码以计算 Codehash,这可能是很多额外的数据。代码Merkleization是将合同代码分成较小的块并更换的一种手段 Codehash 与另一个Merkle Trie的根源。这样做将使目击者可以用参考哈希替换潜在的智能合同代码的大部分,从而剃掉了关键的千数kilobytess证人数据。
有几种代码构成汇编方案的方法,范围从普遍的块(例如,到64个字节片)到简单的一面到更复杂的方法,例如基于Solidity's的静态分析(例如静态分析) 功能ID 或者 跳 指示。代码Merkleization的最佳策略最终将依赖于从Mainnet收集的实际数据最有效的方法。
再生
处理再生建议的最好的地方是 @mandrigin的这种解释 或者 @realledgerwatch的完整建议,但TL; DR是重生本质上是“区块链的弹簧清洁”。整个状态在概念上将分为“主动”和“非活动”状态。定期将整个“主动”状态持续激活,新的交易将开始再次建立一个活跃状态 几乎 什么都没有(因此名称为“再生”)。如果交易需要一个旧的国家,它将提供与无国籍以太坊所需要的证人相似的证人:默克尔的证明证明国家的变化与某些不活跃状态是一致的。如果交易触及州的“非活动”部分,则它会自动将其提升为“活动”(无论交易是否成功),直到下一次再生事件。这具有很好的财产,即在州租金中创建一些经济范围,而该州租金没有实际删除任何州,并且允许交易发件人无法产生证人,以盲目地继续尝试交易,直到其触摸的一切都“活跃”再次“再次” 。
关于再生的有趣部分是,它使以太坊更接近无状态的最终目标,但是避开了一些无国籍的最大挑战,即目击者在执行EVM期间的证人气体会计如何工作。它还可以使某些版本的交易证人在网络上移动,从而使DAPP开发人员适应无状态范式和证人生产的更多机会。重生后的“真实状态”将是一个程度的问题:无国籍以太坊实际上只是每个块之后的再生。
状态网络
从一开始,一个更好的网络协议是技术树上的“侧面问题”,但是随着无国籍以太坊范围的再生,找到用于共享以太坊链数据(包括状态)的替代网络原始图似乎适合主要任务要好得多。以太坊的当前网络协议是一个整体,而实际上有几种不同类型的数据可以使用针对不同事物进行优化的不同“子网络”共享。
以前,这已经被谈论过 早期无状态调用的“三个网络”, 基于DHT 网络能够更有效地提供一些数据 不断变化。随着再生的引入,“不活跃”状态将适合这种不变的数据,并且理论上可以由Bittorrent风格的蜂群网络提供服务,而不是像目前完成的完全同步客户端的零件一样。
由于上次再生事件是一个不变状态的网络将是一个 静态状态网络,可以通过扩展新的 Decovery v5.1 Spec在DEVP2P库中 (以太坊的网络协议)。以前的提议,例如 旋转旋转同步 和(更成熟) 快速协议 用于同步 积极的 国家仍将是朝着完全分布的宝贵步骤 动态状态网络 对于试图快速同步整个状态的客户。
总结
无状态技术树(不仅是已更新的叶子)的每片叶子的更凝结和技术版本可在 无国籍以太坊规格回购,以及有关此处涵盖的所有主题的积极讨论都在Eth1x/2 R&D Discord中 – 如果您想加入,请在Ethresear.ch上邀请。与往常一样,@gichiba或@jhancock tweet for反馈,问题和新主题的建议。