对于以太坊,2019年会是重要的一年,因为按照计划,以太坊2.0将要在今年起航,从PoW的旧大陆出发前往PoS的新大陆。
与此同时,以太坊1.0还会继续存在并保持进化。以太坊1.0运行在原主链上,以太坊2.0运行在Beacon链上。
计划中的航程估计要有两年,直到2021年,在分片链能够实现完整的功能后,1.0才会把以太坊的实际运行权交给2.0,自己则会退出历史的主舞台,作为2.0的一个分片或一个主存储合约而存在。
以太坊2.0的Beacon链是如何运行的?ETH持有人如何从PoW链「跨」到Beacon链?以及,跨还是不跨?我们将在本文试着去探讨。
读懂Beacon链
先做个简单的科普:Beacon链是一条全新的PoS区块链,它是以太坊2.0的核心组件,却不是以太坊2.0的全部。以下几点可能是理解Beacon链的关键:
1.Beacon链是一条PoS链,运行以太坊的PoS协议Casper。
2.以太坊1.0就是指PoW的主链,但以太坊2.0包括Beacon链、分片链、虚拟机层三部分,其结构如下图所示:
3.Beacon链是以太坊2.0的中枢,也是2.0的第一个和最重要的一个组件。如下图所示,所有分片都会连接它并与它通信,Beacon链为分片链提供安全性和最终确认性。
Beacon链主要完成两个功能:一是执行PoS共识,包括维护验证者集合、选择验证者组成委员会、分配验证者对分片块进行提议或证明、对验证者实施奖励和处罚等等。它是验证者参与质押系统并根据所押权益获得收益的渠道,也是整个系统安全性的保障。
第二个功能是实现分片的通信。各分片都会将自己最新状态的哈希存到Beacon链的区块上,当Beacon链区块完成时,相应的分片区块就被认为是最终确定的,其它分片就可确信它们并与之跨分片交易。分片链与Beacon链通过「交联」实现跨分片通信,从而将整个系统连接在一起。
4.Beacon链上没有虚拟机,没有智能合约,也无法处理交易;Beacon链不存储现行以太坊区块链上存储的信息,它只存储验证者列表和Attestation。所谓的「Attestation」,是指经过确认并由验证者签名的哈希值,它们实时记录着一个特定分片的状态。
5.Beacon链与以太坊1.0的PoW链会彼此独立地运行大约两年。在以太坊2.0能够实现完整的功能前,以太坊都运行在1.0上,Beacon链上的区块没有什么实际意义。
以上即是Beacon链的基本情况。为什么说Beacon链要到2021年才能正式运行以太坊?因为从以太坊的发展路线图可知,到这一年以太坊2.0才能支持智能合约和资产转移,实现可用性。
2021年前的以太坊2.0长什么样?
在了解了Beacon链之后,让我们简要介绍一下从现在到2021年的以太坊2.0,会经历的三个阶段:阶段0、阶段、阶段2。
阶段0:启动Beacon链
阶段0专注于让Beacon链上的验证者运行起来。用户可以在链上存入32个BETH成为验证者,不过在该阶段验证者只管理Beacon链,此时没有分片链。
Beacon链在早期会尽可能保持简单的迭代设计,该阶段不支持账户、资产转移和智能合约。BETH仅能被验证者使用,不能在链上转移,也无法转入交易所交易。
阶段1:启动分片链
阶段1将加入分片链组件,实现Beacon链分片链。但该阶段只是试运行分片结构,并不是真正的用分片实现扩展,Beacon链将分片链区块视为没有结构或含义的简单比特集合。分片链此时依然没有账户、资产和智能合约。
Beacon链将支持1024条分片链,每条链都有一组128个验证者组成的委员会来验证。Beacon链为每个分片在每个周期随机选择分片验证者,分片验证者通过「交联」证明分片的内容和状态。
需要指出,在阶段0和阶段1,以太坊1.0和以太坊2.0之间没有数据流通,以太坊依然运行在PoW链。
阶段2:启动虚拟机层
阶段2将加入虚拟机层,它是以太坊2.0的最后一个重要组件。实现Beacon链分片链虚拟机层的以太坊才是一个我们熟悉的完整的公链系统,以太坊2.0的可用性将在这个阶段正式实现。
此时,智能合约被引入系统,资产也能够在链上自由转移;分片链从单纯的数据标记器变成功能完整的区块链,交联操作支持跨分片的通信;一些最常用的开发工具也可能被移植到以太坊2.0,以支持EVM2。EVM2是以太坊新的虚拟机eWASM,基于WebAssembly,支持多种编程语言实现智能合约。
虽然以太坊的分片技术路线图总共包括七个阶段,但在进入到阶段2后,以太坊就将从PoW链迁移到PoS链,从1.0时代真正进入到2.0时代。
32ETH的船票贵不贵
以太坊2.0中的新资产叫BETH,它有两种生成途径,一是由以太坊1.0中的ETH转化而成,1ETH生成1BETH;二是在以太坊2.0中质押BETH参与Staking,作为验证奖励生成。
由于在阶段0,用户可以在Beacon链存入32个BETH成为验证者,姑且可以理解为花32ETH买张船票,跟随以太坊前往以太坊2.0新大陆。问题是,你愿意上船吗?
鉴于在阶段2之前BETH是不能在账户间转移和交易的,以太坊及其各种应用也依然运行在PoW链上,所以当Beacon链上线后,用户会把ETH转化为BETH的唯一原因是用BETH参与Staking,以获得更多的BETH。
根据之前的资料,ETH与BETH之间的转换是单向的,即只能通过合约用ETH生成BETH,而不能把BETH重新换为ETH。
这带来的一个问题就是1枚BETH的价格上限为1ETH,BETH永远不会比ETH更值钱,因为1ETH还包含了一个从ETH转为BETH的权利;同时,转为BETH还意味着为期两年的锁仓期。
不过以太坊创始人VitalikButerin最近在一次讨论中提到了ETH与BETH双向兑换的可能性,以太坊联合创始人JoeLubin近日在接受采访时也表示可能存在双向机制。但双向机制可能带来一个新的问题:BETH通过Staking增发,但ETH不能参与这种增发,双向兑换对以太坊1.0链上的资产是不利的。
以上两种不同的方案会影响用户把资产从ETH转为BETH的动力,进而可能影响以太坊从1.0过渡到2.0的平稳性。用户是否愿意把资产转移到Beacon链这个问题会在阶段2到来后变得严峻,以太坊采用的解决方案也许会在这两年内根据情况不断地调整和变化。
既然转换方案未定,我们不妨先看看用户迁移资产的另一种决定性的动力:抵押BETH参与Staking的收益。
至少在目前阶段,用户并不能通过加入权益池以任意数量的BETH参与进以太坊2.0的Staking,用户只有在Beacon链上质押32BETH才可以获得验证者资格:用户在当前的以太坊PoW主链上发送32ETH至一个注册合约,合约会生成一个「验证者委员会成员名片」,让用户成为以太坊2.0的验证者。
BETH的质押回报率如下表所示,这是VitalikButerin今年4月发布在Github上的一份提案,并且已经被添加到以太坊2.0的规范中:
如果总共质押了100万个BETH,系统每年最多可增发约18万个BETH,质押最大年回报率为18.1%;如果质押1000万个BETH,每年最多可增发约57万个BETH,最大年回报率为5.72%;质押上限为1.34亿个BETH,此时每年最多可增发约209万个BETH,通胀率维持在2%以下,回报率为1.56%。
以太坊基金会研究员JustinDrake认为3000万个BETH的质押是最有利于系统健康的,此时通胀率维持在1%,回报率为3.3%,假设每个分片每年平均消耗1000BETH的Gas,通胀率将降至0.5%,质押者的回报率将达到约5%。
这里有两个指标可以用来做比较:一是如今以太坊上通过金融产品存入以太的回报率,二是Tezos与Cosmos等Staking项目的回报率。
验证者需要投入的另一个成本是运营成本,但它似乎在可接受的范围内。
Ethhub创始人EricConner在深挖以太坊2.0相关规范并同相关研究人员对话后,对验证者年度运营成本的估计是:每个Beacon节点需要120美元,每增加一个验证器,即每多质押32BETH时需增加60美元。
所以,从回报率的角度来看,用户在阶段2之前把ETH转为BETH的动力可能主要取决于三个因素:参与Staking的BETH数量、ETH与BETH之间的转换方式、32ETH的门槛。
不过无论32ETH的「船票」贵不贵,有两类用户可能都会在第一时间参与进以太坊2.0,他们为以太坊2.0的运行提供支撑,即使2.0还没有正式运行以太坊:
一类用户是区块链生态的参与者,尤其是以太坊生态的参与者,投入32ETH是有价值的;一类用户是以太坊一直以来的支持者,他们手中32ETH的「成本价」可能并没有那么高,同时作为在未来也会长期持币的用户,用BETH参与Staking可以让他们获得更多的BETH。
如何保证PoS链的安全性?
Beacon链是PoS共识,如果用户缺乏动力把ETH转为BETH参与Staking,会不会影响以太坊2.0的安全性?
实际上,以太坊2.0通过机制设计保证了自身较高的安全门槛。
首先是惩罚机制。如果验证者有恶意行为,比如同时给两个区块投票,其质押的代币就会被罚没。
如果以太坊2.0共识失败,将意味着有1/3的活跃验证者违反了消减条件,也就是说,一次成功的攻击伴随着的是质押代币总量中的1/3被销毁,这是攻击者要付出的成本——不同于PoW,在PoS下「作案」是要把「作案工具」一并没收的。
另一个,是Beacon链的「验证者集-委员会-证明者」的区块验证方式:活跃的验证者构成验证者集,该集的一个随机抽样子集形成委员会,委员会中的证明者对区块签名验证。
即使验证者集中有超过1/3的验证者是不诚实的,委员会被不诚实验证者掌控的概率也很低,并且随着委员会验证者数量的增加,委员会被掌控的概率迅速降低。
假设我们有1000位验证者,其中333位是不诚实的,当一个委员会由1名成员组成时,该委员会被不诚实验证者掌控的概率是33.3%;当委员会由13名成员组成时,被掌控的概率则只有10%。
以太坊2.0在初始阶段的委员会验证者数量下限是128位,即使不诚实者控制了验证者集中的1/3,攻击成功的概率也不到万亿分之一。
以太坊2.0如何实现随机性?
在有效的机制设计下,影响以太坊2.0安全运行的最重要的一个因素就是随机性,Beacon链诸多协议的执行都是基于「随机数」来完成的。因此,我们简单介绍一下以太坊2.0中随机性的来源。
以太坊2.0是通过RANDAOVDF来解决随机性问题的。
RANDAO是一种生成随机数的方式,它会内建在Beacon链的逻辑中,参与者各自独立提供一个随机数,RANDAO将这些随机数相加得到一个新的数字,并把该数字作为随机数输出。
但RANDAO有一个缺点:最后一个公开随机数的人是可以预测/操纵随机数结果的。因为他知道前面全部的值,所以能够通过自己出随机数还是不出来影响最终的输出。因此,我们需要在RANDAO之上加入VDF。
VDF简化来讲是指在输入一个值后,需要运算很长的一段时间才能得出结果,但这个结果是可以轻易被验证的。VDF把RANDAO产生出来的随机数作为种子去生成新的随机数,而系统使用的是VDF提供的新随机数。
因为VDF随机数的计算时间足够长,最后一个公开随机数的人是无法在自己提供随机数的时间内计算出结果的,也就无法通过自己的行为来影响最终的随机数。
RANDAO的周期是6.4分钟,VDF的周期是102.4分钟,因此以太坊2.0中会有16个VDF同时运行,为系统每隔6.4分钟生成一个随机数,Beacon链将以此为基础完成自己的工作。
需要注意的是,区块链上的随机数问题是个难题,RANDAOVDF同样也需要被进一步验证。
做个勇敢的探索者
以太坊2.0客户端Nimbus的测试网已经上线,它被称作testnet0,运行了一条能够在节点间同步信息的Beacon链,并且节点可以分布在远程的设备上。
此版本设置了400个验证者节点来维护网络的运行,其中有50个验证节点是留给「勇敢的探索者」的,任何人都可以加入。这里我们提供一条小贴士:如果遇到问题,可以在Status的#status-nimbus频道进行询问。
使用Go开发的以太坊2.0客户端Prysm以及使用Rust开发的Lighthouse都即将发布测试网。如果一切顺利,Beacon链,即阶段0的以太坊2.0,会在今年年底上线,就如路线图中规划的一样。
几乎所有人都尊重和喜爱以太坊,但人们也会谈到它的「历史包袱」。如果说以太坊是一艘船,它似乎是一艘笨重的船,难以协调、行动迟缓。
但笨重的船也有它自己的优势,它有更完备、更安全的基础设施、它有更坚持、更彻底的分布式路线,如果把目光放长远,这种船或许才是能承载更多生态、承担更长旅程,最后到达未知大陆的船。
现在这艘船即将起航,海员招募就要开启。你,要一起来吗?
特别提示:
以太坊2.0具体执行方案可能随时会有调整,本文仅做参考,请不断关注最新消息。
以下英文文章大多来源于Medium,其中译本大多出自「以太坊爱好者」。
参考文章:
1.《以太坊2.0:信标链》,Bruno?kvorc
2.《ETH2.0工程指南》,JamesPrestwich
3.《以太坊2.0协议核心Beacon链详解》,BenEdgington
4.《V神提出的以太坊POS质押提案,到底合不合理?》,秦晓峰
5.《如何理解以太坊2.0的经济激励?》,EricConner
6.《以太坊2.0的设计目标》,BenEdgington
7.《以太坊2.0:随机性》,BrunoSkvorc
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。