早在以太坊启动之初,就已经规划了开发的四个阶段:边境(Frontier)、家园(Homestead)、大都会(Metropolis)和宁静(Serenity)。
目前以太坊已经走过了前三个阶段。它开启了一个智能合约新时代,引领了区块链2.0时代。
众所周知,以太坊的终局是走向“宁静”,也就是我们说的以太坊2.0(eth2.0)时代,但在“宁静”到来之前还将经历“伊斯坦布尔”,“以太坊1.X”两个阶段。
以太坊2.0是一次脱胎换骨的大改变,是一次全面的修订和重新设计,是一场漫长的马拉松。
那么“宁静”阶段(eth2.0)到底改变了什么呢?
“宁静”的主要内容包括从PoW(工作量证明)到PoS(权益证明)的完全转变,“宁静”的所有升级将分为四个分阶段实现:
phase 0:信标链(Beacon Chains)
phase 1:分片链(Shard Chains)
phase 2:eWASM用于替代以太坊虚拟机(EVM)
phase 3:Continued Improvement
在以太坊走向“宁静”期间,“eth1.x”也将持续得到完善,以确保原始PoW 链的延续。
在 eth2.0 交付计划中,首先需要实现的是信标链的建立。
分片技术开发公司 Prysmatic Labs 的联合创始人Preston Van Loon 于2019年5月7日在博客网站 Medium 上发文宣布 eth2.0 的信标链测试网正式上线,这也标志着 eth2.0 phase 0 的测试网终于完成。
信标链测试网浏览器地址:https://beacon.etherscan.io/
信标链
信标链(Beacon Chains)是使用 POS 共识算法的链,它是 eth2.0 的基础设施,在 eth2.0 第二阶段的 shard chains 必须要借助信标链才能运行起来。
信标链会为每个 Shard 随机指定不同的 Validators 用于出块,同时也会为每个 Shard Chain 分配一个委员会,委员会的作用是对 Shard Chains 的 Validators 生成的区块进行投票。
分片链的中区块需要有半数以上的委员会成员达成共识,Shard Chains也可以借助信标链完成跨 ShardS 的操作。目前信标链会与 eth1.0 链并行运行一段时间,信标链也会依赖 eth1.0 链上的状态。
信标链如何工作?
信标链采用的是 PoS 算法,在 PoS 算法中每个矿工出块的概率与矿工拥有的权益成正比。
但在信标链中每个矿工的权益都是相同的。
每个矿工只能向信标链上抵押 32ETH。要成为信标链的 Validators,需要向 eth1.0 上的 Deposit Contracts 上发送一个交易,在交易中需要携带 32ETH,在 eth1.0 的 Deposit Contracts 的公开方法中有两个参数:
调用 Deposite 合约成功后,合约会返回一个 Log Event ,信标链会自动感知到 eth1.0 链上发生的事件。
信标链会将新加入的 ValidatorS 放入到 Pending Valiadtors 中,过一段时间后会变成 Active Validators ,成为 Active Valiators 后就可以参与 PoS 协议出块了。
对于长时间不活跃的 Validators 以及作恶的 Validators ,Beacon 会采取惩罚措施,当 Validators 的权益减少到 16ETH 时,就不能参与 PoS 协议的出块操作,Beacon 会将权益低于 16ETH 的 Validators 剔除出去。
在 Beacon Chains的区块中一共维护以下几个信息:
· 维护注册的Validators
· 维护投票信息
· Random Number,用于随机选择 Proposer,以及 Committee
Proposer选择
Validators 需要被选中为 Proposer 才可以提交区块,在 eth1.0 中下一个区块的提交权是通过矿工的算力决定的,哪个矿工的算力大,哪个矿工就有很大的概率被选中为下一个区块的生产者。
在 eth2.0 中出块节点的选取是基于 Random Number,在区块链系统中很难产生质量良好的随机性,但是 PoS 协议需要随机数的随机性的来源是分布式的,可验证的,不可预测的,并且是不可替代的。
使用 Random Number 随机从 Validators 中选择 Proposer 可以使 Validator 无法预知哪个 Validators 被选中,这样可以防止 Validators 之间串谋发起攻击。
在 Beacon Chains 中每隔6秒产生一个区块,这6秒也被称为slot 间隙,在每个时隙,被选中的 Proposer 会收集先前块的 Beacon Chains 验证者的所有投票,并将它们组成一个新的区块。
Committee
Proposer 提案的区块,需要进行投票才可以进入到 Beacon Chains 的主链上,在 Beacon Chains 中每隔一个 Epoch 会通过 Random Number 选择一些Validators 组成 Committee ,每隔64个slot 组成一个 epoch,所以一个 epoch 大概是6.4分钟。
Committee 可以对 proposer 提案的区块进行投票,投票通过的区块才有可能得到最终的确认。
理想情况下,如果可以快速收集投票,那么 committee 中的成员可以是系统中所有的 active validators。
Fork Choice Rule
在 eth1.0 上是根据算力决定最长链,而 Beacon Chains 中使用的是PoS 算法,所以会需要另外一套规则来决定大家需要跟从哪条分叉链,Beacon Chains 最终采用的是 LMD GHOST (Latest Message Driven GHOST),LMD GHOST 方法中,算法运行是基于 message 也就是投票,总的来说,拥有最多投票的分叉链会被认为是主链。
上图展示了 LMD GHOST 方法的细节;
笑脸符号代表投票信息,每个区块中有个数字,代表投票的数量总和,也就是该区块的权重。
在上图中,虽然最上面那条链是最长链,但绿色那条才是主链。
分片链
分片链(Sharding Chains)是 eth2.0 网络未来可扩容性的核心特征。
从整体概念来看,分片是指将数据库(去中心化数据库或其他类型数据库)中多节点的数据处理职责分割开,允许同时进行交易、存储和信息处理。
分片理念与目前的 eth1.0 模式完全不同,后者需要每个全节点对每一笔交易进行处理和验证。
“宁静”第一阶段将在分片链上处理最终确定性和共识。此阶段的分片链更倾向于“测试运行”,而不是立即解决扩容问题。
信标链将对分片链的执行情况进行监督。
验证者质押 32个ETH 之后将被随机分配到特定的分片链上进行验证工作(此处的随机性可以确保验证者的分配路径是不可预测的,否则将面临人为操纵的风险)。
根据 eth2.0 规范,信标链将支持1024个分片链,每条分片链上将有128个节点进行验证工作。
eWASM
在“宁静”第二阶段中,随着新虚拟机 eWASM(Ethereum-flavored Web Assembly)的引入,分片链将从相当基本的数据标记形态演变为功能完整的交易链,从而担当起以太坊网络扩容的重任。
为了维护区块链生态系统的正常运行,节点必须在虚拟机中执行交易和智能合约。
Eth1.0 的虚拟机被称为EVM,切换到 eth2.0 后,以太坊网络的虚拟机将升级为 eWASM ,这是一个基于 Web Assembly 的虚拟机,由万维网链盟(W3C)定义为开源标准。
由于 WASM 支持多种编码语言, eWASM 使得任何语言编写的智能合约都能在以太坊上运行,而 eth1.0 的 EVM 只允许由 Solidity 语言编写的智能合约运行。
ETH 1.X
ETH 1.x是一个代号,表示针对 eth1.0 的一系列升级, eth 2.0 还需要2-3年才能全面推出,第零阶段的信标链和第一阶段的分片链将在1-2年内完成,第二阶段的 eWASM 将在2022年的某个时候完成。
Eth2.0 作为一个独立的区块链被部署,所以它不会取代 eth 1.0,这意味着 eth1.0 链需要在未来5-10年内保持可持续性。
Eth1.X 背后的团队还处在确立路线图的早期阶段,但他们决定了 eth1.x 升级的三个首要目标:
总结
V神(Vitalik Buterin)曾说过:eth1.0 是一群人杂乱无章地尝试建立世界计算机,而 eth2.0 将是实际上的世界计算机。