权益证明PoS
Last updated
Last updated
权益证明是目前支撑以太坊共识机制的基础。与PoW相比,能耗更低且利于扩容。
权益证明可以证明参与者已经将具有价值的东西投入到网络中,如果他们表现出欺诈行为,这些东西可能会被销毁。
在PoW中,生成区块的时间是由挖矿难度决定的,而在PoS中,这个时间是固定的。以太坊2.0引入了信标链(Beacon Chain),为PoS提供时钟心跳,分为slots(12s)和epoch(32个slot即6.4min)。
slot是将区块添加到信标链的机会,理想情况下,每12秒就会添加一个区块,slot可以是空的。在每个slot中随机选择一位验证者作为区块提议者,该提议者负责创建新区块并发送给网络上的其他节点。
PoS的验证者可以类比为虚拟矿工。验证者负责运行以太坊的共识,也有类似矿工的激励机制。区块提议者(proposer)是伪随机选出来的验证者。大多数情况下,验证者是对区块进行投票,这些投票记录在信标链中,并决定信标链的链头(新区块)。
在每个epoch,验证者都会被伪随机分配到一个slot。Attestation是验证者的投票,由验证者的质押余额加权,除了区块之外,验证者还会广播证明Attestation。验证者之间也会互相监督,如果验证者举报其他验证者的投票有冲突,验证者就会得到奖励。
随机选出的验证者在每个slot提出区块,如果区块被其他验证者采纳则该提出者收到奖励,如果被选中的验证者没有提出区块,slot为空。
在以太坊的PoS机制下,可以通过向存款合约中存入32个以太币成为验证者。信标链会停用余额到达16ETH的所有验证者。验证者也可以在2048个epoch后自动退出。
理想状态下,区块链始终只会有一个新区块并且所有验证者都会证明它。然而,由于网络延迟或因为区块提议者提议多个区块,不同验证者可能看到不同的新区块。因此,需要一种算法来确定支持哪一个区块。 PoS中使用的算法称为 LMD-GHOST。
LMD-GHOST投票算法中,首先会通过伪随机进程RANDAO选择一个至少包含128名验证者的委员会,一个验证者在一个epoch中只能参与一个委员会,每个激活的验证者在每个epoch都会被分配到一个委员会中。每个slot的区块的 Proposer 也由 RANDAO 根据验证人的余额加权选出。
在验证者提出新区块后,委员会中的其他验证者的职责是为他们认为的最新区块进行投票(即对信标链头的证明),这被称为 LMD GHOST投票。
LMD GHOST投票的目的是解决分叉。
当出现分叉时,委员会要根据LMD GHOST投票结果确定主链。每当遇到分叉时选择权重最大的区块作为主链,一直重复该操作直至找到叶子区块即链头。对于某一个区块的权重,它等于投给该区块以及该区块所有子孙后代区块的票数总和。
检查点是epoch第一个slot的区块。第一个slot中若是没有区块,则检查点是前一个最近的区块。每个epoch必定有一个检查点块,一个区块可以是被归属于多个epoch的检查点。