-DannyRyan-
十月底于台北矽谷会议中心举行的?Crosslink2019Taiwan,吸引了来自世界各地的区块链爱好者们齐聚一堂。第一天的议程,邀请到了以太坊基金会的核心研究员DannyRyan,会中分享了以太坊2.0目前的研究方向以及遇到的挑战,演讲的内容主要包含了以太坊2.0的架构,新的分片提案,执行环境以及双向桥接等议题。
一、以太坊2.0的架构
-以太坊2.0架构-
第零阶段
在
以太坊1.0中,使用
工作证明作为
共识机制,并借此产生新的区块。为了要减少工作证明产生新区块时,所需要的大量算力,以及所花时间过长的问题,以太坊2.0将改为
权益证明作为产生新区块的共识机制。
第零阶段会建立信标链,信标链就是以太坊2.0系统层级的链,当从以太坊1.0移转到以太坊2.0时,信标链扮演着非常重要的角色,它是整个系统的基础。
一旦第零阶段完成,将会有两个使用中的以太坊链。以太坊1.0链以及以太坊2.0链。在这个阶段,使用者在1.0链把以太币锁到合约里以注册公钥,2.0链会承认合约内注册的公钥。但是,他们无法将该以太币迁移回去以太坊1.0链上面,为了要执行信标链,你会需要一个信标链的客户端。目前,许多团队正在开发这些客户端。
第一阶段
第一阶段会加入
分片链,在这个阶段主要专注于分片链的数据结构,以及其有效性和共识性,分片链在这阶段只当作数据链,并不会指定分片链状态执行或帐户余额。这比较像是对分片结构进行测试,而不是尝试利用分片来对信标链进行扩展。在这阶段,信标链会把分片链的区块,当作没有结构或意义的位元集合。以太坊1.0和以太坊2.0仍将同时存在,并且在以太坊2.0链上进行测试和迁移。
这个阶段分片链会与信标链交联,每个分片的当前状态—“结合数据根”,会定期记录在“信标链”区块中,作为交联。信标链区块完成后,相应的分片区块将被视为已完成,其他分片知道它们可以依靠这些区块进行跨分片交易。
交联是委员会的一组签名,证明了分片链中的某个区块,可以包含在信标链中。交联是信标链“理解”分片链更新状态的主要方式。交联还用作异步跨分片通信的基础结构。
信标链在每个时段中的每个分片,随机选择分片验证者,分片验证者只是用来在每个区块的内容上达成一致,他们通过交联证明分片的内容和状态,分片中包含什么内容都没有关系,只要所有委员会都达成共识,并定期更新分片上的信标链即可。
第二阶段
第二阶段会将所有功能开始结合在一起,在第二阶段,会完成分片化,分片链从简单的数据容器过渡到结构化链状态,并将重新引入智能合约。每个分片将管理基于?
eWASM的虚拟机。它会支援帐户、合约、状态,以及Solidity中我们熟悉的其他抽象化,预计在第二阶段之前或第二阶段开发时,大家熟悉的工具需要转换成支持eWASM的版本,以太坊1.0及以太坊2.0可借由双向桥接来互通,会有可扩展的Layer1执行,借由无状态执行,来提高执行速度。
二、新的分片提案
-新的分片提案-
以太坊2.0原提案所运作的机制,是以每个时期为单位,来进行交联的动作,每个链上有1024个片,当需要跨分链交易时,由于是每个时期进行交联,会有较大的延迟时间;新提案更新为每个时段都进行交联的动作,并减少片的数量为32个,来降低跨分片交易时的延迟时间,每个时段都进行跨分片交易。
新提案的优点
对于以太坊2.0新提案的优点,首先新提案的片数量由1024个降至32个,降低了运算的复杂度,因为跨分片时间,从一个epoch降到一个slot,时间缩短的好处,是给DApp开发者及使用者更好的体验。在原本以太坊2.0的设计中,需要复杂的手续费市场模型与乐观解决方案,来实现跨分片交易手续费。但新提案改变了执行环境的设计,使得原本的复杂模型可以被大幅简化。
新提案的交易
新提案只需要比之前的提案更少的
片,就可以启动交易,可能会有更长的分片时段,更大的
分片区块,目前更新到第零阶段,第零阶段测试网的测试,可能会有所延迟,新提案减少了第零阶段发布所需的时间。
目前的想法
希望能给开发者及使用者更好的体验,使用较大的分片区块,来改进数据可用性,以及要降低开发延迟和第零阶段发布所需花费的时间。
三、执行环境
-以太坊1.0简易架构图-
在之前设计的以太坊2.0和以太坊1.0中,状态在共识机制里,扮演着非常重要的角色,共识机制会随时去读写所有的状态,不管是执行的概念、交易的概念、帐户的概念、树状结构的概念、以及所有在数据结构中的概念,都深深地融入共识中。
上图是以太坊1.0的简易架构图,在图中我们可以看到共识机制及一条链,共识机制里包含了状态及一个执行引擎,状态里包含了状态树,在这里的执行引擎使用硬编码规则,里面包含了执行交易、帐户模型和帐户结构,我们可以看到图的右边有一条链,链上面有交易数据,在以太坊1.0中,我们会在交易数据上执行共识机制,去修改和更新状态。
执行环境是一个单独的虚拟机器,在以太坊1.0中,会有一个特定的帐户模型,以及事先定义好的操作码,矿工机制和状态根,以太坊虚拟机就是一种特定的执行环境。
如果遵循?EIP的建议,开发者总是在要求新的操作码,或着是更改矿工成本来支援他们的应用,像是Plasma和Zkrollup这样的例子有很多,这样就会需要修改EVM1.0的执行环境,才能支援到他们的应用程式。
但是在以太坊2.0的第二阶段中,我们可以支持多个执行环境。也可以有多个状态根,不同的帐户模型等。举个例子,你可以定义一个脸书币执行环境,以便在以太坊2.0上运行Libra。或者,您可以定义一个比特币执行环境,这样就可以在以太坊2.0上运行比特币。
-以太坊2.0简易架构图-
在以太坊2.0简易架构图中我们可以看到状态根,它可能是32Bytes的Blob,上面有WASM的执行码,可以在使用者层级中去做细部设定。图片右边有一个链,链上有一般的交易数据以及见证,见证实际上显示在数据库的区块中,你需要针对该状态而不是数据库执行该笔交易,而且还需要证明数据对于当前状态根是有效的。举个例子,如果我们要在帐户A和帐户B之间传递数值,假设从帐户A移动5以太币到帐户B,我们不能直接说帐户和余额是确实可用的,在过程中,我们需要加入见证数据,来证明两个帐户当前的状态,当执行码正在执行交易数据时,状态根可以修改和更新状态树。
执行环境并不是共识机制预先定义好的,他可以在使用者层级上去做新增,我们也可以把以太坊1.0复制一份到以太坊2.0的执行环境中,将现有的状态根放入EVM直译器,用默克尔见证验证器来当作他的执行码。
在原先的提案中,状态和共识息息相关,且执行帐户和共识中包含了状态树结构;而在新的提案中,执行环境为无状态模型,高度抽象化的,并且它的可扩展性,相较原先的提案高出非常多。
执行环境的优点
执行环境有许多优点,相较于旧系统,它也许可以更快地将产品推向市场,因为我们不必等到核心共识推出之后,才研究并发展这个概念,在Layer1会有更少的阻碍,它可以在各种应用上,使用具高扩展性及数据可用性的执行引擎,所以未来会长期使用这个核心基础层。
执行环境的设计完成,让以太坊1.0到以太坊2.0的迁移,有了更清楚的方向,使用执行环境比较不会有技术随时间迁移而过时的问题产生。
执行环境交易
对于执行环境交易,开发者及使用者可能会觉得太抽象,对什么是执行环境感到困惑,像是这一层加了什么?应该在这一层做什么?谁应该写执行环境?而且相关的开发规范会趋向更严格的形式。
虚拟机可能会有潜在的碎片化问题,进而影响到交易速度。
目前的想法
目前所有的研究都是正向发展的,还有充裕的时间,尝试并更好地了解设计空间,未来会多花一些时间,在建立更好的执行环境通讯机制上面。整体来说,现阶段的进度,对于未来是重要的里程碑。
四、双向桥接
最后一个主题,主要讨论开发双向桥接是否是值得的?团队可能可以在什么时间点,来去做双向桥接?
-单向桥接示意图-
讲者先前提过的提案中,以太坊2.0最初有一个单向桥接,所以你可以从以太坊1.0转换到以太坊2.0,但是最初的架构不允许回传,这主要是出于几个原因,这需要我们将以太坊1.0的发展与以太坊1.0和以太坊2.0的硬分叉紧密结合,并把两个系统置于互相影响的风险之中,因此团队认为以太坊2.0在发布且稳定之前,将两边紧密耦合是不明智的。
单向桥接的问题
月初在日本大阪举行的Devcon5上,桥接的问题受到了广泛的讨论,原提案的
单向桥接模式,会有验证者流动性的问题,而且更重要的是,它可能会引发以太坊1.0和以太坊2.0之间的可替代性问题,如果我们允许以太坊2.0上的流动性,那么某种形式的转移机制,就会在将以太坊1.0分叉到以太坊2.0之前,或着是在双向桥接之前产生,交易所中很可能会同时有两个币,团队和整个验证者社区都很担心这个问题,目前正在找寻减轻这个问题的方法。
另外也希望鼓励大家,在这些早期阶段进行验证,但是在早期阶段进行验证,肯定会有很高的风险,因为存在未知的锁定期,因此也希望找到方法减轻这种风险。
双向桥接
-双向桥接示意图-
双向桥接目前可能的路线有两条,一种是在以太坊1.0上面,建立以太坊2.0的轻节点;另一种是在以太坊1.0上运作以太坊2.0的全节点。
路线A:在以太坊1.0上,建立以太坊2.0轻节点
-路径A示意图-
这个路线需要在实际的EVM中支援?BLS-12–381,会花费很多开发时间,而且它只提供轻量客户端层级的安全性。当验证者在2.0链上产生提款交易的收据时,我们会拿到以太坊2.0的轻量客户端证明,一但收收据的区块在以太坊2.0上敲定了,你就可以在以太坊1.0的合约上提款。不过,这可能不是团队最终选择的路线。
路线B:在以太坊1.0上,运行以太坊2.0的全节点
-路径B示意图-
第二种路线,会在以太坊1.0的节点上,运行以太坊2.0的全节点,这个路线允许我们使用敲定性机制,因此,我们不仅可以使用这种机制,来促进以太坊1.0和以太坊2.0之间的转移,我们也可以利用验证者的安全性,来保护以太坊1.0链,我认为大家对此感到非常兴奋,这通常被称为“敲定性小工具提案”。
但是还是需要一种机制,去输出以太坊2.0状态根在以太坊1.0上,所以有一些以太坊2.0社群的讨论,在研究如何实作它,可能会包含矿工机制。
输出以太坊2.0状态根的另一个优势,是以太坊1.0有稳固的机制可以实现它,以及同时拥有以太坊2.0的高扩展性及数据可用性,可以做一些有趣的应用,像是ZKRollup和OptimisticRollup。
双向桥接的优点
如果你在交易所中,列出以太坊1.0以太币和以太坊2.0以太币,它们的价格应该一样。如果不一样,你可以用较低的价格买一个以太币,把他发送到桥上,然后以较高的价格获得另一种以太币,并把它出售。这种套利会使它们的价格保持不变,这样会让用户,验证者和开发人员感到困惑,双向桥接可以防止两边的货币借由套利的形式,来互相转换。
双向桥接的交易
但是还是有一些权衡在这里,尽管对以太坊2.0的设计非常有信心,团队还是希望在影响到以太坊1.0的安全性和风险状况之前,先在生产环境中得到验证。
双向桥接是一种紧密耦合的共识机制,对于两边链的攻击及产生的问题,都会影响到另一边的链,协定的开发势必会非常烦琐,我们需要考虑到每个协定的安全性,如果我们越早开发协议,那么我们实际上的进度就越少,当每个障碍随着时间发展,它们就会相互阻碍,这让以太坊1.0在这一点上的开发速度比以太坊2.0慢得多,因为实际用户群存在很多担忧,并且需要大量的协调,才能在我们的生产网络上获得硬分叉。
所以,如果我们越早将这些东西连在一起,就可能会减慢以太坊2.0的开发和分叉周期,并且这增加了一些额外的开销,换句话说,验证我们可以链接客户端的开销是相对的。
目前的想法
我们应该会在加入验证者流动性之前启用桥梁,但是会等到第一阶段的产品稳定之后再开放;同样的,有很多相关的研究都在同时进行,这可能会影响到,何时完成这个操作。
名词解释:
EIP:EIP是以太坊平台的标准,其内容包含了核心协议的规范,客户端API以及合约标准。
epoch:在以太坊2.0中,epoch指的是时长6.4分钟的时间单位,每个epoch包含32个slots。
Slot:每个时段为12秒,不一定每个时段都能产生区块,而epoch中最后一个slot称为边界时段,或称为检查点?。
Solidity:Solidity是一种合约导向的语言,主要用来开发智能合约。
Consensus:共识机制是区块链为了在各节点间达成共识,所开发的演算法。
Validator验证者:验证区块的节点,由信标链在每个时段为每个片随机产生。
Gas:交易所需的费用,当Gas消耗完时,智能合约会终止并进行Rollback。
EVM:EVM中文为以太坊虚拟机,是一种轻量级的虚拟机环境,Eth1.0中智能合约的运行环境为EVM。
Dapp:在以太坊中,基于智能合约的应用都称为去中心化的应用程序,即Dapp。
ether:以太坊的货币名称。
Finality:「敲定性」是Casper中的概念,是一种透过验证者投票,在链上产生不可回朔的检查点的机制。
Libra:脸书提出的加密货币,预计于2020年发行。
MerkleTree:?MerkleTree由计算机科学家RalphMerkle所提出,中译为默克尔树,因为是由哈希函数形成的树。
参考:?
EthereumImprovementProposals
参考:?Two-waybridgesbetweeneth1andeth2
参考:?Ethereum2.0Phases
参考:?ethfans
参考:?eth2quickupdate
感谢DannyRyan、ChihChengLiang、JuinChiu、Hsiao-WeiWang、YahsinHuang、和JerryHo。
原文链接:?https://medium.com/taipei-ethereum-meetup/eth2-0-roadmap-70e1c23f139f作者:?FrankLee
本文首发于TaipeiEthereumMeetup的Medium站,EthFans经授权转载,为符合大陆读者的习惯,进行了简繁转换并将部分术语改为习惯用法。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。