Published: 2020-12-01

Gasper(Combining GHOST and Casper)论文阅读笔记

本文是我阅读论文Combining GHOST and Casper的一个简要笔记。

https://github.com/ethereum/research/blob/master/papers/ffg+ghost/paper.pdf

Table of Contents

1 Introduction

目标:创建pos系统的共识协议

通过组合:

  • Casper FFG (the Friendly Finality Gadget) [区块最终性规则] [It is designed to work on top of either proof-of-work or proof-of-stake chains.]
  • LMD GHOST (Latest Message Driven Greediest Heaviest Observed SubTree) [分叉选择]

时间被分成epochs,在epochs的边界创建checkpoints,参与者在敲定的区块上根据LMD GHOST规则构建和见证区块。

read-gasper.png

2 Setup and Goals

本节回顾和定义了一些概念和术语。

  • consensus protocols
  • validators
  • blockchain
  • message
  • view [值得注意]

然后介绍了POS共识,相对于pow出块变容易了,但需要额外的保护不正当的激励。 主要包括:

  • a fork-choice rule (相对的,bitcoin采用heaviest chain rule)
  • a concept of finality
  • slashing conditions

采用attestations来定义上面各部分。

之后讨论了一个验证者假定:小于1/3的拜占庭验证者。

接下来定义了共识协议的safety和liveness.

safety: the set of finalized blocks F(G) for any view G can never contain two conflicting blocks.

liveness: the set of finalized blocks can actually grow.

根据定义liveness的方法,可以分成:

  • plausible liveness
  • probabilistic liveness

最后介绍了为了casper ffg 而时间分成epochs和slots,来产生checkpoints。

共识协议的时间同步可以分成:

  • 同步系统
  • 异步系统
  • 半同步系统(delay有上限):又可以分成1.delay上限不实现知道 2.delay在一个确定的不知道的时间后得知

tip: message from future如何处理? 如果收到来自未来的消息,等本身时间达到该时间再处理。

3 Main Ingredients

3.1 Casper FFG

一个确定性工具,受PBFT启发,定义了Justification 和 Finalization。

底层可以是基于POS或者POW的tree-like的区块链。

有以下特性:

  • 区块都有高度
  • 某一常数整数倍高度的checkpoint blocks
  • Attestations是签名后的消息,表示从一个check point A 到 另一个checkpoint B 的转换 [当有至少2/3的stake的投票]

定义了justification和finalization,简单来说: justification: 有2/3以上的以上stake见证从checkpoints: A -> B,那么B是justified. finality: 上面的情况下,A是finalized.

定义了slashing的条件:

  1. 两个冲突的见证:s1 -> t1, s2 -> t2, t1,t2高度相等
  2. 两个环绕的见证: s1 -> t1, s2 -> t2, s1高度 < s2高度 < t2高度 < t1高度

Casper主要的定理:

  1. (Accountable Safety) 两个处于不同分支的checkpoints不可能同时被finalized,除非超过一定数量的验证者作恶
  2. (Plausible Liveness) 新的检查点总是可能被确认。

3.2 LDM GHOST Fork-Choice rule

Latest Message Dirven Greediest Heaviest Observer SubTree

GHOST: a greedy algorithm that grows the blockchain on sub-brances with the "most activity". Can be used for pow/pos blockchain.

LMD GHOST是GHOST的修改版。

Use the weight of the subtress created by the fork as a heuristic and assume the subtree with the heaviest weight is the "right" one.

4 Main Protocol: Gasper

主要的概念有:

  • (epoch boundary) pairs of a chain
  • commiitts
  • Justification and Finalization

4.1 Epoch Boundary Blocks and Pairs

定义EBB(B, j): 第j个epoch的boundary block of 区块B

对比: Casper FFG,没有关于底层区块时间的假设,只关系区块高度,

而Gasper作为一个pos协议,里面有关于时间的假设。 所以是data+time,也就是上面的block+epoch

4.2 Committees

每个epoch,验证者都被分到不同的committee,每个committee有一个负责的slot.

4.3 Protocol for Each Slot

每个committee里,有一个被选择为出块者,其它的来见证heads of the chain(in their own views). 两者都遵循LMD GHOST的变种协议(Hybrid LMD GHOST)来做fork-choise.

这里的差别应该还是像上面casper ffg的差别一样,引入了时间的维度。

对于每个slot i 而言,

  1. committeel里的第一个验证者作为出块者,根据HLMD GHOST规则来选择canonical head,在此基础上出一个块B,包含了:
    • slot number: i
    • 指向父块的链接
    • 验证者接收到的,但之前的区块没有包含过的新的见证
    • 其他一些具体实现方面的数据
  2. 在 i + 1/2时间,committee里其余的验证者根据HLMD GHOST规则来选择分叉, 并且提交一个见证,该见证包含了:
    • attester见证时的slot, 也就是attestation被包含的slot
    • attestter要见证的slot,也就是这里的i
    • a casper ffg vote, lastest Justified -> lastest epoch boundary

出块和见证都立即包含了各自view里的message。【这点和eth2实现里是有差别的】

4.4 Protocol for Each Epoch

定义gasper里的Justification和Finalization。

特别的,Finalization的定义里,有个k参数,是eth2 beacon chain的实现里的general case.

