几年来,我们孜孜不倦地讨论和研究系统的一些特性,也在 App 开发上投入了大量精力,最终,它们汇集在一起,组成一个融洽的世界。这些特性包括权益证明算法, Casper;可扩展性,分片;虚拟机升级,EWASM;跨链合约上的强化;协议经济模型改进,以及非常多促成逻辑层分散化的改进。重要话题还真不少。我们做过哪些探索?
PoS
权益证明(PoS)的相关研究始于 2014 年。我在一月份发表的这篇博文(Slasher: Punitive Proof-of-Stake Algorithm)阐述了一个叫做罚没者(Slasher)的算法,引入了权益证明算法中最基础的概念:如果你违反协议并且被发现了,(这是可以被证明的),你就要接受惩罚;这一方法可以用来提升安全性。但在那时,正如你可以在幻灯片中看到的,我相信 Slasher 是一种非常有用的建构,可以让权益证明“挖矿”的武器库变得更充实,并为我们提供更强力的理由切换到权益证明。当然我们还没这么做。
因此,在那时,要不要 PoS 当成我们的方向还未有定论。但随着时间推移,这一点变得清晰很多。
可扩展性
在 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”。然后,我们就迎来了一个低谷:我们在解决 PoS、可扩展性中的一些核心问题上遭遇了一系列失败,Vlad 悄悄地暂停了他在 Casper CBC 中的所有工作。我们得到的最有意思的观念之一便是“投注共识(Consensus by Bet)”:参与者对下一次会敲定哪个块打赌,而一旦某些人下注,他们下注的事实本身便会成为其他人下注的考量因素。这样的话,在某种意义上我们就产生了一个递归公式,随着时间推移,下注的人会越来越多,哪个块会被敲定也会变得越来越明显;在对数轮以后,每个人都会将自己所有的权益都投完,这样我们就达到了去定性。我们沿着这条思路走得相当远,为它创建了完整的概念证明,你可以(在幻灯片上)看到确定化的过程,还有签名函数什么的。我的意思是,我们在这里花去了绝大部分时间,但然后整个思路就停滞不前了,主要原因是我们认识到了哪种 BFT 启发型共识算法可以真正安全地工作。存储租金
Rent 的观念其实是这样的:与其为使用存储空间收取一次性的高额费用,我们可以逐步收取费用。因此,以每天、每个区块或其它方式为计,一旦特定的存储空间被占满,你就需要为此支付一定的 ETH。这里写的是 EIP 103,但实际上应该是 EIP 35 才对,因为 35 才是 issue 号码。这是一个初步的想法,试图形成一个正式的概念。从那时开始,我们在如何才能最好地利用租金这一点上迭代了很多想法。
2015 年的可扩展性论文
这一篇论文的目标是形成二次方分片和超二次方分片的概念,但它真的太复杂了。它会包含一些很复杂的激化博弈(escalation game)。整个观念是受到 escalation 在法律系统中的作用的启发(我知道 Joseph 的哲学非常喜欢使用这种类比),但我试图把它用到基础层。里面还包含“深度状态逆转“,就是说,如果有些事情真的弄错了,那么大量的状态可以在将来进行深度回滚。真的很复杂。实际上,其中一个我们无法完全把握、但在逐步接近的根本问题,就是所谓的”渔夫两难“(Fisherman's Dilemma)。这是分片研究中的一个非常根本的概念,描述了状态的扩展性执行(scaling execution)、程序的扩展性执行与数据扩展可得性(scaling availability)之间的巨大区别。基本问题是这样的:如果要运行程序,你可以让人们承诺答案是什么,然后你可以用挑战游戏、用二分法搜索确定在哪一步上谁算错了(译者注:即每次都只运行一半的运算步骤,比对结果,来发现双方到底在那一步上算错了),确认事实后就可以惩罚那些给出错误答案的人。而数据可用性的问题是:无论挑战游戏如何运行,你都可以作弊,因为你可以完全不公开任何数据,直到机制来检查你有没有公开数据,然后你只要公开机制要检查的那部分数据就可以了。这已经证明是许多可扩展性算法中的一个非常重大的问题。我过去还写了一篇博文来讨论这个问题,你们可以搜索 A Note on Erasure Coding and Data Availability,里面讲到了更多问题的细节。这也是拖慢我们进度的其中一个原因。但即便如此,我们还是很高兴能推动以太坊继续前进,我们走在自己的道路上!嗯,然后,就出了 The DAO 事件(观众笑)。这也没什么,也没别的问题了。慢着,好吧,又出了个”上海 DoS 攻击“(观众反应有点慢)。
总而言之,The DAO 事件、DoS 攻击,最终耽误了很多人的事件和精力,甚至长达 6 个月。不过,我们还是在前进,EWASM 在前进,关于虚拟机的研究在推进,我们还做了一个替代性版本 EVM1.5。而且大家也多角度、更深入地理解了更优区块链算法的形态。