Casper共识机制
Casper共识机制
在以太坊Serenity(宁静)版本将会把共识机制完全切换成PoS
的共识机制,这个共识机制还有另外一个名称一Casper投注共识
。以太坊的Casper投注共识
属于PoS
共识机制范畴,它是在PoS
股权证明思想上拓展衍生出的一种股权证明机制。
Casper投注共识
增加了惩罚机制,并基于Pos
的思想在记账节点中选取验证人,验证人对应的就是股权拥有者,投注是验证人所拥有的动作,且能够投注的角色只能是验证人
。可以将这类角色理解为新一代以太坊矿工,因为投注如果获胜是会有收益的,相当于挖矿收益。
投注指的是在Casper共识机制
中,验证人要拿出保证金的一部分对它认为的大概率胜出区块进行下注,类似于赌博,投注所能产生的结果是:
- 赌对了,可以拿回保证金外加区块中的交易费用,也许还会有一些新发的货币。
- 下注太慢没有迅速达成一致,能拿回部分下注金,相当于损失了一些下注金。
- 数个回合之后下注的结果出来,那些选错了的验证人会输掉下注金。
- 验证人过于显著地改变下注,例如先赌某个区块有很高的概率胜出,然后又改赌另外一个区块有很高的概率胜出,将会被惩罚。
如何成为验证人
想成为验证人,需要交保证金进行申请,同时也可以在进入后选择退出,加入和退出都将会成为以太坊网络中的一种特殊交易类型,目前最常见的交易就是转账ETH代币。也就是说,到时候可能要调用一定的以太坊接口来申请成为验证人。保证金很有可能就是以太坊ETH代币,它将会被用来投注,或因被以太坊的惩罚而没收掉投注金。
日前Casper的验证人逻辑通过一个名称为Casper的合约来实现,该合约提供投注、加入、取款和获取共识信息等一系列功能,因此通过简单地调用Casper合约就能提交投注或者进行其他操作。Casper合约的内部状态如下图所示。
这个合约记录了当前验证人的信息,每位验证人有6项,分别说明如下:
- Return address:验证人保证金的返还地址(钱包地址)。
- Deposit size:当前验证人保证金的数量(注意验证人的投注会使这个值增加或减少)。
- Validation code:验证人的验证代码。
- Seq:最近一次投注的序号。
- Prevhash:最近一次投注的哈希值。
- 验证人每次投注的表格。
验证人如何获取保证金
目前验证人获取保证金的方式,或者说获取代币的方式,主要是基于PoS
共识机制,即可以通过转让、交易的方式来获取。
如果是早期版本则是基于PoW挖矿获取,如果涉及网络升级,还要考虑兼容旧节点的情况。
候选区块的产生
验证人要投注的对象是区块,那么在Casper投注机制
中区块将由谁产生?毕竟只有区被产生了才能有投注的动作。
答案是,区块将由验证人出块。出块是一个独立于其他所有事件而发生的过程:验证人负责收集交易,当轮到它们的出块时间时,它们就制造一个区块,然后签名发送到节点网络上去。
轮流出块的规则也是由Casper'
提供的。
胜出区块的判断
等所有验证人都在限定的时间内投注完了,在所有压了注的区块中哪个将会胜出呢?
区块胜出的规则是这样的:当验证人中的绝大多数,即满足协议定义阈值的一群验证人的总保证金比例达到67%到90%之间的某个百分比,并以非常高的占比率下注某个区块胜出的时候,此区块便会胜出。
不难看出,Casper
的投注方式存在验证人联盟共同投注某个区块使之胜出的非公平问题。对于这个问题,目前以太坊还没有很好的解决方案。