ETH2.0中的CASPER FFG机制

栏目: IT技术 · 发布时间: 4年前

内容简介:重点介绍信标链Casper FFG机制实现的高层级细节以及讨论分叉选择规则(fork choice rule)和活性的其他相关因素。本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

重点介绍信标链Casper FFG机制实现的高层级细节以及讨论分叉选择规则(fork choice rule)和活性的其他相关因素。

上一篇文章 何为CASPER FFG 讨论的是关于Casper Friendly Finality Gadget (Casper FFG)的基础知识,那么这篇文章的第一部分将重点介绍信标链Casper FFG机制实现的高层级细节,第二部分将讨论分叉选择规则(fork choice rule)和活性的其他相关因素。

这篇文章解释的是直接从Eth2.0规范中挑选的概念,我会尽可能地提供规范中参数与函数的相关链接。这些链接仅供参考,因此无需查阅这些链接也能读懂这篇文章。

Casper FFG 机制

Slots、 Epochs 及 Attestations

Slots**(时隙)**:**区块链上的时间是按照 slot 来划分的,每个slot期间有一个新区块被提议。** 每个slot为12秒, 一个slot分配一个验证者提议产生一个新区块

Epochs**(时段)**: Casper FFG机制无需在完整的区块树上运行,仅处理投票所需的某些特定slot的区块即可。 因此,在通过查看投票情况以对区块进行最终确定时,能够免于查看过多来源区块 – 目标区块对,从而减少了成本。由于这些特殊slot为验证者提供了足够的投票时间,因此当每次进行FFG最终确定性检查时,预计将看到绝大多数验证者的新投票结果。每个epoch由32个slot组成,所以每个epoch的时间长度为6.4分钟,即 1 epoch = 32 slots * 12s = 6.4mins 。FFG机制只处理这些epoch的边界区块(称为”检查点(checkpoints)”或“epoch边界区块(EBB)”)。

ETH2.0中的CASPER FFG机制

***假设每个epoch由3个slot组******成,******Slots******和******Epochs******之间的关系示意图,******其中区块* A* 、* D* 、******G**** 是检查点*

Attestations **(证明****)** :指的是Casper FFG投票,其中包含诸如来源区块、目标区块、进行证明时的slot编号及验证者的标识符等信息。证明由验证者广播到p2p网络,最终再由区块生产者打包进区块。

Casper FFG 机制的变化

与我以前的文章中提到的相比较,最终确定性的定义有所改变。

Finalization**(最终确定性)**:区块B已最终确定的条件如下:

  • 或是充当创世区块
  • 或是B_0已被证明,条件如下:
    • slot编号按顺序递增,检查点也随之按[B_0, B_1, … , B_n]顺序排列,其中n >= 1,这些检查点区块位于同一条链上且已被证明。
    • 同时超过2/3的验证者已将票投给 (B_0, B_n)

ETH2.0中的CASPER FFG机制

黄色区块处于已证明状态,红色区块处于最终确定性状态

更改后的定义仍然保留了上一篇文章中Casper FFG安全证明的概要。关于完整证明的内容,请参见 本文 的“安全性”部分。

Casper FFG 最终确定性检查

信标链采用链上FFG机制来处理区块与证明,以检测最终确定性。在每个epoch边界,该机制都会处理新的证明,并更新已证明与已最终确定区块的信息。

为了尽可能降低任何来源区块-目标区块对之间证明的处理成本,链上FFG机制仅处理特定的来源区块-目标区块对,即只处理当前与上一个epoch的证明 (事实上还要满足更多条件) 。这种特性导致链上FFG机制无法检测所有最终确定性实例!简而言之,这种链上机制是合理的,但并不完善。

另外,由于仅处理最后两个epoch的证明,该机制还引入了网络同步假设(etwork synchrony assumption),假设证明在两个epoch的时间内广播到全网。

链上FFG机制规范 十分简单:

  • **第一步要检查区块合理性。**采用最后两个epoch的新证明来检查它们的边界区块是否合理。
  • **下一步要检查区块最终确定性,**检查对象是最后两个epoch的边界区块。仅对四组来源区块-目标区块对进行最终确定性检查,以求提高性能和简化规范。

ETH2.0中的CASPER FFG机制

ETH2.0中的CASPER FFG机制

**此图展示最终确定性检查涉及的检查点,** 黄色区块为已证明状态,红色区块为已最终确定区块

分叉选择与验证者计划

尽管Casper FFG机制对区块最终确定保证规则进行了概述,但并未提及在实践中如何保证网络活性。 (注意:本文并非试图证明网络活性,而是概述有望保证活性的过程。相关严谨分析,请参阅 此文 。)

本文这部分将重点关注两个主要的活性相关因素:

  • 验证者用来查找区块链头所执行的分叉选择规则
  • 验证者遵循的区块生成与证明计划

HLMD GHOST 分叉选择规则

提议区块的验证者首先必须找到本地区块链头,为此,他们要遵循Hybrid Latest Message Driven (HMLD)GHOST作为分叉选择规则。

分叉选择规范 如下:

  1. 在每个epoch开始的时候,验证者确定当前视图下的最新已证明区块。这一变量会在该epoch内被冻结,并在下一个epoch开始时再次更新。
  2. 筛选并排除出没有把步骤1确定的已证明区块作为此区块链中最新已证明区块的区块。
  3. 遵循 一般LMD GHOST规则 ,由上至下遍历区块树,直到找到叶节点为止。

分叉选择的更多相关信息,请参见 此文 的“Hybrid HLMD GHOST”部分。

验证者计划

每个验证者对网络负有两大主要责任:提议新区块和在其本地视图中证明最佳区块,为此制定了验证者计划,以防止产生混乱和简化网络中的消息传递。 此计划由每个验证者利用从当前信标链状态获取的随机性计算而得 ,以免攻击者支配验证者计划。

提议计划(Proposal Schedule):**在每个epoch中的每个slot, 都会有一位验证者被分配为提议者 。**该验证者遵循分叉选择规则在区块树的本地视图中找到链头,并为该链头生成一个新的子块。验证者将其见到的证明打包到区块中并获取奖励。当进行最终确定性检查时,这些证明将输入到链上FFG机制。

证明计划(Attestation Schedule):**每个epoch中的每个slot中的每个验证者都要生成证明。**实际上,对于每个epoch,整个验证者集被随机划分为SLOTS_PER_EPOCH个等同大小的委员会,这些委员分别被分配到一个特定的slot,然后生成证明。在生成证明时,验证者将根据其本地视图,以最后一个已证明区块作为来源区块,以链头后的最新检查点作为目标区块。

验证者计划的更多相关信息,请参阅Eth2.0规范中的 验证者指南

来源 | adiasg.me 作者 | Aditya Asgaonkar 感谢Danny Ryan与笔者共同讨论及审阅文章。

上一篇文章 何为CASPER FFG 讨论的是关于Casper Friendly Finality Gadget (Casper FFG)的基础知识,那么这篇文章的第一部分将重点介绍信标链Casper FFG机制实现的高层级细节,第二部分将讨论分叉选择规则(fork choice rule)和活性的其他相关因素。

这篇文章解释的是直接从Eth2.0规范中挑选的概念,我会尽可能地提供规范中参数与函数的相关链接。这些链接仅供参考,因此无需查阅这些链接也能读懂这篇文章。

Casper FFG 机制

Slots、 Epochs 及 Attestations

Slots**(时隙) 区块链上的时间是按照 slot 来划分的,每个slot期间有一个新区块被提议。 **每个slot为12秒, 一个slot分配一个验证者提议产生一个新区块

Epochs**(时段) Casper FFG机制无需在完整的区块树上运行,仅处理投票所需的某些特定slot的区块即可。 因此,在通过查看投票情况以对区块进行最终确定时,能够免于查看过多来源区块 – 目标区块对,从而减少了成本。由于这些特殊slot为验证者提供了足够的投票时间,因此当每次进行FFG最终确定性检查时,预计将看到绝大多数验证者的新投票结果。每个epoch由32个slot组成,所以每个epoch的时间长度为6.4分钟,即 1 epoch = 32 slots * 12s = 6.4mins**。FFG机制只处理这些epoch的边界区块(称为”检查点(checkpoints)”或“epoch边界区块(EBB)”)。

ETH2.0中的CASPER FFG机制

*假设每个epoch由3个slot组** 成,** Slots** 和** Epochs** 之间的关系示意图,** 其中区块** A** 、** D** 、** G** 是检查点*

Attestations** (证明 **) :指的是Casper FFG投票,其中包含诸如来源区块、目标区块、进行证明时的slot编号及验证者的标识符等信息。证明由验证者广播到p2p网络,最终再由区块生产者打包进区块。

Casper FFG 机制的变化

与我以前的文章中提到的相比较,最终确定性的定义有所改变。

Finalization**(最终确定性)**:区块B已最终确定的条件如下:

  • 或是充当创世区块
  • 或是B_0已被证明,条件如下:
    • slot编号按顺序递增,检查点也随之按[B_0, B_1, … , B_n]顺序排列,其中n >= 1,这些检查点区块位于同一条链上且已被证明。
    • 同时超过2/3的验证者已将票投给 (B_0, B_n)

