作者:林冠宏 / 指尖下的幽灵
博客:http://www.cnblogs.com/linguanh/
GitHub : https://github.com/af913337456/
掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8
目录
- 前序
- 以太坊 2.0 参与者
- 区块的生命周期
- 优化共识算法
- 2.0 共识的流程
前序
以太坊
是区块链领域
中的一个应用,为公链应用,是后者的真子集
。
本文将从一个区块的生命周期
的角度去介绍以太坊 2.0
相比于1.X
做了哪些不同,主要的点在于共识算法
的改变。
BTW:本人技术书籍《区块链以太坊DApp开发实战》现已出版并可网购了,适合初中级区块链技术相关研发人员阅读。
以太坊 2.0 参与者
注意目前2.0版本还没正式上线,部分功能还在开发中,它的整体架构图如下图所示:
包含但不限于引入了以下的新技术点
或 名词
:
信标链
,它将管理着参与共识的验证者。含有但不限于:- 管理验证者。
- 普通地址抵押 ETH 参与成为验证者
- 因各种原因而
自己退出
验证者 - 因惩罚而踢出验证者
- 提供随机性。
随机分配验证者
去某条分片链
随机选择轮到提议
的验证者- ...
- 跟踪和更新验证者的抵押款。
- 投票了成功的区块而获
奖励
- 不去投票、旷工而被
处罚
,我们称之为"quadratic leak(二次泄漏)" - 作恶操作而被
惩罚
- 投票了成功的区块而获
- 跨联,将整个分片链系统连接在一起。
- 当,不同的
交易
被分配到不同的区块,区块在不同的分片链中时,由信标链
负责它们数据/通讯
的一致,比如合约的调用
。
- 当,不同的
- 响应与之相连的验证者客户端软件。
- 届时,人人可以使用
终端设备
下载信标链软件
而成为验证者,参与管理2.0生态。
- 届时,人人可以使用
- 管理验证者。
验证者
,参与 2.0 出块生态的角色,普通以太坊地址通过向指定的智能合约抵押 32 个ETH
,成为验证者。分片链
,拥有多条,它将管理将被打包的交易
,验证者会被随机分配
到这里,生成块,再排队等待,去投票块或拒绝块。EWASM
,分片上的虚拟机系统,为 EVM 的升级版。下图是其 github 项目主页。- ...
区块的生命周期
基于以太坊 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
原来越多,且要考虑支持要求交易速度更高的应用时,它必须要升级了。
现在升级,就需要考虑更多的问题,比如说:
- 依然要保持去中心化,因为这是区块链的核心特性之一。
- 有效对抗共识中心化的威胁,比如 PoW 要考虑的算力中心化。
- 区块共识的成本性考虑,比如算力对电力的资源的消耗。
- 对于旧共识机制的节点阵营,是否会导致硬分叉链的诞生。
- 与前区块链的区块数据嵌接性。
- 提高出块与交易打包的吞吐性。
- 区块被验证的速度。
- ...
对于第六点
,因为出块成功的效率直接影响了交易被打包成功的效率,从而交易成功的速度也跟随着而改变。
2.0 共识的流程
组合前面小节 以太坊 2.0 参与者
谈到的各个角色,以太坊 2.0 的共识机制,目前看来是符合 PoS
模式的,为什么是目前看来?因为2.0还没发布,所以在这之前一切都有变数。
在区块的生命流程中的进行共识
的一个步骤可以细分为下图。
图中有两个重要的随机:
- 随机分配验证者到
分片链
。从验证者集合中,挑选各个部分的验证者分配到某一条分片链中。 - 随机提议验证者。被提议的验证者提议自己所在分片链生产的区块,供其它分片链的验证者进行投票。投票可以投认可票,也可以投拒绝票。
注:
叔块
的概念目前不确认是否还会存在以太坊2.0
中,故 暂时不在图中作出。
最后,大家可以看下一些暂定到时可以运行与信标链
进行通讯的客户端软件
: