2021 以太坊社区 Meetup (The Merge 重点摘要)



021


10 月 26 日,ECN 携 togETHer 的社区伙伴 (ETHPlanet/DAOSquare/原语里弄/Hiblock/Rebase/BTCU) 在上海举办了以太坊社区 Meetup,现场气氛活跃,干货满满,对多个主题进行了讨论,包括 EIP-1559、以太坊2.0、MEV、DAO、区块链安全等。ECN 特此将这些内容整理成文分享给大家,希望能增进社区对以太坊的了解和思考。


下面是以太坊基金会 Eth2 研究员 Hsiao-Wei Wang 的主题分享《以太坊 The Merge 重点摘要》的文字及演示整理,讲解了以太坊当前最重要的合并工作的细节、大致时间以及相关影响。


021
021

我从比较技术的角度来介绍什么是合并 (The Merge)。


从宏观的角度来说,大概是这样。两个不同系统的融合。


021

我们过往都称以太坊的 Proof of Stake 以及 sharding 的研究叫 Eth2。那它们的客户端开发就叫 Eth2 client。那反而就是反推回来,就是把现在的 Proof of Work 的工作量证明的链叫 Eth1。那关于这个品牌的重新命名,我们把它 rebrand 了一番,变成以合并后的功能为名。我们的 Proof of Work 链,我们抽取出它的 execution layer,就是这个执行层。Eth2主要会负责未来的整个核心的共识层,那我们叫 consensus layer。当这两者真正合二为一,就变成一个完整的 Ethereum。


那当然了,也许未来会有Eth3、Eth4,那个就交给后人去设计。


现在来看一下目前区块,还有未来的区块有什么样的差异?


021

首先这张图是 execution layer 的部分。上面的图就是目前的 Proof of Work 链。外面是一层Proof of Work的共识层包裹,包住里面的 execution layer。那其实是称呼名称的不同,你可以就把它想象就是execution layer的这个核心 engine 就是 EVM, 大家用的 Ethereum Virtual Machine。那里面有 state root ,去记录我们每个用户自己的account,我们叫做 account state 的记录。那大家的合约状态和合约代码都会被记录在这个链的历史资料中。那合并后,我们是将这个 execution layer 的核心抽取出来。我们不需要外层的Proof of Work的共识去维护了,以后就是Proof of Work mining,就挖矿的相关栏位将会被弃用。比如说像这个 mixhash 或者是 difficulty 这些栏位未来会被弃用。未来的栏位会相对简单一点,就主要都是为了服务 EVM 所需的资料。那可能可以稍微注意一下。就是这个transation 的逻辑层都是在 EVM 会被解读出来和执行的。


021

然后是合并后的区块。


合并后会有两个state root,一个是 consensus layer的 state root,一个是内层state。那这个内层 state root 就是execution layer 的state root 就是我们目前 EVM 那个 merklized 后的 hash 值。


这整个execution layer就是如上一张图所示,那外层的这个state root 则是我们的信标链的state root。beacon chain 上并没有交易的逻辑层。我所说的交易是指比如说a 转给b 十个 Ether 这种交易。在目前的信标链上没有这个逻辑层,它有的是,比如说我们的验证投票的记录,以及一些验证者指令,比如存款和提款的记录。


那下面这张表就是比较一下这个 execution layer 和 consensus layer。EL 就是execution layer,CL 就是 consensus layer。主要功能刚已经讲过。关于未来分叉,就是 fork choice (分叉选择), 决定哪一条链是我们主链的规则,以后会用 LMD-Ghost 去实现。在过往大家都知道,就是最长链会主导链的走向。那未来就是用 LMD-Ghost。在初期,为了简化,我们的交易池架构是不会改变的。所以说用户一样在送出 transaction 的时候,用一样的逻辑一样的 API 就可以和客户端做沟通。


两者的networking 逻辑也不一样。一个是使用目前的 devp2p 与其他执行层的节点连线,这连线传送的资料就是 transaction 的广播。那另外一边 CL 层,我们会用 libp2p 和其他的CL 节点做连线。所以说,在初期,至少在第一个版本的合并,客户端可能会要开比较多的port 出去,也会接收比较多的 port 回来。


比较重要的是,对于 CL 而言,链上区块会有交易的资料层。这个资料层只有二进制数据的形式,而不是清楚的业务逻辑,就是像 A传给 B 10 个 Ether 这种逻辑,这种逻辑不会被明确写在 consensus layer 的资料之中,而是会用二进制数据的方式,然后再去给execution layer做解读。这是一个 execution layer 的抽象化。engine 未来可能不是 EVM,也许是其他未来版本,与未来的设计更兼容的设计。


提问:在merge 以后,比如说我在 Defi 里面要去执行一个transaction,那他的这个记录我还是可以正常的通过 Etherscan 查看,显示的只是 EL 的这个信息了,对吧?那主流的这种查询工具会不会把 CL 的这种信息也展现出来呢?会做区分吗?


回答:有些栏位可能我们以后未来会新增upcode 去读取 CL 的资料。


也许会存一些比如在 CL 上叫 black root,在 EL 上是原本的 black hash,也许 EVM 可以读取一些 black hash 的资料。也许未来会增加 CL 上的 black root 上去。类似这种 upcode,如果有需要,未来可能有 EIP 扩充。


回到演讲。


021

这张图是 merge transition 的过程。


那我们可以看到上面是目前正在运行中的 Proof of Work。


左下前面两个区块就是merge 之前的 beacon chain。请注意里面是空空的,那在某个时间点,就是客户端准备好后,我们会去设定一个指定 terminal total difficulty 的值。那客户端就会依据这个值去判断什么时间点合并会发生在哪一个区块中。


合并之后,Proof of Work 链是直接被包裹在整个信标链之中的。


所以它没有消失,只是被包了起来。


021

这里大概讲一下 API 接口。刚刚也有提到就是两个信标节点,主要是CL的部分,和下面 execution engine 会有不同的 p2p 接口。


以开发者的角度来看,可能会看的是这个 web3 library。原则上几乎不会去改动到这个 web3.eth 的 API,反而是新增信标链的 API。然后两个系统之间会用 RPC call 去传送request 和 response。主要是信标节点会向 execution engine 做请求,请 execution engine 回传比如说处理过 state root,类似这种要求。


下面是一些大家可能比较关心的问题的总结。


021

第一个就是什么时候 merge,大家都期待了已经好几年了。我们其实今年真的有蛮多重大进展的。那在今年十月的时候,我们用的一个初次冻结的规范,interop就是说Eth1 和 Eth2 客户端能不能够建接起来,Eth1 和 Eth2 都有附属的客户端让你选择,那这些全部的客户端是否能够变成一个测试网络。那在interop 中是颇为成功的,就是大部分的客户端都有加入这个测试网。


目前进行中的是这个叫做 Pithos 的测试链。大家有兴趣的话,也可以试着尝试加入。


那我们预计应该下个月会再冻结一版的就规范,在可能赶在节日之前吧。这一版会修正一些interop 中发现的一些小问题。我们再请客户端去做下一个版本的测试网络。


目前大家。保守预估就是大概2022年上半年还是蛮有机会去做硬分叉的。难度炸弹也延迟到了明年年中的时间,这是大众所期待的目标。但是还是要以实际的开发,尤其是测试的状况为主,去不断修正这个时间轴。


那刚才提到的这个第一次硬分叉,在 EIP 或是规范上,我们都希望能够最小化修改架构啊,为了就是要减少开发者去debug。也许一次可能我们不会新增太多 EIP,那后续才会再有一个进一步清理这些没有做到完美的地方的修正。比如说像是刚刚讲过有一些 Proof of Work 的mining 栏位,在未来其实是不需要的。那可能会在 merge 之后的下一次硬分叉把这些栏位清理出来。


那再来是大家都非常非常关注的就是到底什么时候可以提款出来。这个部分设计也会在合并后硬分叉完成。


021

作为以太坊使用者,在合并后的使用体验会有什么差异。那首先第一个就是维护的架构会稍微复杂一点。但相信开发者也会封装成比较容易使用的 container。


对于 dapp 开发者来说基本上是不会有太大差异的。那我记得刚刚听上一个panel,陈平有提到有些人正在使用 difficulty 栏位,那未来怎么办?那首先第一点就是说。如果要用这个栏位来产生乱数,如果是庞大的 DeFi 项目的话,即使是硬分叉之前的,也请不要再用。这其实并不是很安全的乱数产生栏位。我们未来可能会有 EIP 去把栏位职能直接用信标链的 randao 栏位取代。它一样有乱数的功能,但是逻辑上它并不是真的这个难力度的值。所以希望是能够较为滑顺地转移这个使用者体验。


那对于dapp 服务提供者来说,可能要注意的是,工作量证明和权益证明对最终确定性会有所不同。在工作量证明,我们传统上它只是几率上的最终确定性。比如说我们可能类似 Etherscan,也许它设定所有的 block 会从确认中慢慢变成一个一个绿色打勾的模式。就是也许十二个区块对于这个链来说几乎是完全安全的。但是这其实都是几率上,因为你随时可能会有一条更长的链去分叉。那整个链可能会重组过去。


而对于权益证明,我们有三分之二的验证者确认的话,就可以有最终确定性了。那一般情况来说,大概十二分钟会有最终确定性。但服务提供者可能就要根据这些服务的内容去决定到底百分之多少的投票验证了这条交易,可以算是 ok,大家通过的点。


021

好,那大概就到这边。要了解更多的话,可以去参考这些资料。


提问:到时开放提款是提到执行层还是共识层?


回答:目前应该是有功能会直接让用户转移到 EVM 上用户的余额里,也许会可以让信标链上的验证者互相转账,但目前应该是优先让用户可以直接提到 EVM 的状态上,这样用户的使用会比较有弹性。当验证者存款时,可以在提款凭证里指定未来提款到 Eth1 的地址。所以说如果你在存款的时候已经设定好的话,提款的时候就可以直接提到那个地址。



(完)



Hsiao-Wei 的演讲文稿地址:https://notes.ethereum.org/@hww/merge-lightning-talk#/10


论坛链接:https://weeth.io/t/topic/153



ECN的翻译工作旨在为中国以太坊社区传递优质资讯和学习资源,文章版权归原作者所有,转载须注明原文出处以及ETH中文站。若需长期转载,请联系eth@ecn.co进行授权。

聯系郵箱:0xniumao@gmail.com