以太坊2.0并不是一个新主意,早在2014年,Vitalik就提到了以太坊2.0的概念,他说:
“我们要么解决可扩展性和共识问题,要么就死于尝试,” 好吧,我们还活得不错,而他几周前发布的最新观点是:
“对于以太坊2.0来说,理论上已没有明显未解决的问题。”
现在正是实现这些理论的时候了,而Beacon链正是以太坊2.0交付计划的第一个组成部分。在这篇文章当中,我们将讨论它的作用、它为什么是这样做的,以及开发者们是如何开发它的。
在之前的一篇文章当中,作者介绍了以太坊2.0的概念,在这里我们通过Hsiao-Wei Wang提供的以太坊2.0系统 架构图进行展示:
此图还可作为开发和交付以太坊2.0的分步路线图,顺序为从上到下:
PoW 主链是今天以太坊存在的部分:即当前的以太坊主网。在以太坊2.0系统当中,它会继续像今天那样运行。而下面的所有东西都是新的。
Beacon链目前正在开发当中,它也将成为第一个被交付的组件;
分片链会是下一个交付组件,它也是可扩展性的来源。最初,分片链将简单地聚合交易,并就其排序达成共识,而不会执行它们。这将是对系统基础设施以及安全性的一个良好测试;
VM层是以太坊2.0系统的最后一个重要组成部分,它将提供合约以及交易的执行;
Beacon链是一个全新的PoS区块链。它是支撑整个新以太坊2.0系统的脊柱。它的存在,使得整个系统能够保持活力,其负责指挥以太坊2.0系统所有的组成部分。
Beacon链指挥整个以太坊2.0系统,Beacon链的关键功能是管理PoS协议(Casper)以及所有的分片链。它有很多方面的工作要做:管理验证者以及他们的权益(stakes);在每一步为每个分片指定所选的区块提议者;组织验证者进入委员会,对拟议的区块进行投票;应用共识规则;对验证者实施奖励和处罚;并且,作为一个锚点,其中分片会注册它们的状态,以促进跨分片交易;
在我们更深入地研究这些功能之前,请先了解一下术语。Beacon链的名字起源于“随机beacon”的概念,它为系统的其他部分提供随机性来源,而Dfinity项目在其区块链环境中也采用了随机beacon的概念。每个参与节点都会维护自己的本地Beacon链,努力与其它节点保持同步。也许上面带有指挥的图像是有误导性的,虽然Beacon链确实指挥了系统的其余部分,但其指挥者是去中心化的,这就像每个音乐家都有自己的节奏感一样。
让我们来看看Beacon链的一些功能。
管理验证者
Beacon链的主要工作之一就是维护验证者集合,这些验证者节点需通过抵押以太币申请加入,他们会负责运行以太坊2.0系统。验证者可以具有多种状态,但只有那些被标记为“active”的节点才可以参与运行以太坊2.0协议。
而想要加入验证者集的参与者,可通过当前的以太坊PoW主链,向一个Beacon链合约发送32 以太币,在经历一些有效性检查之后,这些币会被锁定,而合约则会发出日志条目(Solidity中的“事件”),它们可被Beacon链客户端所接收。然后被选中的节点就可以导入到Beacon链的验证者集当中。
一旦激活之后,验证者就可以提出区块并参与以太坊2.0协议,当这些区块被选中之后,它们就会同时出现在Beacon链以及分片链上(一旦它们被实现的情况下)。如下所述,这些验证者还会加入对区块进行投票的委员会。
验证者也可以发出信号,表明他们希望退出系统,并停止参与协议的运行。经过一段时间(目前为97天,但可能会更灵活),他们的押金(32以太币)加上奖励再减去罚款,将被退回到一个分片链当中。解锁PoW主网上的初始权益,是不太可能的,除非整个系统失败,并且社区同意给退出者退款。
以上的所有工作,都是由Beacon链在负责管理的。
提供随机性
在区块链系统中很难产生良好的随机性,而一个权益证明( proof-of-stake)协议的关键要求,就是随机性的来源,它必须是分布式的、可验证的、不可预测的,并且是不可剥夺的。而Beacon链就是负责向系统的其余部分提供这种随机性:下面所描述的几个协议功能就取决于这种随机性。
区块链上的随机性是一个很棘手的问题。当前的随机数生成是通过RANDAO结构完成的,验证者会提供一个“哈希洋葱”。 而RANDAO结构只是将很多参与者提供的贡献(单个随机数)组合成单个输出数字的一种方式。为了防止任何一个参与者显着地操纵随机性,开发者使用了一种提交泄露(commit–reveal)方案。当验证者注册时,它会提供一个承诺值,该值是其选择的原始数字经多次哈希后产生的。每次选择验证者作为提议者时,它通过提供最后一个揭示数字的原像来剥离“洋葱”的一层或多层。其它人都可以检查这是否是正确完成的,因此提出者不能通过改变其贡献来欺骗系统。
虽然这种方案并不是不可替代的,如果提出者不喜欢这个随机数,他可以选择跳过它,但对于当前的协议设计来说,这已经是足够健壮的。
区块提出者
Beacon链会管理它的PoS协议,以及每个分片链。在工作量证明系统当中,矿工节点会负责选出下一个区块。而在PoS系统当中,是不存在挖矿这个过程的,因此区块生产者是基于上述协议内的随机性,随机地选择区块提出者。
PoW系统的另一个特性是,区块时间是不规则的,尽管以太坊的区块生成时间平均约为15秒。相比之下,我们将Beacon链的区块生成描述为心跳(heartbeat)。以太坊2.0的区块是每16秒定期生成一次的(如果测试可行,也可能减少到8秒)。这个16秒的周期被称为“slot”(时隙);
在每个时隙(slot),Beacon链所选择的提出者,会收集来自先前区块的Beacon链验证者集的所有协议投票(证明),并将它们纳入其发布的区块。
一旦分片链准备就绪,每个分片在每个时隙(slot)中都会有自己选择的提出者,它们将收集该分片的交易,并将它们纳入一个由分片委员会投票得出的区块当中;
验证者委员会的投票活动,在确保以太坊2.0系统安全性方面起到了关键作用。权益证明(proof-of-stake)区块链的一个重要安全来源是委员会,它们负责对构成区块链真实历史的区块进行投票。而 Beacon链就依赖于计算来自其委员会的投票,我们将其称为“证明”,以便同意并最终确定其历史。在理想的情况下,如果能够快速收集证明,则该委员会的成员,都可以成为系统中的有效验证者。
此外,Beacon链将随机为每个分片指定较小的子委员会,这将在适当的时候负责确认分片的提出者行为是正确的。
奖励和惩罚
Beacon链的另一个管理角色,是跟踪和更新验证者的存款。
如果验证者表现良好,并发挥出了自己的作用,则他们会获得奖励:这是验证者参与以太坊2.0系统的动力。但是,如果验证者违反了规则。那么他们的32个以太币存款会减少(被削减),到达一定程度的情况下,这些验证者会被系统剔除。如果验证者出现缺席的状况(不对区块进行投票),系统也会有小小的惩罚,我们将其称为“二次泄漏”(quadratic leak)。其原因很微妙,即使在大量验证器脱机时(例如在发生灾难时),系统也能够继续处理区块。
如果验证者的存款低于16以太币,则Beacon链会把验证者从验证者集当中剔除出去;
交联(Crosslinks)
最后,Beacon链会执行交联的处理。交联负责将整个分片系统连接在一起,其负责将每个分片锚定在Beacon链的脊柱当中。
周期性地,每个分片的当前状态(“组合数据根”)会被记录到Beacon链当中,并作为交联。当Beacon链区块完成时,相应的分片区块就被认为是最终确定的,而其它分片则可确信它们可依赖它进行跨分片交易。
可视化的Beacon链(蓝色部分),它有8个分片链(碧绿色部分)以及相关交联(浅蓝色线)。所有链上的完成区块都是黄色的,时间从左到右增加。
很快,我们就要结束我们的Beacon链闪电之旅了!就其本身而言,Beacon链可能看起来并不是特别有用。它无法处理任意交易:它没有智能合约,它没有 EVM虚拟机。你没法用它做任何事情。但是,它作为以太坊2.0的第一个组成部分,它是整个系统的基础。整个壮观的以太坊2.0建筑都将以此为基础。所以,它必须是坚实的。
如果你想深入了解细节,那么目前有一份正在进行当中的Beacon链规范。这份规范的所有创建和维护过程都是公开进行的:欢迎有兴趣的人加入。
(在开发 Beacon链的团队)为了运行Beacon链,你就需要用到一个Beacon链客户端。而很多大家所熟知的以太坊客户端(Geth,Parity,Pantheon等)都在进行相关的开发。你可以在此处查看我所知道的列表,其中包含指向其GitHub代码库的链接。 Prysmatic和Lighthouse正在定期更新它们的客户端开发进度,也有一些团队正在向贡献者提供奖励。
关于进度…… 在撰写本文时,Beacon链的技术规范完成度接近了60%。尽管如此,开发者们预计会在今年年底前合理地完成这份规范,并且可能到2019年第一季度末运行多客户端的Beacon链测试网络。最近几周,相关的开发非常迅速,关于以太坊2.0的真正讨论正在拉开序幕!
原文:https://media.consensys.net/state-of-ethereum-protocol-2-the-beacon-chain-c6b6a9a69129
作者:Ben Edgington
翻译:洒脱喜
稿源(译):巴比特资讯(http://www.8btc.com/ethereum-beacon-chain)