37

V神最新演讲:万字长文透露以太坊2.0重大升级!

 5 years ago
source link: http://www.huoxing24.com/newsdetail/20181112104529256662.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

m2Ufmq6.jpg!web

编者按: 本文为 Vitalik 在 Devcon4 演讲的翻译稿。英文原文从录音中听写而出,译文或随之有不确定之处,敬请见谅。 原文链接: https://www.youtube.com/watch?v=Km9BaxRm1wA

作者:Vitalik; 翻译: Elisa, 闵敏, 阿剑

祝贺中本聪共识诞生 10 周年!

今天我的演讲主题是以太坊 2.0,但我希望呈现的不仅是以太坊 2.0 在技术上的要点,还包括为什么我们需要推进以太坊升级,我们会做哪些升级,又经由哪些尝试走到今天。

那么,什么是以太坊 2.0 呢?

几年来,我们孜孜不倦地讨论和研究系统的一些特性,也在 App 开发上投入了大量精力,最终,它们汇集在一起,组成一个融洽的世界。这些特性包括权益证明算法,Casper;可扩展性,分片;虚拟机升级,EWASM;跨链合约上的强化;协议经济模型改进,以及非常多促成逻辑层分散化的改进。重要话题还真不少。

我们做过哪些探索?

1、PoS

权益证明(PoS)的相关研究始于 2014 年。我在一月份发表的这篇博文(Slasher: Punitive Proof-of-Stake Algorithm)阐述了一个叫做罚没者(Slasher)的算法,引入了权益证明算法中最基础的概念:如果你违反协议并且被发现了,(这是可以被证明的),你就要接受惩罚;这一方法可以用来提升安全性。但在那时,正如你可以在幻灯片中看到的,我相信 Slasher 是一种非常有用的建构,可以让权益证明“挖矿”的武器库变得更充实,并为我们提供更强力的理由切换到权益证明。当然我们还没这么做。

因此,在那时,要不要 PoS 当成我们的方向还未有定论。但随着时间推移,这一点变得清晰很多。

2、可扩展性

在 2014 年,首先,我们探讨了一系列有趣且重要的观念,比如“Proof of proof of work”,这是一种提升可扩展性的建议;“中心轮辐链模型(Hub and spoke chains)”,让一条链成为中心,一系列的链成为附属,这其实就是一个非常早期的可扩展性和分片提议,尝试提高区域内交易的可扩展性,但并不能提高全局交易(即从某条链到另一条链)的可扩展性;“超级立方体模型(Hypercubes)”,立方体有 12个维度而不是 3 个,因此我们可以达到比中心轮辐模型更强的可扩展性。

现在,出于多个原因,这些观念都被抛弃了;不过,真的有人弄了一场浩大的 ICO 来开发它们,真高兴有人愿意尝试(观众笑)。

那么在 2014 年我们究竟有没有取得正确的进展呢?

2014 年的进展

有的。我们得到了一个概念叫做“弱主观性(Weak Subjectivity)”,某种程度上来说,这是一个半形式化的安全模型,尝试探讨 PoS 保证金的罚没条件,以及在什么条件下 PoS 是安全的。同时,我们也越来越确定,具有更强安全属性的 PoS 算法是存在的,所以点点币(Peercoin)及其变种是真的有可能的。我们也逐渐意识到,有一些可扩展性策略能够通过随机抽样跟权益证明算法结合,但我们不知道具体怎么做。

那时候我们确定了一个路线图,Vinay Gupta 在 2015 年 3 月写了一篇很棒的博文,列举了当时来看以太坊路线的 4 个主要阶段。第一阶段:Frontier,就是我们一开始启动项目时所处的阶段;第二阶段:Homestead,从 alpha 走向 beta 版;第三阶段,Metropolis(直译为“大都会”),那时候的预期是开发 Mist 和用户交互界面并提升用户体验。但自那时以来,我们的注意力转向了实现更强的密码学技术支持,而交互界面的提升变成了平行的目标。第四阶段:Serenity,实现权益证明。从今往后,我愿意称之为以太坊 2.0,当然我也不会拒绝用 Shasper 来代指。为免混淆,我们还可以称为“Serenity”。

2015-16:低谷

