【推荐】从历次升级看以太坊的足迹
纵观全局,区块链技术出现的时间并不久。尽管有关区块链的基本概念(密码学、去中心化、点对点网络和交易)已经被研究了数十年,但直到 2008 年比特币诞生之后,人们才相信这些概念确实可以组合到一起、创造出可用的产品。尤其是以太坊,直到 2015 年才以一种公开的、可用的面貌出现在人们的视野中。尽管预期的发展时间线和具体细节有所变化,以太坊仍坚持按照计划推进,不断升级协议,以确保提高其可用性、安全性、功能性以及去中心化程度。
随着今年 2 月君士坦丁堡升级的完成,以太坊也就踩在了 Serenity(也被称为以太坊 2.0)阶段的门槛上,只待再经过一系列硬分叉和阶段性升级(包括 “以太坊 1.x”)便可实现。然而,为了更好地理解以太坊 2.0 的目标,我们先要回望一下当初是从何处启航。这里提供了一份以太坊大事记,回顾了以太坊历史上重要的计划内(外)硬分叉和升级,为下一阶段的发展做准备。
Olympic | 2015 年 5 月 9 日
以太坊区块链于 2015 年7 月正式公开上线。而在这之前的临门一脚是 Olympic——第 9 个也是最后一个开放的测试网,用以进行概念验证(PoC),让开发者预先探索以太坊区块链发布后的运行情况。Vitalik 宣布将发放共计 25000 枚 ETH 来奖励对网络进行压力测试的开发者们。测试要求很明确:尝试让网络超负荷,并 “疯狂破坏网络状态”,从而了解协议将如何处理流量过高的情况。开发者需要对四个方面进行测试:交易活动、虚拟机运行、挖矿机制以及一般惩罚机制。
Frontier | 2015 年 7 月 30 日
经过几个月的压力测试后,以太坊网络已经做好了进正式主网发布的准备。7 月 20 日,以太坊的创世块被挖出,社区开始逐渐扩大。在 Frontier 发布前几个月,Vinay Gupta 发表了一份说明,阐述了以太坊的发布过程。慷慨激昂的陈词中不乏对以太坊潜在用户的警示,Gupta 表示 Frontier 是 “最原始形态” 的以太坊,开发者们应当谨慎行事。就在 Frontier 发布的前几天, Stephen Taul 也像 Gupta 一样对开发者发出了提醒:“与美国拓荒潮期间那些勇敢的开拓者们一样,以太坊社区的参与者将发现巨大的机会,同时也将面临许多挑战。”
Frontier 协议包含以下几个重要特性:
区块奖励:当矿工们在以太坊区块链上成功挖到一个区块时,他们将收到以 ETH 发放的奖励。在 Frontier 阶段,矿工的区块奖励是每区块 5 ETH。
Gas:在 Frontier 发布后的初期,每个区块的 Gas 上限被硬编码为 5000gas。说白了,这就意味着网络上不会有什么大动作。这样就留出了一段缓冲期,以便矿工开始在以太坊上工作,并让早期用户安装客户端。几天后,该 Gas 上限自动解除,网络可以按照计划开始处理交易和智能合约。
Canary 合约:Canary 合约被纳入了 Frontier ,用以告知用户哪些链已遭受或易遭受攻击。Canary 合约被会赋予 0 或 1 的值。如果合约被赋值 1,客户端就能识别出这是一条出错的链,并在挖矿时避开这条无效链。本质上来说,Canary 合约的这些功能使得以太坊核心开发团队在网络出现问题时能够停止操作或交易。在以太坊早期阶段,Canary 合约是一个极度中心化却又不可或缺的保护机制。
可用性:所有开发者的操作均通过命令行来执行,因为没有图形用户界面。整个网络是可用的,但用户界面非常粗糙,只有熟悉以太坊并具备操作经验的人才有能力使用。
Homestead | 2016 年 3 月 14 日
Homestead 升级是以太坊网络的第一个硬分叉计划,于 2016 年 3 月 14 日在第 1,150,000 个区块上开始实施。总的来说,Homestead 升级主要包括对以太坊的三大重要改进措施。首先,它移除了 Canary 合约,去除了网络中的中心化部分。其次,它在以太坊的合约编程语言 Solidity 中引入了新代码。最后,它引入了 Mist 钱包,让用户能持有/交易 ETH 并编写/部署智能合约。
Homestead 升级是最早实施的以太坊改进提案(EIP)之一。EIP 指的是向社区提出的建议,一旦它们得到认可,就会被纳入网络升级中。Homestead 升级包含三种 EIP:
EIP-2:Homestead 核心升级
EIP 2.1:将通过交易创建智能合约的成本从 21000 Gas 提高到 53000 Gas。之前,通过合约来创建合约(首选办法)的成本比通过交易创建合约的成本更高。由于通过交易创建合约的 gas 成本提高,EIP 2.1 激励用户重新采用通过合约来创建合约的方法。
EIP 2.2:“所有 s 值大于 secp256k1n/2 的交易签名被视为无效。ECDSA 恢复预编译合约保持不变并接受较高的 s 值;在有合约需要恢复旧的比特币签名之类的情况下,这一功能就派上用场了。” [来源]
EIP 2.3:明确规定了,如果一个合约没有收到足够的 Gas 来完成整个操作过程,合约创建将 会“失败”,而非创建一个空白合约,使得交易可能的输出结果由原来的 [成功]、[失败] 或 [空] 变为 [成功] 或 [失败]。
EIP 2.4:取消了对用户创建难度值较高的区块的激励,从而增加挖到区块的概率。这一升级将出块时间稳定在 10 秒到 20 秒,并将整个网络恢复到大约 15 秒的目标出块时间。
EIP-7
“在 0xf4 中新增了一个操作码,DELEGATECALL。该操作码与 CALLCODE 类似,不同之处在于它将发送方和数值从父作用域发送到子作用域,也就是说,被创建的调用与原始调用拥有相同的发送方和数值。”[来源]
EIP-8:面向未来的升级
EIP-8 是一项着眼于未来的网络升级计划改进提案。这一改进确保以太坊网络上所有的客户端软件都能适应未来的网络协议升级。
DAO 分叉 | 2016 年 7 月 20 日
除了计划内的以太坊升级和硬分叉之外,还有一次计划外的 DAO 事件值得被铭记。在 2016 年,一个名为 The DAO 的去中心化自治组织通过代币发售筹集了 1.5 亿美元资金。在6 月,The DAO 被黑客攻击,有价值 5000 万美元的 ETH 被一位不知名的黑客劫走。以太坊社区的大多数参与者决定实行硬分叉,恢复钱包中被盗的 ETH 并修补漏洞。然而,硬分叉没有得到社区内所有参与者的一致认可,还有部分参与者继续在那条 原始 链上挖矿并交易。未恢复被盗 ETH 的 原始 链被称为以太经典(ETC),久而久之,其安全性逐渐降低,挖矿难度也在下降。社区的大部分参与者以及核心开发者则继续在分叉链上工作——被窃的 ETH 回到了它们原本的持有者手中——这就是我们现在熟知的以太坊区块链。
大都会:拜占庭分叉 | 2017 年 10 月 16 日
以太坊路线图的下一步被称为大都会(Metropolis),它将分为两个阶段进行:拜占庭(Byzantium)和君士坦丁堡(Constantinople)。拜占庭分叉于 2017 年在第 437 万个区块高度上激活,其中包含了以下 9 个 EIP:
EIP 100
调整区块难度评估公式,将叔块纳入参考范围。新的公式使得火币增发率变得更加稳定,并确保无法通过操纵叔块来强制提高发行率。
EIP 658
对于拜占庭硬分叉升级后的区块,交易收据内会包含一个状态字段来标志成功(赋值为 1)或失败(赋值为 0)。
EIP 649
“难度炸弹”是这样一种机制:一旦被激活,每新挖出一个区块所需的成本(即难度)都会提高,直到难度达到不可能挖出新的区块为止。一旦达到这个难度,以太坊网络将 “冻结”。难度炸弹最初于 2015 年 9 月被纳入以太坊网络,旨在帮助以太坊网络从 PoW 转型为 PoS。一旦实行了 PoS 机制,矿工们从理论上来说依然可以选择支持旧的 PoW 链,这就会导致社区分裂并产生两条独立的链——一条由权益所有者(staker)维护,另一条由矿工维护。为了防止这种情况发生,难度炸弹机制应运而生,它会让挖矿效率变得越来越低,最终确保整个网络完成向 PoS 机制的过渡,而不会出现硬分叉的情况。在该提案中,难度炸弹(也称冰河世纪)将推迟一年,此外区块奖励从 5 ETH 降至 3 ETH。
其余拜占庭分叉 EIP 的具体内容(140、196、197、198、211、214)可以在这里找到。
大都会:君士坦丁堡 | 2019 年 2 月 28 日
大都会升级的第二阶段君士坦丁堡(Constantinople)原定于 2019 年 1 月中旬在第 708 万个区块高度上线。1 月 15 日,一家名为 ChainSecurity 的独立安全审计公司发布了一份报告,指出五个主要的系统升级中有一个会让攻击者有窃取资金的机会。针对该报告提出的问题,以太坊核心开发者和社区的其他成员投票决定暂缓升级,直到该安全问题得到解决。在 1 月末,核心开发者们宣布将于第 728 万个区块高度上激活升级。2 月 28 日,第 728 万个区块高度上执行了君士坦丁堡硬分叉。以太坊网络目前正处于君士坦丁堡阶段。
EIP 145:按位移动指令
按位移动指令被添加至以太坊虚拟机(EVM)。这些指令让二进制信息中的比特可以以动到左边和右边。这一改进意味着智能合约的按位移动操作将便宜 10 倍。
EIP 1052:智能合约验证
智能合约能够通过检查另一个智能合约的哈希值来验证其本身。在君士坦丁堡分叉之前,智能合约必须提取另一个合约的完整代码才能进行验证,这种验证方式将耗费大量的时间和资源。
EIP 1014:CREATE2
状态通道变得更容易实现。状态通道是一种基于链下交易的以太坊扩容方案。
EIP 1283:SSTORE
降低 SSTORE 操作所需消耗的 Gas 成本。这一举措使得交易中多个更新操作的成本更低。
EIP 1234:区块奖励以及暂缓难度炸弹
由两部分组成:减少区块奖励以及暂缓难度炸弹。
区块奖励减少
矿工得到的出块奖励从每区块 3 ETH 降至 2 ETH。这一举措被称为 “1/3 奖励削减(Thirdening)”。
难度炸弹暂缓
EIP 1234 将难度炸弹的激活再次推迟了十二个月,届时将再一次进行投票。
前景:伊斯坦布尔市(Istanbul)以及宁静(Serenity)
展望未来,“宁静(Serenity)” 将是以太坊区块链的最后阶段,不过要先经历伊斯坦布尔分叉和 “以太坊 1.x.” 阶段。伊斯坦布尔硬分叉将主要围绕关于 ProgPoW 的决策。Serenity 将完成从 PoW 到 PoS 的转化,以及其他一些重要升级。其中尤其要关注的是:信标链和分片概念的引入,以及用 eWASM(Ethereum-flavored Web Assembly)替代以太坊虚拟机(EVM)。Serenity 的所有升级将分阶段进行,与此同时,以太坊 1.x 也将不断完善,从而确保原 PoW 链的后续运行。