ETH2.0 POS 共识 Casper

ETH2.0组件:
    1. 信标链节点
    1. 验证者客户端 连接信标链和管理质押私钥账户
    1. RPC服务
    1. BoltDB(数据库存储)
    1. P2P网络
    1. 监控技术 Grafana 和 Prometheus,跟踪信标链所有内容。

时隙 (slots) 和时段 (epochs)

  • slot : 每12秒为一个slot
  • epoch: 每32个slot为一个epoch, 即6.4分钟. 12 * 32 / 60

信标链

信标链像是一个核心脊骨,支撑和联系着各分片链。事实上,信标链是给整个以太坊 2.0 系统注入生命力的核心,负责指挥协调系统的所有参与者。那么它能做些什么呢?

分片链

在计算机科学中,主要有两种扩容方式:
A.纵向扩容:即增强节点能力
B.横向扩容:即增加节点数量

为了保证去中心化,区块链需要采取横向扩容方式。以太坊2.0 (也即Eth2或Serenity) 其中一个目标就是让节点可以在消费级硬件中运行。总体来说,Eth2采用的分片机制指的就是对数据库进行横向分割。
总的来说,每条分片链都拥有一个节点子集,在该链上进行工作。虚拟矿工和验证者被分配到不同的分片中,并且只处理和验证自己所在分片链上的交易。

以太坊分片上的节点子集是动态的,按照区块顺序处理分片

区块链实行分片机制的主要挑战在于如何确保分片安全性。由于验证者分散在不同的分片中,有的节点可能会恶意控制某个分片。

解决该问题的关键在于:
随机分配 (shuffling) 验证者,每个分片区块都有一个委员会,其中的验证者都经由随机挑选。这种做法的目的是,经数学计算,如果攻击者控制的验证者少于总数的三分之一,其想要攻击单个分片是难以实现的。

Eth2 以太坊将通过分片技术提高系统并发交易处理吞吐量水平,它将网络划分为64个分片,每个分片只处理自己分片内的交易,并处于独立的账户空间,每个分片内的交 易结果将由信标链网络上的验证节点,委员会指定的验证节点负责验证,验证节点不需要验证分片外的交易分片,每隔一段时间,大概12秒(slot),由验证节点产生一个校对区块,校对区块包含分片内的状态和交易内容提供的可验证信息。所以信标链上的区块存的是相应分片内的交易产生的状态。和交易的可验证信息。

这就意味着每过12秒,整个网络中就产生64个分片链区块,再加上一 个信标链区块,这样ETH2.0的性能将会大幅提升。

验证者

以太坊2.0中的矿工叫做验证者(validators).但大多数的时候,充当证明人(attesters)的角色,对信标链区块和分片区块进行投票,这些投票会记录在信标链上。用来决定当前信标链和分片链的头部.

  • 在以太坊2.0中,验证者 (validators) 便是权益证明 (PoS) 共识机制中的“虚拟矿工”

  • 区块提议者(block proposer)是被(伪)随机挑选出来生产区块的验证者。

怎样质押 成为验证者(validator)

在ETH1.0上有个单向验证者质押合约,向这个合约转32个ETH,然后经过一系列的审核检查之后,你就会收到一张电子收据(以太坊智能合约中的事件)。有了这个收据,就可以提交给信标链。信标链审核过后,就可以成为验证者. 如果你很“活跃”,就可能被选中成为区块提议者。

  • 质押网站:https://launchpad.ethereum.org/en/
  • 验证者之间的传输还不可能。您必须等到主网与信标链合并(大约两年)后,才能撤回或转让您的 ETH。
  • 通过prysm 客户端 创建validator
    https://blog.csdn.net/superstar_ylc/article/details/105907346

信标链节点会启动一个ETH1.0 的service, 用于侦听ETH1的验证者质押合约的事件日志(event logs),为了解决网络延时,还会缓存ETH1的日志和区块。

证明(attestation)

则是验证者的一记投票,投票通过验证者的余额进行加权。除区块之外,证明也会由验证者在系统中进行广播。验证者之间也会互相监督,通过举报其他验证者自相矛盾的投票或提议多个区块的行为,从而获得奖励。