然后,我们就迎来了一个低谷:我们在解决 PoS、可扩展性中的一些核心问题上遭遇了一系列失败,Vlad 悄悄地暂停了他在 Casper CBC 中的所有工作。

我们得到的最有意思的观念之一便是“投注共识(Consensus by Bet)”:参与者对下一次会敲定哪个块打赌,而一旦某些人下注,他们下注的事实本身便会成为其他人下注的考量因素。这样的话,在某种意义上我们就产生了一个递归公式,随着时间推移,下注的人会越来越多,哪个块会被敲定也会变得越来越明显;在对数轮以后,每个人都会将自己所有的权益都投完,这样我们就达到了去定性。我们沿着这条思路走得相当远,为它创建了完整的概念证明,你可以(在幻灯片上)看到确定化的过程,还有签名函数什么的。我的意思是,我们在这里花去了绝大部分时间,但然后整个思路就停滞不前了,主要原因是我们认识到了哪种 BFT 启发型共识算法可以真正安全地工作。

存储租金

Rent 的观念其实是这样的:与其为使用存储空间收取一次性的高额费用,我们可以逐步收取费用。因此,以每天、每个区块或其它方式为计,一旦特定的存储空间被占满,你就需要为此支付一定的 ETH。这里写的是 EIP 103,但实际上应该是 EIP 35 才对,因为 35 才是 issue 号码。这是一个初步的想法,试图形成一个正式的概念。从那时开始,我们在如何才能最好地利用租金这一点上迭代了很多想法。

2015 年的可扩展性论文

这一篇论文的目标是形成二次方分片和超二次方分片的概念,但它真的太复杂了。它会包含一些很复杂的激化博弈(escalation game)。整个观念是受到 escalation 在法律系统中的作用的启发(我知道 Joseph 的哲学非常喜欢使用这种类比),但我试图把它用到基础层。里面还包含“深度状态逆转“,就是说,如果有些事情真的弄错了,那么大量的状态可以在将来进行深度回滚。真的很复杂。

Ufaimqz.jpg!web