ETH2.0中的CASPER FFG机制

黄色区块处于已证明状态,红色区块处于最终确定性状态

更改后的定义仍然保留了上一篇文章中Casper FFG安全证明的概要。关于完整证明的内容,请参见 本文 的“安全性”部分。

Casper FFG 最终确定性检查

信标链采用链上FFG机制来处理区块与证明,以检测最终确定性。在每个epoch边界,该机制都会处理新的证明,并更新已证明与已最终确定区块的信息。

为了尽可能降低任何来源区块-目标区块对之间证明的处理成本,链上FFG机制仅处理特定的来源区块-目标区块对,即只处理当前与上一个epoch的证明 (事实上还要满足更多条件) 。这种特性导致链上FFG机制无法检测所有最终确定性实例!简而言之,这种链上机制是合理的,但并不完善。

另外,由于仅处理最后两个epoch的证明,该机制还引入了网络同步假设(etwork synchrony assumption),假设证明在两个epoch的时间内广播到全网。

链上FFG机制规范 十分简单:

  • 第一步要检查区块合理性。 采用最后两个epoch的新证明来检查它们的边界区块是否合理。
  • 下一步要检查区块最终确定性, 检查对象是最后两个epoch的边界区块。仅对四组来源区块-目标区块对进行最终确定性检查,以求提高性能和简化规范。

ETH2.0中的CASPER FFG机制

ETH2.0中的CASPER FFG机制

此图展示最终确定性检查涉及的检查点,**黄色区块为已证明状态,红色区块为已最终确定区块**

分叉选择与验证者计划

尽管Casper FFG机制对区块最终确定保证规则进行了概述,但并未提及在实践中如何保证网络活性。 (注意:本文并非试图证明网络活性,而是概述有望保证活性的过程。相关严谨分析,请参阅 此文 。)

本文这部分将重点关注两个主要的活性相关因素:

  • 验证者用来查找区块链头所执行的分叉选择规则
  • 验证者遵循的区块生成与证明计划

HLMD GHOST 分叉选择规则

提议区块的验证者首先必须找到本地区块链头,为此,他们要遵循Hybrid Latest Message Driven (HMLD)GHOST作为分叉选择规则。

分叉选择规范 如下:

  1. 在每个epoch开始的时候,验证者确定当前视图下的最新已证明区块。这一变量会在该epoch内被冻结,并在下一个epoch开始时再次更新。
  2. 筛选并排除出没有把步骤1确定的已证明区块作为此区块链中最新已证明区块的区块。
  3. 遵循 一般LMD GHOST规则 ,由上至下遍历区块树,直到找到叶节点为止。

分叉选择的更多相关信息,请参见 此文 的“Hybrid HLMD GHOST”部分。

验证者计划

每个验证者对网络负有两大主要责任:提议新区块和在其本地视图中证明最佳区块,为此制定了验证者计划,以防止产生混乱和简化网络中的消息传递。 此计划由每个验证者利用从当前信标链状态获取的随机性计算而得 ,以免攻击者支配验证者计划。

提议计划(Proposal Schedule): 在每个epoch中的每个slot, 都会有一位验证者被分配为提议者 该验证者遵循分叉选择规则在区块树的本地视图中找到链头,并为该链头生成一个新的子块。验证者将其见到的证明打包到区块中并获取奖励。当进行最终确定性检查时,这些证明将输入到链上FFG机制。

证明计划(Attestation Schedule): 每个epoch中的每个slot中的每个验证者都要生成证明。 实际上,对于每个epoch,整个验证者集被随机划分为SLOTS_PER_EPOCH个等同大小的委员会,这些委员分别被分配到一个特定的slot,然后生成证明。在生成证明时,验证者将根据其本地视图,以最后一个已证明区块作为来源区块,以链头后的最新检查点作为目标区块。

验证者计划的更多相关信息,请参阅Eth2.0规范中的 验证者指南

来源 | adiasg.me 作者 | Aditya Asgaonkar 感谢Danny Ryan与笔者共同讨论及审阅文章。

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 1小时前
  • 阅读 ( 12 )
  • 学分 ( 0 )
  • 分类:以太访2.0

以上所述就是小编给大家介绍的《ETH2.0中的CASPER FFG机制》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

"笨办法"学Python

"笨办法"学Python

肖 (Zed A.Shaw) / 王巍巍 / 人民邮电出版社 / 2014-11-1 / CNY 49.00

本书是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。 本书结构非常简单,共包括52个习题,其中26个覆盖了输入/输出、变量和函数三个主题,另外26个覆盖了一些比较高级的话题,如条件判断、循环、类和对象、代码测......一起来看看 《"笨办法"学Python》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具