信标链里主要记录了验证者的地址、每个验证者的状态、证明和分片的链接。验证者需经由信标链激活,也可以转变在线状态.

验证者的工作

在你成为了验证者后,信标链会将你随机分配到一到两个分片中去做验证, 在这里,不存在挖矿,下一个区块的产生是由验证者们投票选出来的。这个选择具有随机性,不是一两个验证者所能掌握的,这也体现了去中心化的特点 。
如果你现在是个Proposer,则有生产一个区块的权利,如果当前有分叉,需要自己选择一个链头,然后其他验证进行投票,看大家 是否认可这个链头。注意,这个投票的权重就是按你押金的多少算的,押金越多,权重越大,这就是POS权益证明的由来. 区块选出后,
该区块的Proposer就要在该分片收集交易,并将这些交易打包进自己生产的区块中, 所以验证者大部分工作是在验证Proposer出块过程中的行为是否妥当。
如果你表现良好,做了身为验证者应该做的事就会得到奖励,反之,就过受到处罚。惩罚就是从你质押的32ETH中扣除一部分,当质押金少于16个ETH后,信标链就会将你从验证才列表中移除。如果一天不想当验证者了,取出的剩余质押金不会回到ETH1中,而是会被存进某个分片链中。

Casper简单原理

  • 验证者押下一定比例的他们拥有的以太币作为保证金。
  • 然后,他们将开始验证区块。也就是说,当他们发现一个可以他们认为可以被加到链上的区块的时候,他们将以通过押下赌注来验证它。
  • 如果该区块被加到链上,然后验证者们将得到一个跟他们的赌注成比例的奖励。
  • 但是,如果一个验证者采用一种恶意的方式行动、试图做“无利害关系”的事,他们将立即遭到惩罚,他们所有的权益都会被砍掉。

交联(crosslinks):分片链和信标链的连接

交联是指将一个信标区块和一个分片区块连接起来,在一个交联中,信标链紧跟分片链头。由于一个信标区块中有64个分片,因此最多可以容纳64个交联。如果在某个slot中,没有验证者为其他63个分片提议区块 的话,在这个信标区块上可能只有一个交联。交联计划于eth2的阶段1实现,为的是将分片扎根在信标链中,为分片分叉选择,分片链最终确定性和跨分片通信打好基础。所有分片链全程都与信标链紧密相连。

委员会(committees)

为了加强安全何障, 信标链在每个slot的里分配最少128位(根据总的验证者数量决定)验证者,组成委员会,在每个epoch中,RANDAO为每个slot挑选区块提议者,并将验证者打乱,分配至委员会中)。验证者和委员的区别 除了投票外,委员还要在自己所在的slot中尝试交联某个特定的分片。在 信标链的slot中)

出块过程

  1. 在一个slot中,信标链给64个分片链分布验证者和区块提议者(proposer),并在这些验证者中分配出委员会来。
  2. 这些验证者从个自分片链的Proposer所生产的区块中投票选出一个做为区块头。
  3. 选中区块的proposer各自分片的交易,并打包进区块。
  4. 委员会尝试和信标链进行交联,让信标链存储交易信息和状态。

这是一个针对 slot的投票,叫做LMD GHOST投票。这时生产的区块还不能被最终确定(finality).要经过对epoch的投票之后,才能最终确定.

如何进行epoch投票呢?先了解下检查点的概念

信标链检查点 Checkpoints

Checkpoints就是位于epoch第一个slot里的区块,如果这个slot内没有产生区块,则最近的前一个检查点当前epoch的检查点。每个epoch都会有一个检查点区块;一个区块可能同时是多个epoch的检查点.

好,我们介绍如何进行epoch投票,其实进行epoch投票就是对这个epoch的前一个检查点和后一个检查点进行投票。表示这个时段的边界(epoch boundary block, EBB)。该投票叫做Casper FFG投票,前一个检查点叫"source",来源检查点,下一人检查点叫"target",目标检查点

正常情况下: 一个epoch为32个slot,则 epoch1的source为创世块,target为高度是32的区块,也就是epoch2的第一个slot出的块。则epoch2的source就是epoch1的target.以此类推。

那如何给epoch投票呢?何时投票呢?

