洒脱喜一周评 | 6年磨剑,以太坊PoS魔法的前世今生
写在前面:
在未来的几个月内,除了比特币产量减半这一确定性事件,还有一件事,也将成为区块链行业人士的关注焦点,这便是以太坊PoS链的上线。对于Vitalik Buterin而言,以太坊从PoW转向PoS的理由有很多,例如避免51%攻击、节能、提高可扩展性等,而这一计划从以太坊诞生之初便已存在,6年间其经历了数个版本的改进,并在近期迎来了最新的版本—— Gasper ,一个结合了 Casper FFG 和LMD GHOST分叉选择规则的理想版本PoS共识协议,而这也是本周要分享的学术内容。而在硬核技术文章精选部分,我们还会看到关于多项式承诺方案、反51%攻击、比特币新交易重播逻辑等内容。
另外,在过去的一周当中,比特币和以太坊相继迎来了一些新的技术研发进展。
(图片来自:tuchong.com)
一、Gasper:结合GHOST和Casper
在PoW共识环境成长下的以太坊,即将迎来一段新的旅程,尽管权益证明(PoS)被寄予了厚望,然而至今并没有出现一个非常成功的PoS系统,节能而高效的PoS魔法,似乎依旧只存在于故事当中。
而善于思考的Vitalik,则联合以太坊2.0协调员Danny Ryan,以及来自圣荷西州立大学(SJSU)的多位研究者,共同提出了一种名为“Gasper”的PoS共识协议,它是以太坊2.0 信标链理想版本的共识协议。研究者们表示,该协议结合了终局性工具Casper FFG和分叉选择规则LMD GHOST,并且在不同的假设条件下,其安全性以及活性(liveness)均得到了证明。
原论文链接:https://arxiv.org/pdf/2003.03052.pdf
1、1 简介
所谓Gasper,它是由Casper FFG和LMD GHOST(分叉选择规则)组合而成的。Casper FFG算法负责将区块链中的某些区块标记为已完成,以便具有部分信息的参与者,仍可完全确信区块是规范区块链的一部分。
Casper并不是一个完全指定的协议,它被设计成了一个“小工具”,其对于区块链是属于工作量证明(PoW)还是权益证明(PoS)是不可知的。而LMD GHOST则是一个分叉选择规则,其中验证者(参与人)证明区块以表示对这些区块的支持(例如投票)。而Gasper,则是一个完全的权益证明(PoS)协议,它是提议以太坊PoS实现的理想版本协议。
1、2 Gasper的相关术语和目标
Gasper的目标是成为一种具有一定安全性和活性(liveness)的权益证明(PoS)协议。而在了解它之前,我们先来认识一下共识协议和区块链的一些背景。(注:由于论文当中使用了大量学术词汇,因此本节内容的主要目的是挑选一些特定的词汇,以便大家对Gasper能够有一个好的认识)1.2.1 共识协议、验证者和区块链
对于共识协议而言,它的目标在于,即使网络是不可靠的,或者有很多验证者是恶意的,也有一组实体(节点、人等)能够遵守一套被公认的算法,以获得网络状态的共识历史。
我们把参与协议的实体(人、程序等)称为验证者(validator),并用集合
V
表示。由于它们在以太坊2.0信标链中的数据验证作用,因此将它们称为“验证者”,这一角色不仅仅是以太坊抽象协议独有的,其它区块链当中也有类似的概念(只是使用了不同的术语),例如经典PBFT文献中的“副本”,DPoS和EOS中的“区块生产者”,点点币和NXT中的“对等节点”或者Tezos中的“烘培者”(baker)。
验证者在对等式网络中相互连接,这意味着它们可以相互广播消息(基本上是数据包)。
而网络的第一个区块,我们称之为创始区块,并将其作为初始“空白板”状态。其它区块则是状态转换的描述,并带有指向父区块的指针。而区块链便是共识协议的实例化(即具有特定的网络条件、验证者等),在其中,我们使用区块来构建整个状态。
然而,我们并不希望网络上出现的所有区块都被接受为公共历史,因为区块之间可能会发生冲突。这些冲突可能是由于诚实的原因(如网络延迟),或恶意原因(如拜占庭验证者想要双花交易)造成的。这里的拜占庭,指的是分布式系统中的一个经典问题——拜占庭将军问题(本文中该词用于描述不遵循协议的验证者),而可能的原因有,验证者是恶意的,或者它们正在经历网络延迟。从理论上讲,人们可以把历史的选择,看作是从创始区块到特定区块的“链”的选择,这就是为什么我们把这种协议的实例化称为“区块链”。
1.2.2 信息和视图(View)
在Gasper模型中,验证者
V
通过广播消息(某种语言的字符串)与网络进行交互。当诚实的验证者
V
广播消息
M
时,我们假设
M
被发送到网络上的所有验证者。
消息的主要类型向网络提议一个数据块,其它消息可以是记账通知,例如为区块投票(“证明”),在区块链上设置新的验证者(“激活”),证明其它验证者存在错误操作(“罚没”)等,这取决于特定的协议。我们假设每条消息都经由一个验证者进行数字签名,这意味着我们可以准确地跟踪每条消息的作者,而像冒充诚实验证者这样的攻击则是不可能实现的。
由于可能存在网络延迟和恶意验证者(即延迟消息或转发不正确的信息),对于提供给网络的全套消息,验证者可能具有不同的认知状态。而每则消息,可能有一个或多个依赖项,其中每个依赖项,则是另一则消息。在任何时候,只要消息的所有依赖项都被接受并递归定义,我们就接受该消息。现在,我们定义验证者V在给定时间T的视图为
view(V, T)
,其作为验证者迄今看到的所有已接受消息的集合。我们还有一个“上帝之眼视图”,我们称之为网络视图,其定义为假定验证者的接受消息集合,该验证者在任何时候都能看到任何验证者广播的所有消息(包括恶意验证者发送到网络子集的消息)。
我们把网络视为一个“虚拟验证者”,因此我们使用
view(NW, T)
来表示时间
T
时的网络视图。对于任何验证者
V
和任何给定时间
T
,
view(NW,T)
包括
view(V, T)
中的所有消息,尽管时间戳可能不匹配。
图1 :视图的可视化图形(仅可视化区块,而不包括其它消息)
如上图所示,视图中的区块形成了一颗树,其中C区块和D区块是冲突的(E区块和D区块也冲突),E有最长链,即
链(E)=(B genesis, A, B, C, E)
。
1.2.3 权益证明(Proof-of-stake)
区块链协议第一个,同时也是最具影响力的实现,就是比特币,它使用的是工作量证明(PoW)模型,这种方法使用的是简单、直观的分叉选择规则,即矿工(与验证者类似)会选择在最重链(计算工作量最大的链)上构建区块,这在数学上并不能保证任何非创始区块是“正确”的,但这提供了一个概率上的保障,因为一旦其它矿工在其之上构建了区块,那它就越来越不可能和区块发生冲突。也就是说,PoW区块链的共识历史,便是工作量最大的链, 理想情况下,该区块链会一直增长。
而在本文中,我们探讨的是一个权益证明(PoS)区块链,其中验证者的投票权与其在系统中质押的权益(或资金)成正比。与PoW使用计算能力来提议区块相比,PoS提议区块本质上是免费的。
然而,这也给PoS系统的设计带来了其它挑战,我们需要一个额外的数学理论层,以防止区块提议变得“容易”时产生的不正当激励,现在,我们就把重点转移到设计权益证明(PoS)区块链需要考虑的一系列考虑。
首先,假设我们有一组N个验证者的集合
V = {V1, . . . , VN }
,并且每个验证者V ∈ V 都有一定数量的质押权益
w(V )
。我们进一步假设每个验证者的平均持有权益量为1个单位,所以总持有权益的总和为N。我们假设验证者集和质押数量大小是固定的,以便集中于协议的理论要点。
则我们需要的主要组成成分有:
- 分叉选择规则:当给定一个视图G,分叉选择规则会识别单个子叶区块B。此选择会产生一个唯一的规范链;在视图G中,区块B被称为区块链的头部(head),直观地说,分叉选择规则告诉了验证者一个“法则”,让它们去遵守什么是“正确”的区块。例如,最长链规则也是一个分叉选择规则,它返回离创始区块最远的子叶区块,这一规则和比特币使用的“最重链规则”是类似的。
-
终结性(finality)的概念:形式上,一个确定的函数
F
,当给定一个视图G
时,返回一组完成的区块集F(G)
。直观地说,最终确定的区块,是指每个人最终都认同的“共识历史的一部分”或“区块链确定的内容”。 - 罚没(Slashing)条件:这些条件对于诚实验证者而言没有意义,因为它们不会违反,而违反它们的验证者会被抓住,然后其质押的权益会遭到罚没惩罚,甚至销毁。罚没条件激励验证者遵守协议(例如,协议可以奖励诚实验证者捕获违反条件的非诚实验证者)。
为了防止验证者以破坏协议的方式进行双重投票或投票,Gasper强制使用可用于销毁验证者质押权益的罚没条件,以激励验证者遵守协议。
图2 : 一个既有区块,又有证明(attestation)的理想视图
如上图所示,我们可以看到一个理想化的PoS协议版本,在每个时间段中,都会创建一个新区块,其中父区块是链的最后一个head(理想情况下,这只是创建的最后一个区块),并且相应委员会中的验证者都完美地证明了该新区块。在不太理想的情况下,区块可能会有分叉,我们可能会缺少证明(attestation)等等。而证明(attestation)将通过帮助验证者确定正确的链head来发挥作用。1.2.4 拜占庭验证者和PBFT
在协议中,如果验证者遵循协议,我们将其称为诚实验证者,否则就称为拜占庭验证者。我们通常会严格假设小于1/3的验证者是拜占庭式的,这一常数可追溯到实用拜占庭容错(PBFT)协议,只要系统少于1/3的副本(和Gasper的验证者同义)是拜占庭的,则PBFT就能确保系统正确运行。在很多基于PBFT基础的协议中,这种1/3容错是普遍存在的(主要思想是鸽子洞原理),而Casper FFG是和Gasper协议最直接相关的。
而PBFT最重要的一个方面,在于它是在异步条件下工作的,这意味着我们对接收消息的时间没有限制。因此,PBFT对于区块链和加密货币而言是非常适用的。
1.2.5 安全性与活性(Liveness)
诚实验证者的最终目标是发展一条最终链,其中所有区块彼此形成“逻辑一致”的状态转换(尽管验证者可能会离线、遭受延迟问题,或恶意提出有冲突的状态更改)。而这就转化为两个期望属性:
-
安全性
:目标是任何视图G的最终区块集F(G)永远不能包含两个冲突区块。具有安全性的一个结果是,任何验证者视图G的最终区块F(G) ,都可以“完成”为
F(view(NW))
的唯一子链,其从创始区块开始,到最后一个完成区块结束,我们称之为最终确定链(finalized chain)。 - 活性(liveness) :指最终确定区块集能够实际增长。有不同的方式来定义活性(liveness),在这篇文章中,我们说协议有:(1) 貌似合理的活性(plausible liveness) ,指不管以前发生过什么事件(攻击、延迟等),新区块总有可能被最终确定(或者不可能陷入“僵局”)。这是为了防止诚实验证者不能继续下去,除非有人丧失了他们自己的质押权益。(2) 概率活性(probabilistic liveness) ,如果不考虑任何以前的事件,新的区块很可能会被最终确定(一旦我们对网络延迟、攻击者能力等做出一些概率假设)。
1.2.6 时间和Epoch周期
在Gasper的模型中,有一个被称为时隙(slot)的时间概念,每个slot代表恒定的秒数(例如以太坊2.0 phase 0规范设定的12秒),然后我们定义一些常数C为一个epoch周期(暂定为64个时隙(slot))。Epoch周期的主要目的,是把时间分割成碎片,它们之间的界限可以被认为是“检查点”(checkpoint),这允许使用Casper FFG中的概念,我们将在下文中看到。
1、3 主要组成成分(Casper FFG+ LMD GHOST分叉选择规则)
1.3.1 Casper FFGVitalik和Griffith提出了Casper FFG这种工具,其被设计用于处理具有树状结构的广泛区块链协议。
- 每个区块都有一个高度,该高度由它们与创始区块(高度为0的区块)的距离定义,也就是说,区块B的高度,就等于chain(B)-1的长度;
- 我们将检查点区块定义为常数H倍数的区块(Casper FFG中,H = 100),我们将检查点区块B的检查点高度h(B)定义为B的高度除以H,其中H始终是整数。因此,我们可以将视图中检查点的子集看作是子树,其只包含高度为H倍数的区块;
- 证明(Attestation)是包含“检查点边缘”A → B的签名消息,其中A和B是检查点区块。我们可以把每一个这样的证明看作是从A区块转移到B区块的“投票”。而每一个证明(Attestation),都具有权重,这是验证者编写证明的质押权益。
最后,Casper引入了罚没条件,这是关于诚实验证者的假设。当验证者
V
破坏这个规则时,另一个验证者
W
可以通过提供
V
违反条件的证明来罚没
V
(破坏V的质押权益,并可能获得某种“罚没奖励”)。
1.3.2 LMD GHOST分叉选择规则
贪婪最重观察子树规则(GHOST)是由Sompolinsky和Zohar提出的分叉选择规则,直观地说,GHOST是一种贪婪的算法,其在“最活跃”的分支上增长区块链。而Vlad Zamfir在探索Casper CBC共识协议时,引入了一个GHOST的自然适应版本,其恰好非常适合Gasper的设置,我们称这种变体为最新消息驱动的贪婪最重观察子树(LMD GHOST)。
LMD GHOST的思想是,在任何分叉中,我们使用分叉创建子树的权重作为启发式,并假设权重最大的子树是“正确的”子树,其定义了一条规范链。
图3 :LMD-GHOST分叉选择规则的示例
如上图所示,每个区块B中的数字代表权重(按质押量算),在该示例中,所有证明(圆)的权重为1。使用此视图的验证者将把蓝色链视为规范链,并输出左侧最新的蓝色区块(权重为3)作为链的头部(head)。1、4 共识协议Gasper
接下来,我们来正式认识以太坊将采用的共识协议Gasper,它是GHOST和Casper FFG思想的结合体,其主要概念有:- Epoch界限对(boundary pair) :给定一条链,挑选出某些区块,理想情况下每个epoch有一个对,以扮演Casper检查点的作用。但是,一个区块可能不止一次作为同一条链上的检查点出现(这是Gasper和Casper不同的地方),所以我们使用有序对(B,j)来消除歧义,其中B是一个区块,而j是一个epoch。这些将被称为epoch界限对,或简称对(pair);
- 委员会(Committee) :在每个epoch周期,验证者会被划分到委员会。在每个slot周期中,来自指定委员会的其中一个验证者会提议一个区块。然后,该委员会的所有验证者成员将使用 HLMD GHOST 分叉选择规则(LMD GHOST的修改版本)来证明他们所看到链的head。
- 辩护(Justification)和终结(Finalization) :这些概念实际上与Casper FFG的概念相同,只是这里使用的是辩护和终结对(Pair),而不是辩护和终结检查点区块。
由于最终的设计乍一看是相当复杂的,我们先介绍一个“原型”版本的 HLMD ,简单地说,它是从视图中最后一个辩护区块开始,然后运行LMD GHOST。
然而,使用这一原型会遇到一些微妙的问题,因为证明(attestation)的“FFG部分”是epoch界限对之间的投票,而LJ(B)只依赖于ffgview(B),我们可以认为“链中最后辩护对”在每个epoch周期的开始都是“冻结”的,这与“非冻结的”(BJ,j)不太协调,因为后者的定义在一个epoch周期中会发生变化。因此,我们需要一个(BJ,j)的版本,它在一个epoch周期中不会发生变化。
另一个问题发生在算法分叉时:分叉区块可以有完全不同的最后辩护对,即使它们彼此相邻。
为了解决这些问题,Gasper的最终解决方案如下:
1.4.2 罚没条件
Gasper中的罚没条件,类似于Casper中的罚没条件。
条件1
:没有验证者用
ep(α1) = ep(α2)
作出两个不同的证明α1和α2,注:该条件相当于
o aep (LE (α1)) = aep (LE (α2))
;
条件2
: 没有验证者用
aep (LJ (α1)) < aep (LJ (α2)) < aep (LE (α2)) < aep (LE (α1))
作出两个不同的证明α1和α2;
这使得协议具有一个非常有用的性质:除非我们处于一个不太可能的情况,即我们有足够的证据,以至少1/3的总质押金来罚没验证者,否则在一个视图G中,我们可以假设J(G)中的所有元素都有唯一的证明epoch。
1.4.1 奖励和惩罚
验证者在其提议的区块中纳入有效证明,或者证明辩护区块和最终确定区块时,都应该得到奖励,前者被称为提议者奖励(proposer reward),后者被称为证明者奖励(attester reward)。
同时,如果一个验证者违反了罚没条件,就应该遭到处罚(减少质押金)。
奖励和惩罚可根据需要达到的安全级别进行调整,此外,更复杂的激励机制也是值得考虑的,例如激励验证者捕获其它行为不当的验证者。为了简单起见,我们假设这些奖惩机制提供了足够的激励,从而将这一分析抽象为:
- 诚实的验证者遵循协议;
- 任何诚实的验证者在观察到有人违反罚没条件,就可以惩罚这些违规的验证者;
1、5 总结
Vitalik等人为基于权益证明(PoS)的区块链提出了一个抽象的Gasper共识协议,其结合了LMD GHOST分叉选择规则和Casper FFG的概念,这是Casper FFG概念向完备区块链协议的第一个正式证明。而这一设计的目标,是以简洁、实用之间的平衡为指导,同时兼顾安全性以及活性。
洒脱喜简评:尽管Gasper被Vitalik等人称为信标链的理想版PoS共识协议,然而以太坊2.0 第0阶段的预期上线时间已非常临近,因此短期内其是否会得到采用依旧是一个未知数,而对于这一PoS魔法是否真正有效,这还需要实践过后才能见分晓。
二、硬核技术文章一周精选
2、1 Vitalik:以太坊状态爆炸问题,多项式承诺方案可解决
为了应对以太坊的状态爆炸问题,以太坊联合创始人Vitalik提出了新的解决方案,其提议使用多项式承诺(polynomial commitments)方案来替代默克尔树(Merkle tree),以此大大减少无状态以太坊客户端的见证数据(witnesses)。文章链接:https://www.8btc.com/article/567865
2、2 反51%攻击:哈佛MIT学者提出抗击双花新理论
历史上区块链世界曾多次发生51%攻击,而它们都发生在小币种的身上,而据哈佛大学和MIT的研究者表示,他们在观察到的40次重组攻击中,还看到了可能的反攻击案例,在2020年2月份,Bitcoin Gold区块链上疑似出现了攻击者与防御者的多轮对攻情况,对此,研究者提出了防御51%攻击的反击理论。文章链接:https://www.8btc.com/article/568133
2、3 比特币开发又有新进展,Core开发者提出修改比特币交易重播逻辑,更好的交易隐私性
Bitcoin Core开发人员Amiti Uttarwar正致力于修改比特币的网络重播逻辑,以在交易重播过程中引入更多的隐私。文章链接:https://www.8btc.com/article/569463
2、4 干货 | 编程小白模拟简易比特币系统,手把手带你写一波(附代码)
如果有一个 p2p 的 demo,我们要怎么才能应用到区块链当中?作者VV一笑ヽ提供了一个教程。文章链接:https://www.8btc.com/media/567921
三、比特币&以太坊 开发更新进展
3、1 比特币开发更新进展
- Pieter Wuille在比特币开发者邮件列表上发表了一封 邮件 ,概述了一种通过在ECDSA或schnorr签名中使用nonce来防止硬件钱包或其他离线签名设备向第三方传递机密信息的技术;
-
BIP322
的作者Karl Johan Alm指出,在过去的几个月里,他为通用
signmessage
协议添加的PR在合并方面没有任何进展。如果钱包开发人员希望为P2SH、P2WPKH、P2WSH以及将来激活的P2TR地址(等待taproot落地)启用此功能,建议他们查看Alm的电子邮件,并提供相关反馈;
3、2 以太坊开发更新进展
以太坊1.X更新内容:- 十六叉树到二叉树转换的研究 ;
- EthCC会议后关于 无状态以太坊客户端开发 的总结;
- 发布 phase 0 规范的v0.11版本;
- Nimbus客户端更新,讨论在移动设备上运行以太坊2.0客户端的限制;
- 关于phase 2的研究帖:(1) 非顺序收款跨分片交易的评估 ,(2) 以及 使用系统事件、实时参数检查和合约锁定的原子跨分片函数调用 ;
- Vitalik提议使用 多项式承诺 方案,尽管短期内其不太可能被纳入以太坊的路线图;
编译:洒脱喜 稿源:巴比特资讯(http://www.8btc.com/article_570606)