原文作者:Glaze, Fundamental Labs
原文编译:Aididiao
以太坊合并正在进行,但权益证明(PoS)机制的启动时间已经被一次又一次的推迟。
以太坊合并是指将现有的工作量证明(PoW)共识机制转换成权益证明(PoS)共识机制,挖矿的奖励将由参与者质押及数字资产的多少来决定,而不再是电力和资源密集型的算力决定。为了保证以太坊顺利合并,矿工转而使用权益证明,以太坊决定增加炸弹难度机制确保以太坊合并更加顺畅。
难度炸弹机制设置之后,PoW 网络的挖矿难度将随着时间的推移呈指数级增长,从而减少矿工的 ETH 奖励,最后 PoW 网络停止生产区块,所有矿工只能切换到 PoS 网络。
下图中的每一个波峰都代表难度炸弹对挖矿难度的冲击。由于难度炸弹在合并过程中不断被推迟,这种波动已经消失了相当一段时间了。
来源:Etherscan
长期以来,以太坊高昂的 Gas 费和缓慢的网络交易速度被用户所诟病,而 PoW 共识机制可以帮助以太坊解决这些问题。
本文将解释 PoS 共识机制的历史以及以太坊合并中遇到的困难。
快速了解新的共识机制
每一个区块链网络上存在很多节点,共识机制作用协调这些节点,让不同的节点之间对产生的新区块达成共识。共识机制是分布式网络能够顺利自运转的关键所在。
共识机制通常很复杂,要想快速了解一种新的共识机制,只需要回答:
新的区块由谁提出?
区块链如果出现分叉,决定谁是主链的要素是什么?
PoW 共识机制概述
在 PoW 共识机制中,矿工反复尝试求解一种基于哈希算法的数学难题。首先解出的矿工就会获得记账权,从而提出新的区块。如果区块链出现分叉,最长的分叉链将成为主链。如果有人想要操纵区块链,攻击者至少要达到 51% 的算力。PoW 网络挖矿需要电力资源,同时对硬件的要求很高,有一定的成本门槛。挖矿所获得的奖励与其计算能力成正比。
与 PoS 相比,PoW 相对简单。因为 PoW 不需要涉及随机数等问题,而 PoS 需要使用随机数来随机选择区块提议者。
PoS 共识机制详解
以太坊合并过程中,以去中心化的方式鼓励更多的节点加入网络,因此需要更加复杂的协议来支持数千个节点的点对点通信,保障网络的正常运行。
PoS 共识机制即权益证明机制,节点需要在网络上质押原生代币。质押代币越多,节点越有可能产生区块。PoS 共识机制对硬件要求不高,但是需要资金完成质押。如果节点出现作弊情况,网络将立即削减节点所质押的代币。由于节点不需要花费电力资源和使用高端硬件设备,PoS 网络具有可持续性、更高效的反应机制、更高的 TPS 和安全性,因此大多数网络都会采用 PoS 共识机制。
PoS 的两个阶段
PoS 经历了两个阶段的发展,PoS 1.0 是基于区块链的共识机制,而 PoS 2.0 是基于 BFT(拜占庭错容)的共识机制。
PoS 1.0 共识机制: PeerCoin、NextCoin、BlackCoin 和 Ethereum Serenity。
PoS 2.0 共识机制:Ethereum 2.0、Tendermint 和 Cosmos 等项目。
PoS 1.0
在 PoS 1.0 阶段,大多数 PoS 机制:
节点质押代币
随机选择一个节点产生新的区块,节点产生新区块的概率与质押代币的数量成正比
在这个过程最重要的是随机数的生产,如果随机数的生成是基于时间戳和哈希算法,那么节点有可能会通过影响随机数生产的方式来增加自己再次被选为区块提议者的概率,从而产生新的区块。
攻击向量
黑客可以通过攻击向量访问计算机或网络服务器,以传递有效负载或恶意结果。攻击向量使黑客能够利用系统漏洞,可能导致资产被盗。常见的攻击向量有:
Staking grinding:区块提议者执行一些计算或采用其他步骤来试图将随机性偏向于他们自己,以此来获得更多生成区块的机会。
Nothing at stake:在 PoS 网路中,节点不需要额外的机会成本进行挖矿,所以会在每一个竞争分支上进行挖矿以最大化他们的奖励。但这对网络的稳定性是有害的。
Long-range attack:早期矿工可能追溯早期版本的区块链,容易造成分叉。
PoS 2.0
PoS 2.0 采用的是 BFT,其目标是在不同节点之间达成共识。
在所有节点中,通过随机算法选出主节点,可以提出提案和通讯。其他节点中存在恶意节点,即拜占庭节点。拜占庭节点为了阻挠真实信息的传递及共识的达成,会向各个节点发送前后不一致的信息,通常以这种方式作弊:
未返回结果
以错误的结果回应
以故意误导的结果回应
以不一致的信息回应
除了拜占庭节点外其余节点均为诚实节点,还有一种最困难的场景主节点是拜占庭节点。
BFT 还有其他限制:
节点只能对等通信
节点保存已发送信息的日志
点对点通信导致不同的节点会有不同的视图,节点没有在全局同步状态,例如节点 A 找到 3 个新区块的同时,节点 B 只能看见 1 个新区块。
BFT 的主要目的是主节点提案之后,除了拜占庭节点之外的每一个节点都可以达成协议,次要目标是发现拜占庭节点。
BFT 算法介绍
现在 BFT 算法通常采用多轮投票来确保每个节点都知道提案是否被超过三分之二的节点批准。
每一轮投票都有四个步骤:
客户端向主节点发送请求
主节点向所有节点传递请求
节点返回执行结果回应主节点
得到超过三分之二节点相同的结果后,主节点再把结果反馈到客户端
下图显示了执行过程的 5 个节点。其中 C 是客户端,0 是主节点,3 是拜占庭节点。
在准备和提交阶段,需要确保不同节点之间的同步进行。
Tendermint 有一下几个限制:
点对点通信时网络节点不能超过 100 个
点对点通信需要复杂设计
执行延迟。节点首先决定新区块,然后再执行新区块的所有信息。虽然单个交易执行可以正常工作,但一次执行所有交易可能会导致双花问题。
编者注:Tendermint 是用于在多个节点上安全且一直地复制应用程序的软件。即使多大三分之一的节点以任意方式发生故障,Tendermint 也能正常工作。Tendermint 被设计为易于使用、易于理解、高性能且适用于各种分布式应用程序。
目前的 BFT 算法可以在以下条件中达成一致:
4 个节点中最多有 1 个是拜占庭节点
25 个节点中最多有 8 个是拜占庭节点
100 个节点中最多有 33 个拜占庭节点
网络运行状态可分为一下集中情况。假设 f 是拜占庭节点的个数,网络汇总共有 3k+1 个节点,k 是随机整数。
f ≤ k,网络稳定
k < f < 2k+1,部分节点可能无法达成共识。区块链暂停
f ≥ 2k+1,存在安全隐患
Ouroboros 算法机制
与 BFT 算法相比,Ouroboros 能够支持更多的节点,同时支持节点随时进出。Ouroboros 比 BFT 更加去中心化和灵活,但是反应时间更长。使用 Ouroboros 算法机制的有 Cardano and Mina。
Ouroboros 算法机制将时间划分为不同的时段,在每个时隙之中使用 VRF(可验证随机函数)生成随机数,并用生成的随机数来决定新的区块提议者。质押更多的节点更有可能成为区块提议者。
当出现分叉时,Ouroboros 将使用预定义的选择规则确定主链。例如它可能会选择最「密集」的链为主链,同时预定义选择规则是可以通过投票来协商的。
展望未来
区块链网络在去中心化和性能之间做出平衡,从 PoW 切换到 PoS 表明区块链对 TPS、去中心化、代币经济学和交易速度有更高的追求。围绕这四个特征,未来将出现更多的创新。
GameFi 和 DeFi 应用中的代币经济学创新可以在共识机制应用。当前的质押机制简单且过时,例如许多 DeFi 项目普遍使用 Ve 代币,以提高质押比例并降低流通量。用户需要将项目代币质押一点时间后可以获得 VE 代币代币,质押的时间越长,获取的 Ve 代币就越多,通过这种方式可以提高质押率。双代币模式也是很好的创新方向,奖励代币和治理代币分开可以获得更多的价值,许多成功的项目通过双代币模式减少市场抛售压力。
应用程序的迭代速度远比底层协议(如共识机制)快的多,因此应用程序的创新很难应用到底层协议上。虽然模块化可以解决这个问题,但存在一定风险。
参考文献
https://www.geeksforgeeks.org/practical-byzantine-fault-tolerancepbft/
http://muratbuffalo.blogspot.com/2020/01/practical-byzantine-fault-tolerance.html
https://minaprotocol.com/blog/how-ouroboros-samasika-upholds-minas-goals-of-decentralization
https://arxiv.org/pdf/1807.04938.pdfhttp://www.cs.cmu.edu/~dga/15-712/F13/papers//castro99.pdf
http://muratbuffalo.blogspot.com/2020/01/practical-byzantine-fault-tolerance.html