4.5 Slashing Conditions

定义gasper里的两个slahing conditions.

并且论证了对于诚实的验证者不会违反condition1,大多数情况下不会违反condition2,除非一些极端情况。而validator的实现可以通过简单的方式来避免出现condition2.

然后论述了定理4.6[TODO未看懂]

4.6 Rewards and Penalities

通过合适的奖惩机制来保证:

  1. 诚实的验证者遵守协议
  2. 任何一个诚实的验证者看到slashing condition会来slash不诚实的验证者。

5 Safety

5.1 Safety - Static Validator

论述了定理5.1和5.2

定理5.1:

在一个view G里,Finialized block一定是 Justified block的祖先,除非至少1/3的验证者违背slash conditions

定理5.2:

在一个view G里,两个Finialized的block互相冲突,那么G有足够的证据表面至少1/3的validator违背slash conditions

具体论证过程5.1没看懂,5.2基于5.1

6 Plausible Liveness

定理6.1:

如果至少2/3stake的验证者是诚实的,那么一个新的block总是可以被finialized.

论证过程有点模糊,在于什么是“plausible”的定义不是很清楚[TODO]

原始的Casper FFG是一个构建与假设的probilistically live的区块链之上,所以它不关注底层链的probabilistic liveness,而是参与者不会进入到一个状况使得诚实的验证者被slash。

而Gasper也提供了底层的区块链,所以也对底层probabilistic liveness有保障。

7 Probabilistic Liveness

这部分论证了gasper 的probabilistic liveness保证:

  1. 初始假设 -> 可以找到第一个slot之后的high weight block
  2. 找到hight weight block -> 有很大的可能性justification
  3. 很大的可能性justification -> 很大的可能性finalization

[这部分的论证和定理暂且略去,不是完全看懂TODO]

8 Practice vs Theory

这部分描述Gasper协议和实际上ETH2的实现方面的差异。

8.1 Sharding

Gasper受 ETH2 Beacon Chain的启发而来。 而ETH2的sharing设计中,Attestation也是可以用来作为pos vote,但是还有其他一些工程和数学方面的问题超越了本篇论文的讨论范围。

8.2 Implementing the View

Gasper里的view是一个抽象的数学概念,而且验证者有着无限的计算资源等。虽然论文不包含此范围,但在实际的实现中,view的实现至关重要。

8.3 Attestation Consideration Delay

当验证者要去见证slot N的时候,它会运行LMD GHOST选择规则,

Gasper会考虑到所有有效的blocks和attestations,而实际EHT2的实现里所有有效的 0->N 的blocks和 0->N-1的attestation。

实际实现里的1个slot的延迟可以保护验证者防止收到一个timing attacks的攻击。而在Gasper里将这个问题归结到一个game theroy的研究中去。

8.4 Attestation Inclusion Delay

Gasper里的验证者在出一个块的时候,会包含view里所有见到的attestation,而ETH2的实现里会引入一个 "attestation inclusion delay (n)"的参数,验证者只包含n个slots前的attestations。

这样做的目的是防止当slot的时间太短的时候,由于见证广播需要时间,连接较好的节点会产生中心化的和奖励的优势,由于它能更快的包含见证。延迟后,所有节点会更加公平的来包含见证。

实际的时间得根据网络状况来评估。越小交易处理速度越快,越大越保证去中心化。

8.5 A Four-Case Finalization Rule

Gasper的finialized规则是一个general case,而ETH2里的实现采用了一个reduced版本,k=2,也就意味着attestation只在2个epoch内有效[TODO 确认这个2是不是包含被见证的那个epoch]。

8.6 Safety - Dynamic Validator Sets

Gasper是基于static validator sets来论述的,实际实现中是动态的验证者集合。

论述这部分没细看[TODO]

8.7 Extreme Cases; Hard Forks

Gasper里虽然保证了2/3诚实验证者的情况下的palusible liveness 以及 "good" conditions下的probilistic liveness, 但在极端情况下,ETH2的实现里多了个机制来惩罚non-live 验证者来保证一段时间后,live的验证者stake数量达到2/3。

并且论述了采用hard fork来应对一些极端情况。

9 Conclusion

We presented an abstract protocol, Gasper, that combines LMD GHOST and Casper FFG for a full proof-of-stake based blockchain design. Our goal was to separate the “mathematically clean” part of the Ethereum 2.0 design from the implementation details, which we discussed separately in Section 8. This work also serves as a “proof-of-concept” of the Casper finality gadget applied to a complete blockchain protocol. Finally, the techniques we used in e.g. proving probabilistic liveness and/or forming the equivocation game may be useful for other such protocols, even though the actual Ethereum 2.0 blockchain design skirts much of the worst-case analysis there with “patches” such as found in Section 8.

推荐了一些其它POS相关的论文。

Our goal is not to show that our design is strictly better than any of these other designs. All of these protocols contain tradeoffs based on different design goals and assumptions about the network. Our design is guided by a balance between simplicity, understandability, and practicality, placing a mixed emphasis on safety and liveness. For example, if the context of a proposed blockchain is one where speed is less important than safety, then one may wish to e.g. select or modify a proposal more in the direction of Tendermint.

10 End

Author: Nisen

Email: imnisen@163.com