实际上,其中一个我们无法完全把握、但在逐步接近的根本问题,就是所谓的”渔夫两难“(Fisherman's Dilemma)。这是分片研究中的一个非常根本的概念,描述了状态的扩展性执行(scaling execution)、程序的扩展性执行与数据扩展可得性(scaling availability)之间的巨大区别。基本问题是这样的:如果要运行程序,你可以让人们承诺答案是什么,然后你可以用挑战游戏、用二分法搜索确定在哪一步上谁算错了(译者注:即每次都只运行一半的运算步骤,比对结果,来发现双方到底在那一步上算错了),确认事实后就可以惩罚那些给出错误答案的人。而数据可用性的问题是:无论挑战游戏如何运行,你都可以作弊,因为你可以完全不公开任何数据,直到机制来检查你有没有公开数据,然后你只要公开机制要检查的那部分数据就可以了。

qErErmE.jpg!web

这已经证明是许多可扩展性算法中的一个非常重大的问题。我过去还写了一篇博文来讨论这个问题,你们可以搜索 A Note on Erasure Coding and Data Availability,里面讲到了更多问题的细节。这也是拖慢我们进度的其中一个原因。但即便如此,我们还是很高兴能推动以太坊继续前进,我们走在自己的道路上!

嗯,然后,就出了 The DAO 事件(观众笑)。这也没什么,也没别的问题了。慢着,好吧,又出了个”上海 DoS 攻击“(观众反应有点慢)。

总而言之,The DAO 事件、DoS 攻击,最终耽误了很多人的事件和精力,甚至长达 6 个月。不过,我们还是在前进,EWASM 在前进,关于虚拟机的研究在推进,我们还做了一个替代性版本 EVM1.5。而且大家也多角度、更深入地理解了更优区块链算法的形态。

砥砺前行

然后,我们就非常迅速地取得了一系列重大进展。在这段时间,我们在很多不同的研究领域都有所收获:一些是围绕权益证明、希望让我们的共识层更加高效的;一些是围绕可扩展性,希望让我们的基础层共识可以分片;一些是尝试提高虚拟机效率的;还有一些是围绕账户抽象的,账户抽象可以让用户自己选择要使用哪种签名方案,这样可以获得后量子时代的安全性,并且让隐私解决方案变得更简单;还有围绕协议层经济模型的。当然所有这一切都还在生长。

Casper FFG

在 2017 年伊始的某个时间点,我们开发了一个协议,并且起了个谦虚的名字:最小罚没条件(Minimal Slashing Condition)。最小罚没条件转化了 PBFT 类型的传统拜占庭共识;在 80 年代,Lamport、Shostak 等人便创建了同类的材料,但我简化了算法并把它放到了大多数区块链的环境中。

基本的观念如下:在一条区块链上会不断产生新的区块,你可以通过连续的合并和观察来获得一种流水线版的效率:每一轮开始时你都会为本轮添加数据,而在下一轮中人们可以确认这些数据中的一部分;我们可以从中获得巨大的效率提升(译者注:此即 FFG 的核心思想,一旦在某轮中某区块获得 2/3 的验证者同意,该区块的父块便被敲定)。

一开始的最小罚没条件有 6 条,然后我减少到 4 条,而一年后,我们终止合并 prepare 和 commit,这便是 Casper Friendly Finality Gadget(FFG,友好的确定性小工具)。

分片

上一年的 Devcon 上我演示了这种新的分片设计,就是保持主链不变,然后创建分片作为某种意义上的 Layer-2 系统挂载在现有的主链上,确认足够可靠之后再升级成为 Layer-1。

Casper CBC

然后是来自 Vlad 的 Casper CBC ~ 论文。

Casper FFG POC

泰国时间 2017 年12 月 31 日 23:40,那时候我们恰好在泰国,Casper FFG 概念验证横空出世。那时候我们真的非常想确定,一种 PoW/PoS 混合共识的技术详述到底是什么样子的,而这一种混合共识会使用一部分来自 Casper FFG 中的观念,还有一部分传统拜占庭容错共识所启发的观念,并加载在现有的工作量证明链上。这会是一种可以让我们快速转向混合共识的机制,并且对现有区块链造成的冲击也最小,然后理论上我们将有可能升级为完全的权益证明。

我们同样在这条路上走了很远,我们还做了一个 Python 测试客户端,用不同的 VPS、服务器和电脑通信来做测试。

Shasper

与此同时,我们在分片上也取得了许多进展。我们不断完善分片的技术详述,最终我们在 18 年 3 月的台北组织了一次集体休整。在这里很多想法开始冒出来,如何实现一条分片区块链看起来变得明朗起来。对,看起来变得明朗起来。

在 6 月份,我们做了一个非常困难,但我个人认为从长远来看非常有价值的决定。我们发现:咦,这边我们有几支团队在实现混合权益证明,他们试图将 Casper FFG 开发为一个现有链上的智能合约,对分叉选择规则做调整;另一边,有几支完全隔离的团队,要开发一个验证者或者说管理者合约(后来被重命名为链上分片管理者合约),在这个基础上开发分片系统;他们之间是没有交流的。在分片这一边,最终变得越来越清楚的是:让分片系统的核心放在 PoS 链上会给我们带来更高的效率;变成 PoW 链上的一个合约,我们就不得不处理 EVM 的开销,应付 Gas 机制,应付不可预测的 PoW 区块时间;PoS + 分片 可以带来更快的出块时间等一系列好处。

然后我们就意识到,为什么这边有个团队在开发 PoS,那边又有一个 PoS 项目?为什么我们要做重复工作呢?然后我们决定要把两边的工作合并起来。这个决定给之前的许多工作判了死刑,但意义深远:我们会在一起工作,开发同一份技术说明,同一个协议,而我们可以同时让 Casper PoS 和分片相得益彰。

总而言之,与其这边有一个目的,那边有另一个目的,然后我们要努力分辨如何合并两边的成果,我们还不如在起点上多花一些时间,然后走向一套权益证明和分片区块链。(掌声)

其它

与此同时,我们花了不少时间讨论分叉选择规则,最终我们越来越接近也越来越深入地理解分叉选择规则;GHOST 算法虽然一开始是为工作量证明设计的,但因为一系列原因,我们重新提议用于权益证明。

Justin 开始研究可证延迟函数(Verifiable Delay Funciton,VDF),我们在斯坦福有个工作室,Justin 一直在跟那里的许多研究者合作。

关于如何实现抽象和租金,我们也形成了更多想法。因为一些理由,我们决定将存储租金重命名为存储维护费。

在研究方面,我们正在研究跨分片交易,比如 csoss-shard-yanking,我们是普遍化传统分布式系统中的一些概念,用到异步的跨分片环境中;还有资源定价的论文,包括最优化费用市场,如何收取存储维护费,不同设计之间的权衡。Casey 还写了这篇文章讨论同步假设下的跨分片交易。当然,CBC 的研究也扩展到了,分片领域,对了,这个真的不叫 Valding,Vlad 很讨厌这个词。还有开发,我们在以太坊 2.0 开发推进中使用的策略是:追求创造性的多客户端去中心化开发。这不仅仅是因为我们有去中心化的追求,这也是一套非常实用的策略,就是打赌别的团队都不会有你干得漂亮;此外,上海事件让我们醒悟,如果某个客户端出了问题而别的客户端没有,整个网络可以更好地运行;顺便,还让整个生态系统的开发更不依赖于基金会本身。基金会真正开发的客户端是 Python 客户端,Python 在性能上有内在的限制,这也给了大家激励去运行由 Prysmatic 创造的客户端、Lighthouse、Status 还有 Pegasus 以及其他如雨后春笋般冒出的团队开发的客户端。

即将到来的 Serenity

那么就下来,我得说,即将到来的,不能被称为 Shasper。Serenity 即将启航!

Serenity 是什么?

首先,Serenity 是继 Frontier、Homestead 以及 Metropolis 之后的第四个阶段。当然 Metropolis 被分为拜占庭(Byzantium)和君士坦丁堡(Constantinople)两个阶段,并且君士坦丁堡升级就快启动了。

其次,它是我们在所有这些不同领域长达四年的研究的集大成者,包括 Casper(不仅是混合共识,还包括 100% 纯粹的 Casper)、分片、EWASM 以及所有这些协议研究的观念。

然后,这是一种新的区块链。从数据结构上来说是如此,但它会与当前的工作量证明区块链保持一定的联系。那么,比如,PoS 链可以感知到 PoW 链的区块哈希值,你可以将 Ether 从 PoW 链上转移到 PoS 链上。这是一套新系统,也是一套相互连接的系统,最长远的目标是:当这个新系统足够稳定的时候,所有现有区块链上的应用可以被存入新系统中某个分片上的合约,然后有一个用 EWASM 写成的 EVM 解释器。这一点还没有最终确定,但从当前来看,这差不多就是我们的路线图了。

再次,Serenity 会成为世界计算机,而不是像 1999 年的智能手机一样,每秒只能处理 15 笔交易,勉强能玩一下贪吃蛇。

最后,Serenity 仍会是去中心化的,我们还希望在一些维度上,它可以比现有的区块链更加去中心化。举个例子,作为一个信标链的验证者,(从当前来看)你的存储要求可能是小于 1GB,比起今天你需要 8GB 来存储状态,或是像网上的流言说的那样存储以太坊区块链需要 1.8TB,都会好很多。

期望的阶段

Phase 0:权益证明的信标链。从某种角度来说,PoS 信标链是一个区块链仓库,存储着所有信息,但它自身是哑默的。在信标链上会有一些验证者(validator),这些验证者会运行 PoS 算法;它就像是介于测试网和主网之间的东西,它肯定不是测试链,因为你可以质押真正的 Ether 进去并获得真正的 Ether 奖励,但它也不是主链,因为上面没有应用,所以如果它崩溃了,人们也不会哭爹喊娘,不会像上海 DoS 攻击事件时那样痛哭流涕。

Phase 1:作为数据链的分片链。这就是分片会有的角色。这是一个简化的版本,也就是说我们并不对状态做分片,而是对数据做分片;你可以把数据放到链上,然后尝试运行一个自己的状态执行引擎。实际上,最容易分片的就是数据。因此,如果你想要在区块链上做去中心化应用,现在你拥有了可扩展性,但并没有因此具备状态执行能力来开发智能合约应用以及所有那些非常复杂的东西。(译者注:此句应有疑义。在原文链接所附视频的第 23 分钟。)

Phase 2:支持 EWASM 的状态转换。这一点包括:支持虚拟机、支持账户、合约、分片间 Ether 转移,等等。

Phase 3 以及更远:不断迭代,加入新的技术。

期望的特征

  • 纯粹的 PoS 共识。

  • 更快的同步确认时间(8-16 秒钟)。注意,因为信标链的分叉选择规则以及签名机制,信标链上的一次确认包括数百个验证者之间的消息传递,从概率学的角度来说,实际上等同于现有以太坊工作量证明区块链上的数百次确认。在消息同步传递的假设下,已经可以被视为将一个区块敲定。

  • 在同步确认的假设下,10 - 20 分钟达致经济确定性(Economic Finality)。

  • 通过 EWASM 实现更快的虚拟机执行。

  • 在理想状态下,达成 1000 倍的可扩展性。

后 Serenity 的创新

强化隐私保护。我们已经做了大量的工作。比如,在拜占庭阶段,我们激活了椭圆曲线运算、椭圆曲线匹配的预编译。Barry White 做了非常棒的工作,用 Layer-2 来保护代币转移、投票、声誉系统中的隐私。这些工作都可以借用过来。

  • 跨分片交易。

  • 半隐私链(Semi-private chain)。其中的观念是,如果你想开发一些应用并让数据在一部分用户间保持私密状态,你仍然可以将所有的数据都放到公链上,只不过你是用加密形式放上去的,或者上传哈希值、零知识证明,都可以自己决定。

  • 权益证明上的创新。这是我们始终关切的一个事情。当 Casper CBC 在开销上足够经济时,也会加入到我们的路线图。

  • 在实现 Serenity 之后,我们准备将所有的东西都升级到 STARK。比如,将 STARK 用于签名聚合、验证纠删码(erasure code)来检查数据可用性,也许最终会用来检验状态执行的正确性。

  • 更强的跨分片交易形式。

  • 更快的单次确认。将确认时间从 8 秒降到更低。

中期的目标

  • 最终稳定化 Layer-1 的功能

  • 考虑使用 Issuance,以及费用……

  • 在人们希望协议层提供的保证(guarantee)和属性上能够得到越来越多的共识

  • 考虑治理问题

即将到来的更新

在最终发行之前,我们还会做哪些更新呢?

首先,将协议层的详述定型。一直在关注 GitHub 上的 ethereum 和 2.0 主要规范、信标链规范等内容的人应该直到,协议层发展得非常快,但我们很快会将它们稳固下来。

继续做开发和测试。现在以太坊 2.0 协议有 8 个实现正在开发。

跨客户端测试网。一些人表明非常希望看到跨客户端测试网能在明年 1 月份跑起来。我当然也非常乐于看到,今年 8 月的时候我们已经看到了希望。在这里简单回顾一下以太坊 1.0 的开发历程。从白皮书提出概念到正式发布,中间隔了 19 个月,用了这么长时间的部分原因是在技术说明还没有定稿之前,我们便试图打造跨客户端的兼容性,我们是先后同意做测试、发布测试网、等待协议变更,同意发布新测试网,然后等待更多的协议变更,这样来来回回了 5 次。在这个事情中我们已经学到了教训,我们并不需要完全专注于跨客户端的兼容性,可以等到真正接近技术说明定稿时再说。我认为我们离发布技术说明的候选稿已经不远了,至少在不包括状态执行的部分中是如此。

最后是安全审计。在座哪些观众认为安全审计是重要的?(观众呼声)哪些观众认为安全审计不重要呢?(鸦雀无声)谁认为这个世界是被蜥蜴人(Lizardman)掌控的呢?(观众笑声)嗯,第三部分的人还笑了一秒钟呢,真棒(译者注:意思是相信世界被蜥蜴人掌控的,都比认为审计不重要的人多)。

最后就是发行啦。你们觉得发行不重要吗?(无人回应)嗯,那么在座哪位最喜欢的政治候选人是一个蜥蜴人呢?(观众大笑)

嗯,所以,发行就是我们期待已久并在过去四年中为之持续奋斗的里程碑。并且,我相信这一切不会太遥远。谢谢!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK