伊斯坦布尔硬分叉要来了,但以太坊2.0还有十万八千里
作者:Adeline
文章来源:哈希派
据以太坊基金会消息,伊斯坦布尔(Istanbul)硬分叉升级预计将于2019年12月7日前后发生,和前几次的君士坦丁堡、拜占庭等硬分叉升级一样,这次的升级同样以改变以太坊底层协议的方式来提升整体性能。然而,也和前几次升级前屡次延迟的“尿性”一样,伊斯坦布尔硬分叉之路依旧波折不断。
据以太坊官方消息,伊斯坦布尔硬分叉原定于8月14日激活Ropsten和Görli等以太坊测试网,并预计于2019年10月16日在主网上进行升级。
然而在8月15的以太坊电话会议中,核心开发者Péter Szilágyi指出,需要将该目标推迟两周,且不排除在9月4日有再次推迟的可能性。最具争议的ProgPOW算法将推迟到下一次升级中实施。[1]
随后9月6日的以太坊电话会议中,基金会社区经理Hudson Jameson表示,由于有大量以太坊改进建议(EIP)提交审查,Ropsten测试网络激活被推迟到10月2日左右,主网的激活将推迟到11月。[2]
9月30日,以太坊基金会社区经理Hudson Jameson表示,由于异常快速的区块确认时间,造成测试网络Ropsten已于UTC时间9月30日3:40提前到来。
10月25日,PegaSys Protocol Engineering产品经理Tim Beiko发推表示,目前团队初步达成共识,以太坊伊斯坦布尔硬分叉日期定为12月4日,为了以防万一,1月8日为定为备用日期。
11月20日,以太坊官方博客发文称,以太坊网络将按计划在区块高度9,069,000处进行升级。时间预计在2019年12月7日星期六发生。具体升级日期和时间可能会因出块速度有所变化。[3]
......
升级状况频发,加上备受关注的EIP-1884ProgPoW提案的延迟,让许多人为以太坊后续生态发展感到担忧。因为从一开始的设计层面来说,伊斯坦布尔硬分叉是以太坊经过最初的边境(Frontier)、家园(Homestead),到现在的大都会(Metropolis)阶段走向宁静(Serenity)阶段(即以太坊2.0)前的最后一次硬分叉。
尽管近期以太坊基金会研究员Danny Ryan公开表示以太坊2.0零阶段计划将于2020年第一季度上线,但屡次升级上演的“狼来了”的故事,让这个“计划”看上去苍白了不少。
同时,我们整理了近期各种开发者会议和部分研究员的公开言论后发现,且不论以太坊一贯的延迟尿性,单根据目前研发情况来看,要完全实现以太坊2.0仍然是很遥远的事情。
“宁静”将至?
首先,根据EthHub上的介绍,以太坊2.0是一系列可以显著改善系统性能的研发规范(specifications),在2.0版本中暂定部署分片技术(Sharding)、Casper协议(POS共识机制)、状态租赁(State Rent)和以太坊虚拟机EVM的升级项目eWASM。[4]
这一版本将分阶段交付,每个阶段都将建立在前一个阶段的基础上:
阶段0: 信标链Beacon Chain|2020第一季度
以太坊2.0交付计划中,首先需要实现的目标是信标链,信标链将采用权益证明机制Casper the Friendly Finality Gadget(Casper FFG)[5],实现从POW(工作量证明)到POS(股权证明)的过渡。这一阶段让验证者能够参与质押系统、代替矿工成为链的构建者,并为分片方案提供基础。
阶段0信标链介绍截图 信息来源:Github
到目前为止,Prysm、Nimbus、Lighthouse等以太坊2.0实现团队建立了支持信标链阶段的单一客户端测试网。据V神透露,7个单一客户端开发团队在9月初 已经实现了客户端之间的互操作性(interoperability) 。
另外,在主网上线前, 还需要一个支持多客户端的测试网 ,使BETH(Beacon链ETH,即以太坊2.0代币)能够在不同账户间转帐。11月9日,作为以太坊2.0的构建团队Prysmatic Labs的成员,Danny Ryan表示,跨客户端测试网至少还需要两周的时间才能发布,测试网发布后也至少需要运行三个月。按这个时间来推算, 跨客户端测试网要在下个月能够顺利推出,才能在2020年2月、或者3月如期上线主网阶段0,创建信标链创世区块。
然而,由于阶段0的实现与规范的制定是同时推进的[6],在互操作性实现以后, 已经敲定冻结 [7]的阶段0规范进行了 完全解冻 ,发布最新的0.9.2版本[8]。规范在 重新冻结前 ,需要在众多的以太坊2.0客户端中确定、实现并通过审计。而以太坊是一个庞大的开源项目,去中心化的特性让研发规范显得有些混乱、无组织,研究团队间也缺乏协调。种种情况让团队在应对规范的变化时造成大量的时间的浪费,因此,上文中的“跨客户端测试网如期推出”仍要打上一个问号。
阶段1:分片链Shard Chains|时间待定
在阶段1中将构建没有虚拟机EVM的分片,以分片链的方式为以太坊网络提供大规模的扩容性[9]。
阶段1分片链介绍截图 信息来源:EthHub
阶段1的推进之路也正经历一些推倒和重来 。6月份时,阶段1大部分的规范 已接近完成 [10]。但在10月份,V神发布了 Eth2分片链简化提议 [11],提议减少分片数量,以加速分片项目落地。根据这一提议, 以太坊开发人员在最后一刻将分片从1024个减少到64个 。目前,阶段1正在做将V神提出的 分片链简化方案转化为规范形式 的工作[12]。
此外,根据11月24日以太坊开发团队Quilt的开发人员Will Villanueva在一个播客节目中的公开言论,阶段1的规范可能会在阶段0的规范完成后再敲定, 但具体时间尚无法确定 。
阶段2:状态执行State Execution|时间待定
从本质上来说,阶段2是整个系统的“执行层”,它使分片链从简单的数据容器过渡到结构化状态,并引入智能合约,每个分片将管理一个基于eWASM虚拟机。这一阶段的重点是执行引擎(execution engine)、账户模型(account model)等,将开启状态执行(state execution)和计算(computation)。
阶段2介绍截图 信息来源:EthHub
目前这一阶段仍处于积极研发状态, 还没有任何正式的规范 [13],也没有哪个团队能预计何时可以促成主网发布。不过根据unitimes的消息,在4月7日,以太坊核心开发人员Casey Detrio在ethresear.ch上发布了阶段2的一些新的想法[14],让千头万绪的阶段2有了一个可能的落脚点,随后V神发布了 阶段2的首个提案 [15]和 简化提案 [16],希望构建一个轻量级Layer1协议,然后重点关注分片链中的Layer2。
11月20日,Will Villanueva发表了一篇关于Eth2.0阶段2进展的长文[17],详尽阐述了执行环境(EEs)的概念及如何实现Eth1到Eth2的过渡。随后,Will Villanueva在11月24日公开表示,目前包括其所在的Quilt团队在内有三个团队正在研究以太坊2.0阶段2。
然而,阶段2的实现并不简单。根据Will Villanueva的文章,目前为止,虽然阶段2已经有了初步的想法,近期无状态客户端(stateless clients)的拓展方面也有较大进展,但对于如何制定分片的基准和技术雏形以及如何在eth2的执行环境中构建智能合约(smart contracts)等难题,目前还没有给出明确的答案。
除外,以太坊2.0的进程中还存在许多不确定因素
首先,我们上文中提到过 实现团队之间的协作问题 ,以问题#358为例,35个字段被重新命名,但Github的讨论区里并没有收到实现者的任何反馈。这些情况导致了混乱的发生,直接导致了许多时间被白白浪费掉。
同时, 开发团队的资金问题令人担忧 ,根据区块链软件咨询公司Kyokan的Matthew Slipper&Dan Tsui的报告[18],9个以太坊2.0研究团队都表现出对开发的无限热忱,但这份热忱放在市场的现实上不堪一击。由于团队运转资金的来源单一,一旦以太坊基金会出现资金枯竭的情况,或者主要支持这些团队的实体(如ConsenSys或者Status)取消对他们资金的支持, 那这些团队就可能不得不暂停开发 。
加之最近以太坊的“后院起火”,以太坊基金会的Virgil Griffith因前往朝鲜参加了“平壤区块链和加密货币会议”,在11月30日,被美当局指控违反美制裁法并逮捕。随后V神澄清Virgil Griffith访问朝鲜是个人行为,以太坊基金会未提供任何形式的支持,并准备请愿书要求释放 Virgil Griffith。这无疑将以太坊基金会与这件事进行切割,以免受到牵连。但Virgil Griffith本身是以太坊 2.0的共识机制Casper FFG的共同开发者,作为以太坊项目的重要开发人员,其对以太坊后续发展造成的影响也令人担忧。
因此,尽管以太坊初创企业ConsenSys的创始人Joseph Lubin在开发者大会Devcon V上表示,以太坊2.0阶段0将于2020年第一季度启动,阶段1和阶段2将于2020年底同时推出。但实现团队之间的协作、开发团队的资金问题等问题,让以太坊后续发展愈发扑朔迷离,加之阶段2尚无正式规范,参照阶段0规范的屡次修正调整,预计在阶段0进入测试之后,阶段1、阶段2可能还需要至少一年多的开发时间,这也让以太坊2.0的问世遥遥无期。
文中涉及的链接:
[1]https://github.com/ethereum/pm/issues/119
[2]https://github.com/ethereum/pm/issues/123
[3]https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/
[4]https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-phases/#introduction
[5]https://vitalik.ca/files/casper_note.html
[6]https://hackernoon.com/what-to-expect-when-eths-expecting-80cb4951afcd
[7]https://github.com/ethereum/eth2.0-specs/releases/tag/v0.8.0[8]https://github.com/ethereum/eth2.0-specs/releases/tag/v0.9.2
[9]https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-phases/#what-is-included_1
[10]https://github.com/ethereum/eth2.0-specs#phase-1
[11]https://notes.ethereum.org/KbEyHiaSRQW_KS7dDK0OFw
[12]https://github.com/ethereum/eth2.0-specs/pull/1483
[13]https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-phases/#phase-2-state-execution
[14]https://github.com/ethereum/eth2.0-specs#phase-2
[15]https://ethresear.ch/t/phase-one-and-done-eth2-as-a->[16]https://ethresear.ch/t/a-layer-1-minimizing-phase-2-state-execution-proposal/5397
[17]https://ethresear.ch/t/proposed-further-simplifications-abstraction-for-phase-2/5445
[18]https://docs.google.com/document/d/1PS0k9MaKPdPwEw3Uh9rq7USjq7LcSpT6ICQUXRij4YE/edit