金色观察|以太坊2.0的可执行信标链提案
金色财经报道,北京时间11月26日,
以太坊
核心开发人员Mikhail Kalinin在以太坊研究者论坛发起了一个从 Eth1 到 Eth2 的过渡提案“可执行信标链”提案,根据该提案,这个 eth2 执行模型,可替代可执行的分片,并支持信标链中包含的单个执行线程。该提案最初想法由以太坊创始人 Vitalik Buterin 提出,旨在通过将 eth1 数据(交易和状态根等)嵌入至信标区块中并让信标提议者生成可执行的 eth1 数据,以降低复杂性。
以下为该提案内容资料,经金色财经整理,内容有所删改。
Eth1的分片设计是假设通过信标链与数据分片进行通信。如果具有多个执行分片的第2阶段顺利推出,则此方法有意义。由于以rollup为中心的路线图,会将Eth1放在专用分片,给共识层增加了不必要的复杂性,并增加了在分片上发布数据和访问分片之间的延迟。
所以我们建议通过将eth1数据(交易,状态根等)嵌入信标块并让信标链验证者产生可执行的eth1数据来摆脱这种复杂性。
提案概述
Eth1引擎由系统中的每个验证器维护。当验证者打算提出一个信标块时,它要求eth1-engine创建eth1数据。然后将Eth1数据嵌入正在生成的信标块的主体中。如果eth1数据无效,它也会使携带该数据的信标块无效。
Eth1引擎修改
根据之前的内容,以Eth1 Shard为中心设计,eth1-engine和eth2-client松散耦合并通过RPC协议进行通信(检查eth1 + eth2客户端关系)。Eth1引擎不断维护需要自己的网络堆栈的交易池和状态下载器。它还应保留eth1块的存储。
当前的提议删除了eht1块的概念,eth1-engine有两种可能的方式来处理此更改:
从信标块携带的eth1数据中综合创建eth1块
修改引擎,使交易处理不需要eth1块,而使用eth1数据
我们使用可执行数据来表示包括eth1状态根,交易列表,coinbase,时间戳,块散列以及eth1状态转换功能所需的所有其他数据位的数据。
eth1-engine责任列表类似于我们以前对Eth1 Shard承担的责任。它的主要作用为:
交易执行。 Eth2客户端将可执行数据发送到eth1引擎。Eth1引擎通过处理数据来更新其内部状态。
交易池维护。 Eth1引擎使用ETH网络协议传播和跟踪线路中的交易。待处理的交易保留在内存池中,并用于创建新的可执行数据。
可执行数据创建。 Eth2-client发送以前的块哈希和eth1状态根,coinbase,时间戳和创建可执行数据所需的所有其他信息(交易列表的一部分)。
状态管理。 Eth1引擎维护状态存储以能够运行eth1状态执行功能。
注意:长时间的不确定性可能导致存储中产生大量垃圾,从而增加磁盘空间消耗。当无状态执行和“块创建”就位时,可以选择eth1引擎作为纯状态转换函数运行,并承担一点责任,即可以禁用状态存储,从而减少对磁盘空间的需求。
信标块处理
ExecutableData结构替换Eth1Data为信标块主体。此外,信标链和eth1的同步处理可实现即时存款。因此,可以从信标块主体去除沉积物。
在EVM中访问信标状态
我们更改了BLOCKHASH用于返回eth1块哈希的操作码语义。改为返回信标块根。这允许检查信标状态或块中包含的那些数据的证明。
异步状态读取有一个主要缺点。客户必须等待一个块,才能创建带有链接到该块的证明或它产生的状态根的交易。简而言之,异步状态访问至少要延迟一个插槽。
直接状态访问
假设eth1引擎可以访问表示整个信标状态的merkle树。然后,EVM可能带有操作码,可READBEACONSTATEDATA(gindex)提供对任何信标状态的直接访问。这种读取的复杂性取决于gindex价值,并且易于计算,因此可以轻松推断出gas价格。其次,返回数据的大小为32字节,完全适合EVM的32字节。
使用此操作码,可以创建更高级别的信标状态访问器库,从而为智能合约提供便捷的API。
该模型消除了状态访问延迟。因此,通过正确地排列信标链操作和eth1执行(后者遵循前者),N-1可以在插槽中访问到插槽分片数据的交叉链接N,从而允许rollup以最快的方式证明数据。而且,降低了信标状态读取的数据和计算复杂性。
直接访问的成本增加了eth1引擎的复杂性。读取信标状态的能力可以通过不同的方式实现:
传递状态以及可执行数据。 这种方法的主要问题是处理大尺寸的状态副本。如果直接访问将被限制为状态数据的子集,而该状态数据的子集需要将一小部分状态传递给执行,则可能会起作用。
双工通信通道。 拥有双工通道,eth1-engine将能够同步向信标节点询问EVM请求的状态。根据通道的设置方式,延迟可能会成为执行具有信标状态读取的交易的瓶颈。
嵌入式eth1引擎。 如果将eth1-engine嵌入信标节点(例如,作为共享库),则它可以通过节点提供的主机功能从相同的存储空间读取状态。
可能有人会说,当前的提议一成不变地建立了执行模型,并降低了我们需要时引入更多可执行分片的能力。
另一方面,几个可执行分片引入了诸如跨分片通信,共享帐户空间之类的问题,而这些问题与执行模型的预期转变同样重要且难以解决。
Ai sẽ là người được lợi trong đợt Bull Run của Bitcoin?
Theo báo cáo của sàn giao dịch OKEx trong thời kỳ Bull Run hiện tại của Bitcoin, những ch...
MCDEX khởi chạy trên mạng thử nghiệm Arbitrum Rollup L2
MCDEX vui mừng thông báo về việc ra mắt testnet của mình trên Arbitrum Rollup, một giải pháp khả năn...
[Tổng kết AMA] Cùng BigcoinVietnam tìm hiểu về Lien.Finance
Vào 11:00 AM - 12:00 PM, thứ tư, ngày 02/12/2020 Lien.Finance và BigcoinVietnam đã tổ chức một ...