以太坊历史与展望
在这一节中,让我们回顾一下以太坊的发展历程,我们现在的看到的以太坊是经过一次次的分叉升级发展而来。以太坊的发展大概有以下几个阶段,每个阶段都伴随着特定的升级和改进。
奥林匹克(Olympic)
以太坊区块链在2015年5月开始向用户(主要是开发者)开放使用。版本称为“奥林匹克”,这是一个测试版本。主要供开发人员提前探索以太坊区块链开放以后的运作方式,比如测试交易活动、虚拟机使用、挖矿方式和惩罚机制,同时尝试使网络过载,并对网络状态进行极限测试,以了解协议如何处理大量流量。
边疆(Frontier)
经过几个月对奥林匹克的压力测试,以太坊在2015年7月30日发布官方公共主网,第一个以太坊创世区块产生。边疆依旧是一个很初级的版本,交易都是通过命令行来完成。
不过,边疆版本已经具备以太坊的一系列关键特征:
(1)区块奖励:当矿工成功挖出一个新区块并确认后,矿工仅得到5个以太币的奖励。
(2)Gas机制:通过gas来限制交易和智能合约的工作量。
(3)引入了合约概念。
家园(Homestead)
家园是以太坊网络的首次硬分叉升级计划,在2016年3月14日发生在第1,150,000个区块上。家园版本主要为以太坊带来了主要更新有:
(1)完善了以太坊编程语言Solidity;
(2)上线Mist钱包,使用户能够通过UI界面持有或交易ETH,编写或部署智能合约。
家园升级是第一个通过以太坊改进提案(EIP)实施的分叉升级。
EIP(Ethereum Improvement Proposal)即以太坊改进提案,是以太坊去中心化治理的一部分,所有人都可以提出治理的改进方案,当社区讨论通过后,就会囊括在网络升级版本中。
家园升级主要包括三个EIP提案:EIP2、EIP7、EIP8。这些提案具体包含的内容可以通过 EIP 文档查看。
作者翻译一些 EIP 文档,英文不好的同学可以参考https://learnblockchain.cn/docs/eips/
DAO分叉
这是一个计划外的分叉,并非为了功能升级,而是以太坊社区为了对黑客攻击防止损失,而采取的硬分叉回滚了黑客的交易。事情是这样的: 2016年,去中心化自治组织 “The DAO” 通过发售DAO 代币募集了1.5亿美元的资金,作为 DAO 代币持有人可以投票及审查投资项目,并获得一定比例的项目收益,所有的资金均由智能合约管理。然后在2016年6月,the DAO合约遭到黑客攻击,黑客可以利用漏洞源源不断的从合约中盗取以太币。
最终在以太坊社区投票后实行了硬分叉(在1920000块高度时发生),将资金返还到原钱包并修复漏洞。不过这次硬分叉仍旧引来很大的争议,以太坊社区的一些成员认为这种硬分叉方式违背了“Code Is Law” 原则,他们选择继续在原链上进行挖矿和交易。未返还被盗资金的原链则演变成以太坊经典(ETC)。
The DAO事件的分析,可以阅读上海对外经贸大学区块链研究中心主任乐扣老师的文章:https://learnblockchain.cn/article/644。
拜占庭(Byzantium)
拜占庭(Byzantium)和君士坦丁堡(Constantinople) 是以太坊称为“大都会”(Metropolis)升级的两个阶段。拜占庭在2017年10 月第4,370,000个区块上激活,拜占庭分叉更新有:增加“REVERT”操作符、增加一些加密方法、调整难度计算、推迟难度炸弹、调整区块奖励(5个减为3个)。
“难度炸弹”(Difficulty Bomb)是这样一种机制:一旦被激活,将增加挖掘新区块所耗费的成本(即“难度”),直到难度系数变为不可能或者没有新区块等待挖掘。这在以太坊中称为进入冰河时代,“难度炸弹”机制在2015年9月就被引入以太坊网络。它的目的是促使以太坊最终从工作量证明(PoW)转向权益证明(PoS)。因为从理论上来说,未来在PoS机制下,矿工仍然可以选择在旧的PoW链上作业,而这种行为将导致社区分裂,从而形成两条独立的链。为了预防这种情况的发生,通过“难度炸弹”增加难度,将最终淘汰PoW挖矿,促使网络完全过渡到PoS机制。
这次分叉包括9个EIP:EIP100 、EIP658、EIP649、EIP140、EIP196、EIP197、EIP198、EIP211、EIP214 , 详细的变更可以参考github。
君士坦丁堡(Constantinople)
“大都会”升级的第二阶段被称作“君士坦丁堡”,原计划于2019年1月中旬在第7,080,000个区块上执行。不过由于潜在的安全问题,以太坊核心开发者和社区其他成员投票决定推迟升级,直到该安全漏洞得以修复。最终在在2019 年2月28日区块高度7,280,000上得到执行。
其中主要的EIPs包括:EIP145——增加按位移动指令;EIP1052——允许智能合约只需通过检查另一个智能合约的哈希值来验证彼此;EIP1014——添加了新的创建合约的指令CREATE2;EIP1234——区块奖励从每块3 ETH减少到2 ETH,难度炸弹推迟12个月。
伊斯坦布尔(Istanbul)
伊斯坦布尔是在9069000在块高执行的,执行时间是在2019 年12月8日,伊斯坦布尔分叉有以下几个重要改进:
- 降低calldata(是一个存储数据的位置,将在第 6 章介绍)参数的 gas 消耗(EIP2028);
- 降低 alt_bn128(椭圆曲线) 预编译函数的 gas 消耗(EIP1108);
- 增加了 chainid 操作码,让智能合约可以识别自己在主链还是分叉链或二层网络扩容链上(EIP-1344);
- 添加 BLAKE2 预编译函数,让以太坊可以和专注隐私功能的 Zcash 链交互,提高以太坊的隐私能力。
其中 1 2 3 点对以太坊的二层网络扩容方案是重大利好,因为很多二层网络方案会把很多交易打包在一起传递给智能合约验证(通过alt_bn128函数验证)。
伊斯坦布尔分叉另外还有两个重新调整 gas 费用的改进:EIP-1884 EIP-2200 , 这里不详细介绍,有兴趣可以通过链接阅读。
信标链创世块
2020 年 12 月 1 日,信标链正式启动,是以太坊迈向 POS 共识的重要一步。
信标链启动后,以太坊有两条独立的链,但此时的信标链仅可以进行共识,无法进行任何交易。
柏林(Berlin)
柏林升级在12244000进行,优化了某些以太坊虚拟机操作的燃料成本,并增加了对多种交易类型的支持,柏林升级的修改有:
伦敦(London)
伦敦升级在 12965000 进行(2021/08/05 日)。引入了 EIP-1559,对交易费进行了修改,同时还对交易费用的退款处理进行了修改,修改有:
- EIP-1559 - 改善交易费市场
- EIP-3198 - 从区块返回 BASEFEE
- EIP-3529 - 减少以太坊虚拟机操作的Gas退款
- EIP-3541 - 防止部署以“0xEF”开头的合约
- EIP-3554 - 将冰河世纪推迟到 2021 年 12 月
TheMerge 合并
2022年9月15日,信标链与以太坊 POW 链合并,这是一个重要的里程碑,合并之后不再使用 POW 共识,合并之后,两条链使用新名字:共识层与执行层。
执行层负责交易执行(EVM),共识层负责共识出块。
未来:以 rollup 为中心的开发路线
Vitalik 在 2022年 11 月 5 日,发表了以太坊的最新发展路线图:
新的路线图,包含:The Merge、The Surge、The Scourge、The Verge、The Purge、The Splurge 六大阶段, 六个阶段在同时推进。
The Merge 阶段:已经大部分完成,预计 4 月份进行上海升级,激活取款功能。
The Surge阶段:推动以 Rollup 为中心的扩容,将使得 rollup 的开销降低。
The Verge阶段:引入 Verkle 树,优化数据存储及验证。
The Purge阶段:清理数据、简化存储,降低验证者硬盘空间性能要求。
The Splurge阶段:进行EVM 改进及全面引入零知识证明