就是在一个验证者给一个slot投票的同时,也要为epoch的前后检查点进行投票。如果一个检查点被证明两次,就是说做为target的时候,被证明了一次,又做为source被证为了一次。那这时,做为source这个检查点就具有了最终确定性(Finality),具有了最终确定性的epoch内的区块,就不能被回滚分 叉了。

再说证明

LMD GHOST投票 + FFG投票 = 证明
理想情况下,每个epoch中所有验证者提交一份证明。每一个证明有32个slot的机会被打包进链,这意味着在单个epoch,一名验证者可能有两份证明被打包上链。

何为绝对多数(supermajority)

这里的投票并不是按票数加权的。这里的投票权重是按相应验证者的质押金的余额做权重的,这里的绝对多数是指 某个投票获得了所有活跃验证者总余额的2/3的支持". 比方说: 有三个活跃验证者,其中两个余额是8ETH,而另一个是32ETH,则如果第三第验证者投了某个区块一票,则这个区块就被选出,因为余额超过了2/3.

信标链验证者奖惩机制

  1. 证明者奖励(attester rewards)
  2. 证明者惩罚(attester penalties)
  3. 质押者特有风险(typical downside risk for stakers)
  4. 罚没和吹哨者奖励(slashings and whistleblower rewards)
  5. 提议者奖励(proposer rewards)
  6. “不作为”惩罚(inactivity penalty

在描述相对来说不那么常见的奖惩制度之前,你可能想知道成为一名质押者所面临的风险。作为一名质押者,损失ETH的风险与回报并存。如果一名验证者在一年中能赚取10%的报酬,那么一名工作表现差强人意的 (诚实) 验证者则面临10%的损失。比如说,一名验证者总是不在线,或者其投票的区块总是无法被最终确定,他将会受到惩罚,而罚款数额等于一名验证者投出有效区块所获得的奖励数额。

罚没的数额最少为0.5个ETH,最多则是一名验证者的所有质押金额。一名验证者如果受到了罚没 (slashing) 惩罚,其将至少损失余额的1/32,且会被停止继续参与工作。该名验证者所受惩罚的程度,与连续8192个epoch都离线的验证者所受的惩罚相当。基于同时受到罚没惩罚的验证者的数量,协议还会对验证者做出额外的惩罚。施以额外惩罚的基本公式是:“验证者余额3slashed验证者个数”。也就是说,如果1/3的验证者同时受到了罚没,他们会损失所有余额。而对罚没行为举报成功的验证者,则可以获取吹哨者奖励。**

区块一旦得以最终确定,区块提议者便可以获得相当可观的奖励。一直在线且妥善完成工作的验证者,他们提议区块所能获得的奖励将提高1/8。如果发生罚没行为,提议者还可以将罚没证据打包进区块,从而获得少量报酬。在eth2阶段0,所有吹哨者的奖励实际上都归于提议者。

不做为惩罚简单来说,如果有超过4个epoch没有获得最终确定性那么所有验证者都要受到翻倍的“不作为”惩罚,直到下一个检查点被最终确定。“不作为”惩罚的作用在于:如果50%的验证者掉线了,在21天后会再次重新对区块进行最终确定。

罚没 Slashing

LMD GHOST的投票没有 罚没 惩罚。 只会对双重提议,FFG双重投票和FFG环绕投票进行罚没处罚。

  • 双重提议(double proposal) 指一名Proposer 在他所分配的slot里提议两个及以上的区块
  • 双重投票(double vote) 指一名验证者 对同一个target检查点,投了两次及以上不同的source检查点。
  • 环绕投票(surround vote),是指一个名验证者发起的FFG投票 区间内已经有其他的FFG投票了,或者自己的FFG投票被其他FFG投票包含了。

针对同一个源检查点的两次FFG投票,不用受到罚没。这对系统的活性很重要。比如说,如果有两个分叉,每个分叉占有验证者50%的余额,那么协议需要鼓励 (而非惩罚) 验证者通过对同一个源检查点和一个不同的目标检查点发起投票,从而在分叉间转换。验证者可以在分叉之间安全地来回转换,并尝试达到2/3的绝对多数,以避免陷入僵局

参考:
https://zhuanlan.zhihu.com/p/135231626

你可能感兴趣的:(ETH2.0 POS 共识 Casper)