Eth 1.x:无状态以太坊新思路“reGenesis”

2020-08-29 14:17 栏目:经验之谈 来源:网络整理 查看()

本周,我们将更新技术树,并为以太网1.x研发添加一些新的主要里程碑。这些里程碑不是无状态以太网的完全实现,而是我们在中期可以合理实现的目标。

最重要的更新是阿列克谢的重生提议。尽管这一更新远非标准化,但从研发的角度来看,reGenesis为实现“完全无国籍”的最终目标提供了一条更加保守和可行的途径。在其他方面,与再生互补的技术是静态网络,它可以帮助在基于bittorrent DHT的网络中传播状态快照和历史链数据。

与此同时,一些离我们很近的目标已经在为EIP做准备,比如代码merkleization状态二叉树。在这篇文章中,我将解释已经取得的进展,并附上链接,以便读者能够对感兴趣的领域有深刻的理解。

Eth 1.x:无状态以太坊新思路“reGenesis”

二叉树

目前,以太网使用十六进制的帕特里夏默克尔树来编码状态,但是如果将其转换为二进制,将会带来效率的显著提高,尤其是在见证大小方面。以太网状态的完全重新编码需要一个新的范例和一个清晰的过渡策略。最后,有必要决定是阻塞智能契约代码,将进程合并到二叉树转换中,还是独立更新它。

二叉树范式

与当前的十六进制树结构相比,二叉树的概念更简单。从树的根到其子节点有十六条可能的路径,但是在二叉树中只有两条路径。随着状态树的重新规范化,我们有机会解决过去五年中以太网的明显低效问题。此外,我们还有机会使状态适应现实世界中数据库编码的性能挑战(在上一篇关于状态增长的文章中提到)。

正式的二叉树规范和阻塞规则可以在电子研究中讨论。

过渡到二叉树

重要的不仅仅是二叉树范式的目的地,而且旅程本身也非常有价值!在理想的转换过程中,网络的事务处理不会受到干扰,也就是说,客户端在处理每15秒出现的新块时,需要构建一个新的二叉树。

目前,最有前途的过渡策略称为“覆盖”,它部分基于geth的新快照同步协议。一般来说,新的状态变化将以二进制范式添加到现有的十六进制树中,这意味着在转换过程中将会出现二进制和十六进制的混合。未受影响的状态被转换为后台处理。一旦转换完成,这两层将合并成一个二叉树。

值得注意的是,客户端多样性在二进制转换过程中也起着重要作用。每个客户端都需要实现自己的转换版本,或者依赖其他客户端进行转换,然后在另一端等待一个新的树。

这要求我们“三思而后行”,所有客户都需要一起测试和协调转换。出于安全原因,网络可能需要在过渡过程中短时间停止服务(例如,挖出一些空块),但就任何具体计划达成共识仍为时过早。

代码阻塞

以太网状态树的很大一部分由智能契约代码组成,约占50GB状态的1GB。用于智能契约交互的所有见证都必须提供其交互的代码来计算codeHash,这可能会产生大量额外的数据。

代码默克尔化旨在将契约代码分成更小的块,然后用另一个默克尔根替换代码哈希。通过这种方式,我们可以在见证中使用引用哈希来代替大多数潜在的智能契约代码,从而节省数千字节的见证数据。

有很多方法可以阻止代码。就复杂性而言,简单的方法是通用块(例如,每个块的大小是64字节),而更复杂的方法是基于实度函数标识或跳转目标指令的静态分析。最终,最佳代码阻塞策略取决于它是否适用于从主网络收集的真实数据。

复活

了解雷根斯提案的最好的地方是@mandrigin给出的解释和@realLedgerwatch提交的完整提案。一般来说,摄政基本上可以说是“区块链的一次清理”。完整状态将在概念上分为“活动”和“非活动”状态。整个“活动”状态将在某个时间段内被停用,然后新的事务将几乎从头开始建立一个新的活动状态(因此称为“重新生成”)。

如果事务需要以前的状态,将提供一个见证,这与无状态以太网所要求的证明非常相似:默克尔证明状态变化与非活动状态一致。如果事务需要状态的“非活动”部分,它将自动将其转换为“活动”状态(无论事务是否成功),并且该部分将被保存直到下一次重新生成。

这样做的一个好处是,使用州时会产生一些经济限制,但实际上不会删除任何州。其次,如果交易发送者盲目地试图重复交易,就不能产生证人。

就重生的意义而言,它使以太网朝着最终的无国籍目标迈进了一大步,并避免了实现无国籍的最大挑战,即如何计算EVM被处决时的目击气体。同时,它还使某个版本的事务见证能够在网络中传播,这样轻量级客户端和dapp开发人员就有更多的机会熟悉无状态范例和见证生成。

重生后的“真正”无国籍状态只是一个程度问题:无国籍的以太网实际上只是每个块后的重生。

国家网络

Eth 1.x:无状态以太坊新思路“reGenesis”

从一开始,网络协议的优化只是技术树中的一个“次要任务”。然而,随着重生进入无状态以太网,探索共享以太网链数据(包括状态)的替代网络原语成为主要任务。以太网目前的网络协议是一个整体,但实际上有很多类型的数据可以通过不同的“子网”共享,这些“子网”可以满足不同的需求。

以前在无状态会议上讨论这个话题时,我们称之为“三个网络”,基于分布式哈希表的网络可以更有效地为不常改变的数据类型服务。随着reGenesis的引入,“非活动”状态可以包含在这种不经常改变的数据中,理论上可以应用于比特流群网络,而不是目前由整个节点逐个广播。

自上次重新生成以来,在网络中传播不变状态的网络是静态网络,它可以基于devp2p库(以太网协议)中的新发现5.1规范进行扩展。

以前,类似于旋转木马同步和更成熟的SNAP协议,它可以用于同步活动状态,这是迈向完全分布式动态网络的重要一步,使客户端能够快速同步完整的状态。

结论

对于无状态Etherium技术树的每个分支的更详细的技术描述,读者可以参考无状态Etherium规范库,并在eth1x/2rddiscover中讨论所有这些主题。如果他们想加入,他们可以在网站上获得邀请。如果你有任何反馈或建议,请联系推特上的@gichiba或@JHancock。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发