市集开发模式与以太坊 2.0 开发进程
我最近重读了 Eric Raymond 于 1997 年撰写的经典论文《大教堂与市集(The Cathedral and the Bazaar)》。这篇论文探讨了如果允许各类参与者加入软件项目的开发中,会发生什么样的情况。Eric 称之为开源软件项目的 “市集” 模式。虽然这种模式会带来许多嘈杂的声音,但这种看似混乱的局面却会激发出无穷的生产力和活力——更重要的是,能够创造出更好的成果。相较于 “市集” 模式,在传统的 “大教堂” 模式下,所有开发工作都是由一个封闭的小团队完成的。20 多年之后,市集模式将展现出强大的威力。例如,Linux 操作系统采用的就是 “市集” 模式,目前全世界大部分的计算都是使用 Linux 操作系统来完成的。
我发现从这一角度来分析以太坊 2.0 区块链开发非常有趣。以太坊 2.0 项目启动至今已有一年时间,感觉是个反思的好时机。
以太坊 2.0 项目已经很大程度上采用了开放式的市集型开发模式。然而,我们在 Raymond 的愿景上更进了一步:在以太坊 2.0 中,我们不仅仅是开发软件;而是要用完全开放的方式来设计整个协议。我不确定之前有没有人这么做过。
这并不是说要搞无政府主义。与 Raymond 的理念相符, 开发工作主要由以太坊基金会内的小型团队领导,并由他们来掌握整体的开发节奏以及管理主代码库。不过,一切开发工作都是开放透明的,而且尽可能地扩大了参与范围。略举数例,以太坊 2.0 规范目前已经有 62 名贡献者,更多贡献者在参与 9 个客户端的实现,有一些人正在参与 ethresear.ch 网站上的研发讨论,还有一些人在参加两周一次的开发者会议(最近的一次会议有 50 个多人参加)。
确实,这个开发进程有时看起来确实杂乱无章,而且效率低下。目前已经有过很多次重新设计、修正和重写。然而,在这种乱糟糟的市集模式下,确实发生了一些很棒的事,一些非比寻常的事,一些开放性不强的开发者社区很难做到的事。
我已经强调过,而且会一再强调,这种开发模式为以太坊带来了强大的动力。激进式开放(radical openness)大幅提高了社区内的参与水平和认可度。像以太坊之类的技术从根本上依靠的是社区驱动下的 “网络效应”,这是很重要的。这种参与度恰恰造成了以太坊与其他技术的天壤之别。
我经常会通过一个例子来思考这种强大驱动力,Vitalik 最近也在推特上提到过它:这真的太神奇了,每当有需求出现时,就会有人出来解决它。在 2017 年底,Justin Drake 神兵天降,重振了停滞已久的以太坊 2.0 研发计划。在 2018 年中,以太坊 2.0 显然需要更好的协调和规划:Danny Ryan 又站了出来。在 2019 年初,Diederik Loerakker 突然空降,承担了为以太坊 2.0 创建客户端测试包的重要任务。我们的下一个挑战是点对点网络技术,而且有广大参与者加入。我可以再举出几十个例子,不过都用来证明这一个论点——市集模式才是真爱。
-市集模式的路线图(来源:Microsoft)-
一些对以太坊感兴趣的企业会问我一个有趣的问题,那就是:以太坊的路线图是什么?公平来说,虽然参与者对以太坊的开发进度的发展方向都有共识,但是并没有一个公开且详细的 “官方认证” 路线图。市集模式确实不会设定一个 “合理的” 路线图。Linux 每周新闻网站上有一篇经典老文章就探讨了这一问题,最后得出的结论是:“试图在开发进程上强加路线图不会有任何帮助。”
话虽如此,我还是要在此提醒一句,以太坊 2.0 系统计划分为三个不同的阶段,每个阶段都在前一个阶段的基础上进行构建。阶段 0 是信标链,实行的是权益证明协议,用来取代工作量证明机制以保护区块链网络。阶段 1 是以分片链的形式来提供强大的可扩展性,会将网络的交易处理量扩大一千倍以上。阶段 2 是执行层,提供用户账户和智能合约,并支持去中心化的未来所必需的一系列分布式应用。
经过整整一年紧锣密鼓的开发之后,以太坊 2.0 信标链规范于 6 月 30 日冻结:研发和设计均已完成;我们已经完全进入了最终交付阶段。
信标链是以太坊 2.0 系统的基础。信标链主要负责管理权益证明协议的运行并协调所有独立的平行分片,而且它是整个开发中最复杂的部分。如果你对信标链了解不多,或者需要重温一下,可以读一下我的上一篇博文。
信标链这一概念是去年 7 月在柏林提出的,是以太坊 2.0 的未来发展方向(我之前写过一篇相关的文章)。信标链的规范从一开始的白纸一张,融合了以太坊的早期构想,历经了反复的思考、讨论、审计和测试才确定下来。
与此同时,有不少于 9 个来自不同地域并拥有不同文化背景的团队正在使用不同的编程语言来实现这一规范,同时添加了可以推动信标链运行的基础设施(网络、数据库、工具——规范只是起到了一个引擎的作用,还需要添加很多东西才能真正跑起来)。一些团队已经发布了公共的概念证明测试网, 可以让用户体验一把当以太坊 2.0 验证者的感觉,例如 Prysmatic Labs 发布的测试网。
这个规范有时变得很快,我们已经在努力去跟上。最近,规范冻结是一个重要的里程碑,可以带来两大好处。
第一个好处是,该规范现在可以付诸形式化验证。考虑到严格的分析和正确性证明,该规范会被翻译成一种叫作 K 的专用语言。形式验证的工作将由 Runtime Verificaton 团队来完成。该团队已经完成了对验证者质押合约的分析。验证者质押合约将部署在以太坊 1.0 上,用来将验证者转移到以太坊 2.0 上。
规范冻结的第二个好处是,能让所有客户端都赶上进度,开启下一个重要阶段:互操作性。以太坊 2.0 信标链客户端与目前的 Geth 、Parity 和 Pantheon 之类的以太坊节点类似。以太坊 2.0 网络就是由这些信标链节点运行的。它们之间互相通信,而且更重要的是,彼此之间始终达成共识。随便一个漏洞造成的分歧,不管有多小,都会导致网络分区。
-在布鲁克林合作实现互操作性-
实现互操作性是需要一个过程的。首先,所有客户端都需要通过常见的参考测试。以太坊 2.0 的规范有一个非常有趣的特征,即它本身就是 可执行的 —— 可以通过运行规范来直接生成客户端测试。有些人可能偏爱叙事风格更强一点的规范,尽管如此,这是一个非常有用的特性。之前靠的是另一种很有效的 “模糊测试”,成功追踪到了以太坊 1.0 客户端的诸多问题。这种测试就是反复将被破坏的数据喂给客户端,直到找到会致使客户端行为失常的极端情况。目前正在为信标链开发这类工具。
只要每个客户端团队都确认信标链能够正常运行,下一步就是开始互相进行网络通信。一旦出了问题,很难对分布式网络进行诊断。因此,这些客户端团队第一步就是执行一种易于调试和分析的简化协议,然后再运行完整的网络堆栈。目前的计划是所有客户端团队将于 9 月初到安大略省的一处偏远之地进行封闭开发:等到所有客户端实现都能正确进行互操作后才能出关。
互操作性为今年晚些时候要长期推出的联合公开测试网铺平了道路。想要参与进来的人可以选择安装客户端软件,在测试网上质押 ETH ,然后参与网络验证,或是尝试攻击网络。发现漏洞和问题的人可能会得到奖励。
最后,如果一切顺利的话,信标链将于 2020 年初上线。已经有人建议将上线日期放在 1 月 3 日,那天是挖出比特币创世块的纪念日。然而,要想主网能够完全投入运行,这个时间可能有点赶。在 2020 年第一季度末上线的可能性比较大。
在信标链启动之前,最后一步是将验证者质押合约部署到现行的以太坊 1.0 链上。凡是想要成为验证者的人可以通过质押合约注册质押 32 ETH 。根据计划,该合约将于今年 10 月初的时候在 DevConV 上部署。一旦质押合约内的押金累积至 200 万 ETH 左右,也就是已注册的验证者达到 6.5 万名之后,即表明信标链具备了抵御攻击的能力,我们就可以开始启动信标链了。
虽然以太坊 2.0 是分阶段交付的,但每个阶段都是并行开发的。
阶段 1 需要完成分片数据链的设计和交付。这个时候,我们要往系统中添加 1024 条区块链,每条链都连接到信标链上。该阶段的协议比信标链容易得多,而且(最完整的)规范也只有信标链规范的一半长。
-以太坊 2.0 将成为一个空前庞大的点对点网络(感谢 Daniel Aleksandersen 的授权许可 CC BY 4.0 )-
阶段 1 的主要挑战是由于验证者分散在 1024 条分片链上,这个点对点网络需要以足够快的速度与验证者进行准确无误的通信。这项开发目前与客户端互操作性开发同时进行中。
目前最激动人心的进展是,以太坊 2.0 交付已经步入最终阶段:执行层。有人写过这样一句话,我很清楚一张白纸带来的挑战有多大。有如此巨大的设计空间和无拘无束的开发氛围,很难知道从何处下手。以太坊 2.0 执行层的设计也面临着同样的问题。
直到几个星期之前,还没人确定该从哪儿下手:我们能在以太坊 2.0 上运行什么样的程序?用户账户会是什么样的?分片链之间如何进行通信?这些问题都没有想好;这里面存在太多的可能性。我们还未找到一条明确的前进道路。
Casey Detrio 打破了这一窘境,他在多伦多的以太坊扩容大会上简单讲述了 Serenity 的观念历程,同时给出了一个建议,现已证实非常有效。Vitalik 采纳了 Casey 的建议,并在此基础上做了进一步完善。目前,其他人已经热情满满地加入了原型设计,并且给出定义。
在现行的以太坊区块链上,只有以太坊虚拟机(Ethereum Virtual Machine,EVM)这一个执行环境。每个智能合约只能由以太坊虚拟机来执行,执行合约只有一种收费方式(用 gas 来支付交易费),而且只允许使用特定的密码学签名和抗重放机制,这些都已经写入了底层协议。虽然以太坊虚拟机很强大,但是依然存在局限性:哪怕是只想发送少量 ERC 20 代币,也需要往账户中充 ETH ;要实现真正的匿名转账很难;采用新奇的密码学技术的成本很高。
简而言之,以太坊 2.0 计划是将杂七杂八的东西都 “分离出来”。区块链本身不再管控这些机制,而是提供一些不同的执行环境(EE)。每种执行环境都能够遵循自己的一套规则来运行,并且按照自己的目的进行优化。
例如,除了为编译进 eWASM 的智能合约提供的通用执行环境之外,还会有针对匿名代币转账进行优化的执行环境,针对类似 Haskell 的新型智能合约语言的执行环境,为处理高容量 Plasma 侧链而优化的执行环境,以及为企业用户量身打造的执行环境,具备许可性和隐私性。甚至还可能会有一种执行环境用来运行 Facebook 最近公布的 Libra 区块链的 Move虚拟机。
还有一些细节就留到后续文章再来讲解吧——目前阶段 2 仍在飞速开发中,而且这篇文章已经够长了。不过,我会提一下阶段 2 新模型的一个重要成果。一直以来,以太坊 2.0 都有一个宏伟愿景,就是取代整条以太坊 1.0 区块链,将其作为以太坊 2.0 中的一个分片。这就为现有的以太坊应用提供了未来保障,最终彻底关停 PoW 模式。我们现在有了一个切实可行的解决方案,正在将原本虚无缥缈的愿景提上日程。“Eth1 迁移到 Eth2” 的计划不需要在以太坊 2.0 刚上线时就开始实施,可以后期再加上,因此还有时间来改进。
-热闹的市集 [感谢 Diego Delso(delso.photo)的授权许可 CC-BY-SA ]-
就当前进度而言,我比之前更看好以太坊 2.0 的未来。我不喜欢夸大其词,不过我觉得最后的交付阶段阶段 2 可能会在 2020 年启动,早于之前预估的日期。最好不要引用我的这句话。
在向下一个阶段推进之前,我们还有很多事要做,不过路线已经比之前清晰了很多,参与度也越来越高。市集模式已经展现出了强大威力:那将是一个激动人心的场景,我相信让这么多人才积极参与进来,最后将取得显著成效。
市集是向所有人开放的:为什么不加入呢?
免责声明:作者的观点并不一定代表 Consensys AG 的观点。ConsenSys 是一个去中心化社区,其成员在 ConsenSys Media 这个平台上自由发表自己的观点和看法。想要了解更多关于 ConsenSys 和以太坊的信息,请访问我们的 网站。
(完)
(文内提供了许多超链接,请点击阅读原文到 EthFans 网站上获取)
原文链接:
https://media.consensys.net/ethereum-2-0s-latest-strides-forward-13f63652e57d
作者: Ben Edgington
翻译&校对: 闵敏 & 阿剑
你可能还喜欢:
科普 | 以太坊 2.0 的设计目标
干货 | 以太坊 2.0 Phase 0 V0.8.0 技术规范详解(下)
引介 | 信标链之外: Eth2 中的执行环境