把30个以太坊2.0开发者锁在屋里一星期,会发生什么?

转载
1870 天前
17507
区块律动

来源:区块律动   作者:ConsenSys-Ben Edgington


这只是一个团队站出来脱口而出的玩笑话:「我们需要进入一个房间,然后锁上门,在实现所有客户端相互通信之前,不要让任何人出去。」(# 区块律动 BlockBeats 注:互操作性,Interoperability,又称互用性,是指不同的计算机系统、网络、操作系统和应用程序一起工作并共享信息的能力。互操作性有不同的层面,比如语法层面的互操作性和语义层面的互操作性)

据我所知,没有人当真。因此,当几周后在布鲁克林举行的以太坊 2.0 会议上,Joe Delong 宣布了一项关于互操作性锁仓计划时,倒是让人有些意外了。他找到了一个场地,从 ConsenSys 获得了资金,并且在没有事先透露一点风声的情况下就确定好了日期。以太坊 2.0 互操作性锁仓项目(The Ethereum 2.0 Interoperability Lock-in)已经启动了!(# 区块律动 BlockBeats 注:19 年 5 月,由 ConsenSys 组织的在德国布鲁克林举办了 Ethereal 峰会,其中 Bushwick Generator 举办了一个研讨会,名为「通往互操作之路」(The Road to Interop),为 9 月份举办的主题为「Interop Lock-in」的研讨会奠定基础)

这就是 9 月初 30 多个以太坊 2.0 开发者在安大略湖停留了一周的原因。那么,我们在那里取得了什么成果呢?


令人印象深刻的地方 [照片来源: Ben Edgington]


01
从领先到锁仓

以太坊 2.0 开发过程中的一件值得称道的事情是,有很多开发团队都在开发软件客户端运行信标链。在过去的一年里,至少有九个开发团队在做这方面的工作,每个团队都在不断发展实现的规范,并反馈到设计过程中。(# 区块律动 BlockBeats 注:信标链,Beacon Chain,以太坊 2.0 系统的核心,一种全新的权益证明 ( PoS ) 区块链,它是为了解决共识问题,而分片链 ( Shard Chains ) 的目的是解决以太坊的扩展性问题)

为了让以太坊 2.0 网络正常运行,所有参与的客户端都需要相互通信,以对网络状态得出相同的结论。到目前为止,每个团队或多或少都是独立工作的,将规范转换为自己的特定编程语言和体系结构。一些开发团队已经在实现自己的客户端与自己的客户端相互通信的情况下,建立了测试网,但是这次互操作活动(Interop Event)是第一次实现启动和运行跨客户端通信的重要机会。

不同的客户端软件之间,大致有三种方式能够实现互操作。第一个是与共识机制相关的:在每个步骤中,给定相同的信息,每个客户端必须准确地达成系统的状态的一致性:包括验证器平衡、委员会次序变换、状态根。简而言之,每个客户端必须实现一个拥有实现一个零缺陷(bug free)的 0 阶段核心规范。但是写出没有缺陷的代码是很困难的!能够帮助实现这个的是,由以太坊基金会创建的大量和非常详细的参考测试,这也对几周后的互操作活动(Interop Event)的诞生产生了重要作用。


(大多数)互操作项目的成员 [照片来源: Danny Ryan]

其他关于互操作性的挑战与网络有关。一个是信标链客户端需要相互通信,以便在网络上「八卦(gossip)」区块和进行认证(区块投票)。另一个挑战是,客户端需要能够加入一个已经运行的网络,通过从现有参与者下载他们需要的数据,来「同步(syncing up)」其当前状态。

互操作项目研讨会,是我们主要关注的是第一个方面,尽管在同步方面也取得了一些进展。由于几个客户端团队和协议实验室(Protocol Labs)的进行了大量工作,几个月前完成了一份网络规范草案,令网络方面取得了巨大的进展。该规范详细描述了客户端之间的连接方式、发送的消息类型、通过有线传输的数据格式、使用的加密技术等等。为了进行基本的互操作测试,我们对客户端是如何找到(发现)彼此的问题方面做了再一次的简化。(# 区块律动 BlockBeats 注:协议实验室,Protocol Labs,专注于分布式互联网技术的创业公司,由斯坦福大学毕业的 Juan Benet 于 2014 年 5 月创立。2014 年夏天,加入了美国顶级孵化器 Y-Combinator,2015 年 1 月发布了 IPFS,IPFS 一度成为区块链行业中最受青睐的技术之一,数千名开发人员称之为「WEB 的未来」。同年,协议实验室还创建了 libp2p、IPLD、multiformats、Orbit 以及其他项目。公司以其两个旗舰产品而闻名,包括 IPFS 和 Filecoin。Filecoin 在 17 年完成了一次巨大的 ICO,24 小时内募资超过 2 亿美元)

在互操作项目启动前的几个星期里,以太坊基金会与 Whiteblock 合作,对所有的客户端进行了调查,来判断他们对项目的准备程度。一些结果令人鼓舞,但也并不完全如此。因为还有一些客户端没有通过测试,还有一些团队在启动网络时使用了不一致的方法。一些团队甚至无法维持一个仅由自己的客户端组成的稳定网络。(# 区块律动 BlockBeats 注:Whiteblock,区块链测试平台,可帮助开发团队更快地验证区块链性能,并部署分布式分类账技术,为特定客户提供区块链测试即服务 BTaaS,同时为 PaaS 商业服务做准备。2018 年,WhiteBlock 受区块链机构 ConsenSys 委托,对 EOS 进行测试,并得出结论 EOS(Token 及 RAM 市场)本质上是一种用于计算的云服务,而非区块链。)


对某些人来说,早上起来有点早 [照片来源:Ben Edgington]


02
为了实现互操作的相互合作

9 月 6 日星期五,在安大略省美丽的骷髅湖畔,这群以太坊 2.0 开发者像复仇者联盟一样聚集在一起,但他们手上拥有更多的计算机硬件。远离任何干扰,远离任何宽带互联网,除了偶尔的扑克游戏或皮划艇旅行之外,没有什么能转移人们的注意力。

总共有 7 个客户端团队参与了这次项目:Artemis(PegaSys/ConsenSys)、Harmony(Mikhail 刚刚获得签证!)Lighthouse(Sigma Prime)、Lodestar(Chainsafe)、Nimbus(Status)、Prysm (Prysmatic Labs)、和 Trinity(以太坊基金会)。遗憾的是,来自 Shasper(Parity)的唐魏(Wei Tang)没能成功到场,但这并没有阻止他进行远程工作,以实现与 Lighthouse 的互操作!Yeeth 的两位队友都在现场,但他们都与另一个客户端团队合作:Nimbus 的 Dean Eigenmann 和 Lodestar 的 Eric Tu。

(# 区块律动 BlockBeats 注:以下是一些正在研究或开发以太坊 2.0 信标链/分片客户端团队:

  • Prysm,由 Prysmatic Labs 开发,用 Go 编写;
  • Lighthouse,由 Sigma Prime 开发,用 Rust 编写;
  • Nimbus,由 Status 开发,用 Nim 编写;
  • Lodestar,由 Chain Safe Systems 开发,用 JavaScript 编写;
  • Harmony,由 Ether Camp 开发,用 Java 编写;
  • Pantheon,由 ConsenSys 的协议工程小组 PegaSys 开发,用 Java 编写;
  • Trinity,由 Trinity 团队(由 Piper Merriam 领导)开发,用 Python 编写。)

此外,以太坊基金会的 Danny Ryan 与 Diederik Loerakker(又名 protolambda)以及 Whiteblock 的一个团队一起担任了仪式的主持人。在互操作活动的同时,我们还邀请了一些在以太坊 2.0 第 2 阶段(执行层)的工作人员:ConsenSys 的 Coil 团队、和以太坊基金会的 Ewasm 团队。这是一个能够同步(没有双关语意图)彼此的工作的很好的机会。


讨论同步协议的分组会议 [照片来源:Ben Edgington]

每天早上都会以一个日常发言作为开始:每个小组的一份进度报告。然后他们就去赶进度了。Danny 提前制定了详细的进攻计划。但在这个项目中,团队几乎只是深入其中,试图将网络通过开发链接在一起,这就能解决问题。

开始的几天主要是学习如何开发和运行彼此的客户端,调试共识机制规则,以及填补基础设施和网络协议实现的空白方面。在调试方面,protolambda 创建了一个巧妙的工具 zcli,它能够输入一个状态和一些区块,然后生成输出状态。事实证明,这对于当两个客户端开始出现分歧时,找出谁出错是非常有帮助。

Lighthouse 团队的需求量很大。他们的客户端被认为是最稳定和最符合规范的,所以团队首先尝试与 Lighthouse 进行互操作也是非常合理的。

很快,结果就出来了,团队们纷纷跑到推特上宣布他们成功的信息。美国东部时间 9 月 9 日凌晨 2 点 49 分,Lighthouse 和 Nimbus 率先实现互操作。不久之后,Artemis 也和 Lighthouse 实现了互操作。衡量一个健康的信标链网络的标准是,它正在终结某个时代;你可以从截图中看到它正在发生!

其他完成成对的互操作信息,开始变得密集和快速:Artemis 和 Nimbus,Lodestar 和 Lighthouse,Prysm 和 Lighthouse,Artemis 和 Trinity,Trinity 和 Lodestar。很快,是时候尝试打破界限了。下一个成绩是 9 月 11 日完成的一个四方互操作:ArtHouseBusStar 网络。一天后,实现了五方互操作: ArtPryHouseBusIty。而同一天晚些时候,这项项目的最大成是达成了:7 方互操作;一个网络运行了七个团队的一个客户端。


Jonny Rhea 首次演示了 7 方互操作 [照片来源:Rene Lubov]


03
接下来是什么?

互操作周的进展超出了任何人的预期。七方网络远远超出了最初设定的目标。毫无疑问的是,我们可以将它看作是一个巨大的成功。

然而,仍有许多工作要进行。为快速实现互操作所做的一些工作有点像「管柱和密封蜡」,需要做得更加具有鲁棒性。我们开发的网络是可操作的,但也很脆弱。虽然在同步和发现方面取得了进展,但还有更多的工作要做。这些都是令人激动的第一步,但在我们跑完马拉松之前还有很长的路要走。

我们需要对处理数千个验证器进行扩展,并对客户端进行性能优化。

在下一阶段,团队之间的协作将越来越多。我们将建立一个联合的公共网络,在接下来的几周内,也许会开发一个长期有效的测试网络,任何人只要能够破解它,都可以获得奖金。

目标仍然是计划在 2020 年第一季度实现,届时将开发一个全面运作的信标链网络,将至少由 200 万枚以太坊用来抵押确保其安全性。我们在这次活动中发现的任何问题,都不会成为该项目的风险点;一切都表明进展顺利。


在两块黑莓 Pi 上运行的 Nimbus 节点和 Lighthouse 节点。电话是控制台;另一个套件是电池。[照片来源: Ben Edgington]


04
反思

我认为,我们都同意这次活动的时间安排是完美的。它对准备来说真的非常合适,不会造成过度准备。一次性让所有人呆在一个地方,这种做法的价值是巨大的。因为远程操作会很痛苦。学习开发和配置彼此的客户端是实现互操作向前迈出的一大步。

场地很棒。所有的人一起待在在一个独立美丽的小屋中,有极好的餐饮,没有分心的事情,能够促进强烈的目标感和专注力。这项活动让团队和个人能够建立起良好的关系和友谊,这对我们来说非常重要,因为我们需要在未来几个月内进行合作,以实现这一目标。

我们真的需要这么多的信标链客户端团队吗?这是一个经常被问到的问题。坦率地说,我不知道。尽管如此,我们仍然对这么多的实现进行了互操作,这是一次对规范和彼此之间的彻底测试。事实证明,协调成本相对较低。有这么多一流的工程师全神贯注于 Eth2,肯定会提升每个人的水平。

这项活动给我最深的印象是,所有参与团队,都带着非常充沛动力和精力。每个人都以出色的方式团结在一起;我从来没有在这样一个尽心尽力、积极和简单有趣的环境中工作过。无论是在现场还是场外,每个人都付出了巨大而英勇的努力来推进这个项目的成功。

最近,Jim Jagielski 让我想起了 Antoine de Saint Exupperéry 的一句名言:

「如果你想建造一艘轮船,不要鼓励人们去采集木材、分配工作和下达命令。相反地,你要让他们向往浩瀚无垠的大海」。这也是以太坊 2.0 开发的核心精神。

(# 区块律动 BlockBeats 注:Antoine de Saint Exupperéry,安托万·德·圣埃克苏佩里(1900 年 6 月 29 日—1944 年 7 月 31 日),法国作家,代表作童话《小王子》等,法国最早的一代飞行员之一,1940 年流亡美国,侨居纽约,埋头文学创作。1943 年参加盟军在北非的抗战。1944 年在执行第八次飞行侦察任务时失踪。)

并不总是只有工作,Mikhail Kalinin 在一次划船事故后拯救了 Jonny Rhea 的手机。[照片来源:Ben Edgington]