原文标题:《引介 | 以太坊基金会研究员第四次 AMA(2020 年 7 月)节选:Phase 1 和 Phase 2 相关的问题》
原文作者:Eth2 Research Team
原文编译:阿剑,以太坊爱好者
编者注:2020 年 7 月,以太坊基金会研究员再一次在 Reddit 上举行 AMA(有问必答)活动。本文为问答内容的节选。为便于阅读,下文对回答者的名字都做了缩写,「Justin」代表「Justin Drake」,「Vitalik」代表「Vitalik Buterin」,「Danny」表示「Danny Ryan」。
Phase 1 和 Phase 2 相关问题
问:Phase 1 的进展如何?
Danny:Phase 1 的技术规范相对稳定,并且已经在测试和提炼阶段了。在我的任务清单上最近的一个事情是加入 p2p 组网规范。虽然为 Phase 0 做组网规范的时候花了很多时间,但我预计为 Phase 1 实现的时候会简单很多,因为 p2p 技术栈和通用结构已经在那里了。与 Phase 1 的许多组件一样,工作更多是延伸,而不是重写。
我们已经有很多工程师和团队在了解并开始实现 Phase 1 的组件了。Prysmatic Labs 团队的 Terence 在 Phase 1 的规范上帮了大忙,因为他实现了核心的状态转换规范、发现了许多 bug、还提出了很多非常棒的简化建议。
除此之外,TXRX(PegaSys)团队的 Mikhail 已经在同事 Alex 所写的 java 转译器帮助下开发出了一个 Phase 1 模拟器。就在上周,Mikhail 报告了一个可以用的模拟器,其中有一条信标链和两条分片链,而且分片链成功在信标链上提交了交联。对我个人来说,这实在是太让人激动了 : )
为帮助 Mikhail 的工作,Geth(EF)团队的 Guillaume 一直在开发一个叫做「Catalyst」的项目(是 Geth 客户端的改进版),以将其核心共识逻辑通过一个本地的通信协议发送给 Eth2 客户端,同时 Catalyst 还保留了所有比较重的、用户层面的逻辑(EVM、交易执行、用于生产区块的交易绑定,等等)。这一工作会为我们说的「Phase 1.5」也就是整合当前的以太坊到升级后的 Eth2 系统中的计划铺平道路。我们预计很快 Mikhail 和 Guillaume 的工作会结合在一起,让 Eth2 能够在本地模拟中驱动 Catalyst。
在 Phase 1 中已经没有未解决的问题了,它实在很像是 Phase 0 的插件,所以 Phase 1 的工程任务应该不会特别难,但现阶段大多数客户端团队都把人力物力完全花在启动 Phase 0 上了,所以工程上的重头戏要到今年年末才能开始
Justin:对 Phase 1 设计的研究已经几乎全部做完了,这里是已经形成的规范。这个规范还需要很多打磨(我已经放在自己的任务列表里面了),但是基础已经完成了,研究和工程的风险比较小了。
我说「几乎全部」是因为有可能出现改变我们当前已经撰写好规范的设计。具体来说,我们正在考虑替换掉一些默克尔树数据结构,代之以基于配对的向量承诺(pairing-based vector commitments)(例子见此论文)。基于配对的向量承诺有非常理想的 witness 聚合特性,可以大幅提高 Phase 2 的无状态性性能。基于配对的向量承诺还可以使用相同的密码学来认证分片链区块和分片链状态,让两者在概念上更加协调。
问:从实现复杂性的角度来看,Phase 1 比之 Phase 0 如何?
Justin:Phase 1 比起 Phase 0 会简单很多。粗略说了 Phase 1 只有两个部分:
只有数据的分片链——只有数据的分片链是有意设计的数据结构。只有数据的分片链比起信标链和 Phase 0 就要奠定的许多基础工作(包括 BLS 聚合签名算法、SSZ、GHOST 分叉选择规则、libp2p 组网方法、discv5 节点发现协议)要简单很多。Phase 1 中一个有意思的小工具是一个类似于 EIP-1559 的手续费燃烧机制,也只需要在共识机制中加入几行代码。
托管挑战(custody game)——是一个用来解决数据可用性问题的小工具(请看此视频深入了解)。「game」指的是密码经济学博弈,其复杂性在于「挑战-应对」的交互类型。好消息是,游戏机制一直在不断提炼和简化(例如:请在此处看最新的规范)。托管挑战的另一个不同寻常之处是使用了一些特别的密码学方案,叫做「Legendre PRF」(例子见此处),但不怎么会影响实现的复杂性。
问:那你们认为 Phase 1 的研究中剩下的最有挑战性的部分是什么呢(还是说,所有重大研究问题都已经解决了)?
Dankrad Feist:从我的角度来看,我没看到任何重大问题会直接影响 Phase 1,虽然说世事无绝对(像零知识证明这样的研究领域正如火如荼开展,可能会产生一些极大改善 Phase 0 的观念)。
另外我觉得,当前最有价值的想法都是关于在 Phase 1 到来之后(也就是 Phase 1.5)如何通过提高「已验证状态」的效率来让整个系统效率更高。我仍然希望我们可以提升我们的状态承诺方案的效率,不管是使用多项式承诺还是全新的向量承诺方案,这会带来非常大的好处。
问:那 Phase 2 的现状如何?
Justin:在做了大量的设计空间探索工作和内部讨论之后,我得说一句,随着时间推移,以太坊基金会研究团队越来越不看好 Layer-1 的虚拟机抽象(也就是所谓的「执行引擎」或者「EE」)。相反,Phase 2 很有可能最终会是传统路线,即,各分片共有一个单一的、至高无上的 VM。
至于虚拟机的候选项,有(a)来自 Eth1 的 EVM;(b)WASM 的一个变种。虽然 EVM 是一种很合适的、低风险的退路,我还是希望我们能超越它。5 年来的后见之明使我们觉得 EVM 有很多次优的设计,总的来说,为 DApp 开发者和整个生态系统造成了很大的痛苦。
WASM 有好处(例如,工具丰富、接受度广泛、生态成熟、标准化),都来自于浏览器世界。WASM 似乎也正在成为区块链的标准,因为 Near、Polkadot、Dfinity、EOS 等等都接受了。我的希望是有一个团队,比如 Near 或者 Polkadot 可以克服其中的工程挑战,并证明 WASM 是实际上更好的选择。
Danny:Phase 2 设计空间很大,在过去 18 个月间,包括 Quilt 团队和 eWASM 团队,都做了非常了不起的深入研究,摸清楚了其中的大部分领域。如果你想深入了解,看看他们在 ethresearch 论坛上的帖子:不同程度的抽象设计、跨分片的消息方案、虚拟机权衡、交易格式变更,等等。
从今年开始,大家的优先级有一些转移,变成研究如何让现有的以太坊生态——在「Phase 2」完全实现之前——接入 Eth2 的共识系统。为了达成这个目标,Phase 2 的研究已趋于平静,因为我们都在努力准备 Phase 1 的规范和 Phase 1.5 的研究和开发。
值得注意的是,eWASM 的工作正由 eth1x64 研究开发项目推动,他们的目标是提供最小可用的技术规范和 Phase 2 简单版本的原型。他们已经写了很多很棒的研究帖,探究了其中的可能性。了解一下!
Phase 2 最终会采取的形式仍在未定之天,但有这些研究成果再加上 eWASM 团队的不懈努力,我估计我们会在 Phase 1/1.5 接近投产的时候获得更清晰的概念。
关于跨分片交易
问:我们已经搞清楚怎么实现了吗?
Shard 1 中的一个合约可以在一笔交易中处理完对不同分片的合约调用吗?
用什么标准来决定一个智能合约/一个 EOA 会在哪个分片上?
Danny:Layer-1 的跨分片交易在分片化的 Eth2 系统中确定会通过异步的方式来实现,也就是通过分片链和信标链的交联(crosslink)机制来实现。当分片 A 交联到信标之后,分片 B 就可以使用一个来自分片 A 的收据,来协助 ETH 的转移及合约的互动。
除此之外,还有很多 Layer-2 方案可以支持最优化和最快速的跨分片交易执行。我估计随着时间推演,这种方式会成为常态。
因为跨分片交互的异步属性,要让合约能在一笔内完成对不同分片的调用就行不通了。有一些比如「yanking」或者「commit capabilities」这样的机制也许能为实现你的需求提供帮助。
举个例子,我也许会 yank 一个火车票合约和一个旅馆合约到同一个分片上,然后原子化地完成预定;或者,我可以承诺会同时预订两者,然后当一次 crosslink 完成的时候,原子化地解决这个承诺。
至于账户会放到哪个分片上,当前的计划考虑各分片的自然经济负载均衡。也就是说,每一个账户和合约都可以部署到用户想要的任意分片上。这样就自然会有人追求更低的手续费、或者离一些重要的合约「更近」。我预计,对于合约来说,它会在长期中掩盖掉这一点,使得用户用起来就像在跟一个「以太坊」交互,而不是在跟某个特定的分片交互。这里面有用户体验上的挑战,但没有无法克服的问题。
也就是说,有实力的用户/开发者会对分片选择保持关注,在可行的时候作出战略选择。
Aditya Asgaonkar:
-我们已知跨分片交易从信标链的角度来看是怎么一回事。细节请参考我写的博客文章
-给定跨分片交易的异步设计,你描述的情形就不太可能了
-迄今为止,对这样的标准还没有计划。合约/EOA 应该能创建在任意分片上。
问:那分片之间又如何分摊负载呢?如果大家都对各个合约都希望放到某个特定分片上,因为比如说那里有个很重要的信息输入机制(oracle),或者是那里有个大家都想用的 Uniswap。
Aditya Asgaonkar:当前的预期是 Gas 费用市场会自然根据分片的负载产生一种均衡。直观来说,如果某个分片变得很慢、很贵,那用户会离开这个分片,迁移到另一个更快、更便宜的分片上。如果用户呆在这条手续费更贵的分片上确实有更多的好处,比如该分片上有一个他要频繁访问的合约,那用户自然也会选择留下。
问:那就是说,DApp 很大程度上会让这种选择自动化咯?
Aditya Asgaonkar:从 Phase 2 研究当前的情况来看,不太可能是你说的这样。在我们现在的设想中,任何的跨分片活动(交易、账户/合约迁移)都需要一些用户为目标分片提供相关的数据。这是为了免去一个分片读取另一个分片数据的需要,这样会打破我们追求的可扩展性。
总的来说,我会认为,Phase 2 的设计仍有很大的改动可能,因为这是一个正在进行中的研究领域。我们应该能在未来的 AMA 中更具体地讨论这些事情。