以太坊基金会5问5答:Phase 1和Phase 2有哪些进展?_WAS:WAS币

编者注:2020年7月,以太坊基金会研究员再一次在Reddit上举行AMA活动。本文为问答内容的节选。为便于阅读,下文对回答者的名字都做了缩写,“Justin”代表“JustinDrake”,“Vitalik”代表“VitalikButerin”,“Danny”表示“DannyRyan”。

Phase1和Phase2相关问题

问:Phase1的进展如何?

Danny:Phase1的技术规范相对稳定,并且已经在测试和提炼阶段了。在我的任务清单上最近的一个事情是加入p2p组网规范。虽然为Phase0做组网规范的时候花了很多时间,但我预计为Phase1实现的时候会简单很多,因为p2p技术栈和通用结构已经在那里了。与Phase1的许多组件一样,工作更多是延伸,而不是重写。

我们已经有很多工程师和团队在了解并开始实现Phase1的组件了。PrysmaticLabs团队的Terence在Phase1的规范上帮了大忙,因为他实现了核心的状态转换规范、发现了许多bug、还提出了很多非常棒的简化建议。

除此之外,TXRX团队的Mikhail已经在同事Alex所写的java转译器帮助下开发出了一个Phase1模拟器。就在上周,Mikhail报告了一个可以用的模拟器,其中有一条信标链和两条分片链,而且分片链成功在信标链上提交了交联。对我个人来说,这实在是太让人激动了:)

为帮助Mikhail的工作,Geth团队的Guillaume一直在开发一个叫做“Catalyst”的项目,以将其核心共识逻辑通过一个本地的通信协议发送给Eth2客户端,同时Catalyst还保留了所有比较重的、用户层面的逻辑。这一工作会为我们说的“Phase1.5”也就是整合当前的以太坊到升级后的Eth2系统中的计划铺平道路。我们预计很快Mikhail和Guillaume的工作会结合在一起,让Eth2能够在本地模拟中驱动Catalyst。

在Phase1中已经没有未解决的问题了,它实在很像是Phase0的插件,所以Phase1的工程任务应该不会特别难,但现阶段大多数客户端团队都把人力物力完全花在启动Phase0上了,所以工程上的重头戏要到今年年末才能开始

Justin:对Phase1设计的研究已经几乎全部做完了,这里是已经形成的规范。这个规范还需要很多打磨,但是基础已经完成了,研究和工程的风险比较小了。

我说“几乎全部”是因为有可能出现改变我们当前已经撰写好规范的设计。具体来说,我们正在考虑替换掉一些默克尔树数据结构,代之以基于配对的向量承诺。基于配对的向量承诺有非常理想的witness聚合特性,可以大幅提高Phase2的无状态性性能。基于配对的向量承诺还可以使用相同的密码学来认证分片链区块和分片链状态,让两者在概念上更加协调。

问:从实现复杂性的角度来看,Phase1比之Phase0如何?

Justin:Phase1比起Phase0会简单很多。粗略说了Phase1只有两个部分:

只有数据的分片链——只有数据的分片链是有意设计的数据结构。只有数据的分片链比起信标链和Phase0就要奠定的许多基础工作要简单很多。Phase1中一个有意思的小工具是一个类似于EIP-1559的手续费燃烧机制,也只需要在共识机制中加入几行代码。

托管挑战——是一个用来解决数据可用性问题的小工具。“game”指的是密码经济学博弈,其复杂性在于“挑战-应对”的交互类型。好消息是,游戏机制一直在不断提炼和简化。托管挑战的另一个不同寻常之处是使用了一些特别的密码学方案,叫做“LegendrePRF”,但不怎么会影响实现的复杂性。

问:那你们认为Phase1的研究中剩下的最有挑战性的部分是什么呢?

DankradFeist:从我的角度来看,我没看到任何重大问题会直接影响Phase1,虽然说世事无绝对。

另外我觉得,当前最有价值的想法都是关于在Phase1到来之后如何通过提高“已验证状态”的效率来让整个系统效率更高。我仍然希望我们可以提升我们的状态承诺方案的效率,不管是使用多项式承诺还是全新的向量承诺方案,这会带来非常大的好处。

问:那Phase2的现状如何?

Justin:在做了大量的设计空间探索工作和内部讨论之后,我得说一句,随着时间推移,以太坊基金会研究团队越来越不看好Layer-1的虚拟机抽象。相反,Phase2很有可能最终会是传统路线,即,各分片共有一个单一的、至高无上的VM。

至于虚拟机的候选项,有来自Eth1的EVM;WASM的一个变种。虽然EVM是一种很合适的、低风险的退路,我还是希望我们能超越它。5年来的后见之明使我们觉得EVM有很多次优的设计,总的来说,为dApp开发者和整个生态系统造成了很大的痛苦。

WASM有好处,都来自于浏览器世界。WASM似乎也正在成为区块链的标准,因为Near、Polkadot、Dfinity、EOS等等都接受了。我的希望是有一个团队,比如Near或者Polkadot可以克服其中的工程挑战,并证明WASM是实际上更好的选择。

Danny:Phase2设计空间很大,在过去18个月间,包括Quilt团队和eWASM团队,都做了非常了不起的深入研究,摸清楚了其中的大部分领域。如果你想深入了解,看看他们在ethresearch论坛上的帖子:不同程度的抽象设计、跨分片的消息方案、虚拟机权衡、交易格式变更,等等。

从今年开始,大家的优先级有一些转移,变成研究如何让现有的以太坊生态——在“Phase2”完全实现之前——接入Eth2的共识系统。为了达成这个目标,Phase2的研究已趋于平静,因为我们都在努力准备Phase1的规范和Phase1.5的研究和开发。

值得注意的是,eWASM的工作正由eth1x64研究开发项目推动,他们的目标是提供最小可用的技术规范和Phase2简单版本的原型。他们已经写了很多很棒的研究帖,探究了其中的可能性。了解一下!

Phase2最终会采取的形式仍在未定之天,但有这些研究成果再加上eWASM团队的不懈努力,我估计我们会在Phase1/1.5接近投产的时候获得更清晰的概念。

关于跨分片交易

问:我们已经搞清楚怎么实现了吗?Shard1中的一个合约可以在一笔交易中处理完对不同分片的合约调用吗?用什么标准来决定一个智能合约/一个EOA会在哪个分片上?

Danny:Layer-1的跨分片交易在分片化的Eth2系统中确定会通过异步的方式来实现,也就是通过分片链和信标链的交联机制来实现。当分片A交联到信标之后,分片B就可以使用一个来自分片A的收据,来协助ETH的转移及合约的互动。

除此之外,还有很多Layer-2方案可以支持最优化和最快速的跨分片交易执行。我估计随着时间推演,这种方式会成为常态。

因为跨分片交互的异步属性,要让合约能在一笔内完成对不同分片的调用就行不通了。有一些比如“yanking”或者“commitcapabilities”这样的机制也许能为实现你的需求提供帮助。

举个例子,我也许会yank一个火车票合约和一个旅馆合约到同一个分片上,然后原子化地完成预定;或者,我可以承诺会同时预订两者,然后当一次crosslink完成的时候,原子化地解决这个承诺。

至于账户会放到哪个分片上,当前的计划考虑各分片的自然经济负载均衡。也就是说,每一个账户和合约都可以部署到用户想要的任意分片上。这样就自然会有人追求更低的手续费、或者离一些重要的合约“更近”。我预计,对于合约来说,它会在长期中掩盖掉这一点,使得用户用起来就像在跟一个“以太坊”交互,而不是在跟某个特定的分片交互。这里面有用户体验上的挑战,但没有无法克服的问题。

也就是说,有实力的用户/开发者会对分片选择保持关注,在可行的时候作出战略选择。

AdityaAsgaonkar:我们已知跨分片交易从信标链的角度来看是怎么一回事。细节请参考我写的博客文章。给定跨分片交易的异步设计,你描述的情形就不太可能了。迄今为止,对这样的标准还没有计划。合约/EOA应该能创建在任意分片上。

问:那分片之间又如何分摊负载呢?如果大家都对各个合约都希望放到某个特定分片上,因为比如说那里有个很重要的信息输入机制,或者是那里有个大家都想用的Uniswap。

AdityaAsgaonkar:当前的预期是Gas费用市场会自然根据分片的负载产生一种均衡。直观来说,如果某个分片变得很慢、很贵,那用户会离开这个分片,迁移到另一个更快、更便宜的分片上。如果用户呆在这条手续费更贵的分片上确实有更多的好处,比如该分片上有一个他要频繁访问的合约,那用户自然也会选择留下。

问:那就是说,dApp很大程度上会让这种选择自动化咯?

AdityaAsgaonkar:从Phase2研究当前的情况来看,不太可能是你说的这样。在我们现在的设想中,任何的跨分片活动都需要一些用户为目标分片提供相关的数据。这是为了免去一个分片读取另一个分片数据的需要,这样会打破我们追求的可扩展性。

总的来说,我会认为,Phase2的设计仍有很大的改动可能,因为这是一个正在进行中的研究领域。我们应该能在未来的AMA中更具体地讨论这些事情。

点击:原文链接

作者:Eth2ResearchTeam

翻译:阿剑

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:0ms0-13:806ms