11月27日,以太坊开发者MikhailKalinin提出了一种名为「可执行信标链」的Eth1-Eth2过渡提案,据悉,该提案的最初想法来自以太坊联合创始人VitalikButerin,其旨在将eth1数据(交易、状态根等)嵌入到信标区块中,并强制信标链提议者生成可执行的eth1数据来消除复杂性。 以下是该提案的具体内容: 特别感谢VitalikButerin的创意,djrtwo、zilm以及其他人的评论和有用的贡献。 最近提出的以rollup为中心的路线图,提出数据分片作为以太坊2.0中执行的主要扩容因子,允许在单个执行分片上进行扩展,并简化了总体设计。 Eth1分片设计假设通过信标链与数据分片进行通信。如果具有多个执行分片的第二阶段(Phase2)在以后推出,那么这种方法将是有意义的。由于当前主要集中在以rollup为中心的路线图上,将以太坊1.0放在一个专用的分片上(也就是说,独立于信标链)给共识层带来了不必要的复杂性,并增加了在分片上发布数据以及在Eth1中访问它们之间的延迟。 我们建议通过将eth1数据(交易、状态根等)嵌入到信标区块中,并强制信标链提议者生成可执行的eth1数据来消除这种复杂性。这会把eth1执行和有效性作为共识的一等公民。 提案概述 Eth1引擎由系统中的每个验证者负责维护。 当验证者打算提出一个信标区块时,它会要求eth1引擎创建eth1数据。然后,Eth1数据会被嵌入正在生成的信标区块体当中。 如果eth1数据无效,它也会使得承载它的信标区块失效。 Eth1引擎修改 根据之前的方案,Eth1分片中枢、Eth1引擎以及eth2客户端是松散结合并通过RPC协议进行通信的(请检查Eth1+eth2客户端关系以了解更多详细信息)。Eth1引擎继续维护交易池和需要自己网络堆栈的状态下载器,它还应该保存eth1区块的存储。 当前的提案删除了eht1区块的概念,eth1引擎有两种潜在的方法来处理这种变化: 由信标区块携带的eth1数据合成生成eth1区块; 修改引擎,使交易处理不需要eth1区块,而是使用eth1数据; 前者看起来比后者要更容易实现,它允许更快地将eth1客户端转换为eth1引擎,并且已经被eth1分片poc证明。我们使用术语「可执行数据」来表示包括eth1状态根、交易列表(包括收据根和bloom过滤器)、coinbase、时间戳、区块哈希以及eth1状态转换功能所需的所有其他数据位的数据。 eth1引擎的职责列表与我们以前对eth1分片的职责类似。主要的观察项有: 交易执行,eth2客户端向eth1引擎发送可执行数据。eth1引擎通过处理数据更新其内部内部状态,如果共识检查通过,则返回true,否则返回false。高级用例,比如即时存款处理,也可能需要结果中的完整交易凭证。 (责任编辑:admin) |