简介 以太坊 2.0 核心 之 共识机制的改变

2,421 阅读5分钟

作者:林冠宏 / 指尖下的幽灵

掘金:juejin.im/user/178526…

博客:www.cnblogs.com/linguanh/

GitHub : github.com/af913337456…

腾讯云专栏: cloud.tencent.com/developer/u…

虫洞区块链专栏:www.chongdongshequ.com/article/153…


目录

  • 前序
  • 以太坊 2.0 参与者
  • 区块的生命周期
  • 优化共识算法
  • 2.0 共识的流程

前序

以太坊区块链领域中的一个应用,为公链应用,是后者的真子集

本文将从一个区块的生命周期的角度去介绍以太坊 2.0相比于1.X做了哪些不同,主要的点在于共识算法的改变。

BTW:本人技术书籍《区块链以太坊DApp开发实战》现已出版并可网购了,适合初中级区块链技术相关研发人员阅读。


以太坊 2.0 参与者

注意目前2.0版本还没正式上线,部分功能还在开发中,它的整体架构图如下图所示:

包含但不限于引入了以下的新技术点名词

  1. 信标链,它将管理着参与共识的验证者。含有但不限于:
    • 管理验证者。
      • 普通地址抵押 ETH 参与成为验证者
      • 因各种原因而自己退出验证者
      • 因惩罚而踢出验证者
    • 提供随机性。
      • 随机分配验证者去某条分片链
      • 随机选择轮到提议的验证者
      • ...
    • 跟踪和更新验证者的抵押款。
      • 投票了成功的区块而获奖励
      • 不去投票、旷工而被处罚,我们称之为"quadratic leak(二次泄漏)"
      • 作恶操作而被惩罚
    • 跨联,将整个分片链系统连接在一起。
      • 当,不同的交易被分配到不同的区块,区块在不同的分片链中时,由信标链负责它们数据/通讯的一致,比如合约的调用
    • 响应与之相连的验证者客户端软件。
      • 届时,人人可以使用终端设备下载信标链软件而成为验证者,参与管理2.0生态。
  2. 验证者,参与 2.0 出块生态的角色,普通以太坊地址通过向指定的智能合约抵押 32 个ETH,成为验证者。
  3. 分片链,拥有多条,它将管理将被打包的交易,验证者会被随机分配到这里,生成块,再排队等待,去投票块或拒绝块。
  4. EWASM,分片上的虚拟机系统,为 EVM 的升级版。下图是其 github 项目主页。
  5. ...

区块的生命周期

基于以太坊 1.8.11版本源码。请注意这个前提,所属版本称号为:大都会 之 上章 --- 拜占庭

首先我们来看下以太坊 1.8.11区块生命周期图解。一目了然地,如下图所示。一个很明显的点是:以太坊挖矿算法还是PoW 算力挖矿。这也是导致了出块时间最严重的地方,要增加出块的速度,优化共识算法是一个主要的点。

优化共识算法

以太坊PoW 算法进行修改在早前已经是以太坊团队声明过的一个举措。本来的进程计划是:

PoW --> (PoW + PoS) --> PoS

关于PoW共识算法的通俗讲解见我这篇文章:区块链的共识算法:整体介绍 及 分叉 的通俗讲解

关于PoS共识算法的通俗讲解见我这篇文章:区块链的共识算法:PoS 及其 例子 代码 实现


目前的,已经发布了的君士旦丁堡版本,本身是以为是转为PoS共识的了,无奈依然是PoW

2.0 版本是以太坊现在规划中的最后一个版本: Serenity(宁静),正是在这个版本,以太坊团队将明确要引入新的共识机制,一起参与实现这项修改的角色正是本文的 以太坊 2.0 参与者 小节所提到的那些。

由于以太坊公链一开始采用的是PoW 共识机制 已经运行了很久。它不同于一些新生的公链,在一开始的时候可以挑选性能更好的共识算法,在前人吃螃蟹者 --- 比特币公链的基础上,它也采用了 PoW。因此发展到现在,随着部署在它上面的 DApp 原来越多,且要考虑支持要求交易速度更高的应用时,它必须要升级了。

现在升级,就需要考虑更多的问题,比如说:

  1. 依然要保持去中心化,因为这是区块链的核心特性之一。
  2. 有效对抗共识中心化的威胁,比如 PoW 要考虑的算力中心化。
  3. 区块共识的成本性考虑,比如算力对电力的资源的消耗。
  4. 对于旧共识机制的节点阵营,是否会导致硬分叉链的诞生。
  5. 与前区块链的区块数据嵌接性。
  6. 提高出块与交易打包的吞吐性。
  7. 区块被验证的速度。
  8. ...

对于第六点,因为出块成功的效率直接影响了交易被打包成功的效率,从而交易成功的速度也跟随着而改变。

2.0 共识的流程

组合前面小节 以太坊 2.0 参与者 谈到的各个角色,以太坊 2.0 的共识机制,目前看来是符合 PoS 模式的,为什么是目前看来?因为2.0还没发布,所以在这之前一切都有变数。

在区块的生命流程中的进行共识的一个步骤可以细分为下图。

图中有两个重要的随机:

  1. 随机分配验证者到分片链。从验证者集合中,挑选各个部分的验证者分配到某一条分片链中。
  2. 随机提议验证者。被提议的验证者提议自己所在分片链生产的区块,供其它分片链的验证者进行投票。投票可以投认可票,也可以投拒绝票。

注:叔块的概念目前不确认是否还会存在以太坊2.0 中,故 暂时不在图中作出。以及不可逆的是一种理想状态,

最后,大家可以看下一些暂定到时可以运行与信标链进行通讯的客户端软件: