POS(Proof of Stake)是一种区块链共识算法,与POW(Proof of Work)相对应。在POS系统中,验证新的交易和生成新的区块是通过持有特定数量的加密货币来完成的,而不是像POW系统那样依靠计算能力。
在POS权益证明机制中,验证者(也称为权益者)需要锁定一定数量的加密货币作为抵押,这就是他们的“利益”。通过持有这些加密货币,验证者有权利去验证交易,打包区块,并获得相应的奖励。这种机制有几个关键的原理:
1.利益比例与权益奖励成正比:在POS系统中,持有的加密货币数量越大,验证者就有越多的机会被选中来验证交易和生成新的区块。因此,持有更多加密货币的验证者更有可能获得更高的权益奖励。
2.惩罚机制防止恶意行为:如果验证者被发现故意进行恶意行为,例如验证无效的交易或攻击网络,他们将失去一部分或全部的抵押品。这种惩罚机制有效地约束了验证者,鼓励他们诚实地履行自己的角色。
3.随机选择验证者:为了确保公平性和安全性,POS系统会随机选择下一个验证者来生成新的区块。这个过程是基于每个验证者持有的加密货币数量进行加权的,以确保机会公平地分配。
4.促进网络治理:POS系统通常允许持币者参与网络的治理和决策。持币者可以通过投票来影响网络的发展方向,例如提出和支持提案、改变奖励机制等。这样可以使整个网络更加民主和去中心化。
POS权益证明的思想
矿工挖矿是为了取得出块奖励获得收益,而给矿工出块奖励是为了激励矿工参与区块链的维护。
矿工得到多少出块奖励,取决于矿工挖出多少区块。矿工挖出多少区块,取决于矿工的算力占系统的比例。而算力的大小,取决于用的矿机等挖矿硬件设备的品质和数量。而挖矿设备的品质和数量,取决于矿工投入的资金。
所以,得到多少出块奖励,本质上取决于投入了多少资金。
那么,如果每个人直接投入一部分资金用于区块链的开发,将来按照投入的资金的多少来决定收益的分配。这样就省去了中间买矿机挖矿的过程,也减少了对能耗和环境的影响,减少了温室气体的排放。
这个就是权益证明的基本思想。有时将这种方案称为 virtual mining(虚拟挖矿)。
采用权益证明的加密货币,一般在发行前会先预留一部分货币给开发者,也会出售一部分货币来获取开发这个加密货币所需要的资金。将来按照权益证明的共识机制,每个人按照持有货币的数量来进行投票。
PoW和PoS的安全性
基于工作量证明的共识系统,从某种意义上说,维护区块链安全的资源不是闭环的。区块链的安全是由挖矿保证的,而挖矿的设备是用美元等法币购买过来的,也就是说是从加密货币的生态系统外面得到的。
虽然比特币等市值很高,但是和美国股市等的总市值相比依然是微不足道的,所以如果某个组织想要发动攻击,只需要用足够的资金来购买挖矿设备,聚集到这个加密货币一半以上的算力即可。也即发动攻击的资源是从这个加密货币的外部得到的。
像比特币这种有了较大发行量的货币,它的总算力还是比较大的,但是对一些新发行的加密货币遇到这种攻击可能就是致命性的。对于这个新加密货币的开发者、早期的矿工,他们的损失将是灾难性的。称为 AltCoin Infanticide(除了比特币之外的小型加密货币 被 扼杀在摇篮里)。
PoS类似于股份制公司,按每个人所占的“股份”进行投票。如果某个人想要发动 51% 的攻击,那么他需要先获取到这个加密货币的总发行量一半以上的份额,即发动攻击的资源只能从这个加密货币的内部得到。无论这个人在外界有多少钱,在发动攻击前都必须要先用钱来买足够的币才可以。而一旦有人大量买入某个加密货币,那这个加密货币就会价格暴涨,对于加密货币的开发者和早期矿工反而可以得到一大笔收益。
PoW和PoS的关系
PoW和PoS并不是互斥的,有的加密货币采用的是 PoW + PoS的混合模型:这种币依然需要挖矿,但是挖矿的难度是和持有多少币相关的。挖矿时,持有的币越多,挖矿难度越小。为了防止拥有币越多的人因为挖矿难度小而币更多,在挖出一个区块后会将每次投入的币先锁定一定时间不能再用,需要再经过几个区块后才能再次使用。这种称为 Proof Of Deposit。
PoS的模型设计
基于权益证明的共识机制在设计时会遇到很多挑战。
例如早期的权益证明出现”两边下注“(Nothing at stake)的问题。以下图为例:
如果是使用的PoW,那么矿工在挖矿时,面对这样的分叉,会选择沿着最长合法链的区块6往后挖。虽然区块5后面如果连着挖出两个区块也有可能成为最长合法链,但是矿工只会选择其中一条链挖,同时挖两条链会分散算力。
如果使用 PoS,那么可以两条链同时下注,如果上面那条链成为最长合法链,那么下面那条链上被锁定的币也是没有任何影响的,只是被记录到一个废掉的分叉上而已,在最长合法链上依然可以正常使用。
.
Casper FFG
以太坊中准备采用的权益证明为 Casper the Friendly Finality Gadget (Casper FFG),它在过渡阶段也是要和PoW混合使用的。
Finality 是一种最终的状态,包含在Finality 中的交易不会被取消。PoW中单纯基于挖矿的交易是有可能被回滚的,例如通过分叉攻击,原来链上的交易就可能被取消了。
为了实现Finality,Casper中引入了一个Validator(验证者)。要想成为Validator,必须投入一定的币作为保证金,这个保证金会被系统锁定住。Validator的职责是推动系统达成共识,投票决定哪条链成为最长合法链,投票的权重取决于投入的保证金的数量大小。
两阶段提交
数据库两阶段提交(two-phase commit,2PC):
第一阶段:Prepare Message
第二阶段:Commit Message
Casper采用两阶段提交的方式来进行实现。在PoW和PoS混用时还是会存在挖矿的,挖矿时每挖出100个区块就作为一个 epoch,决定这个epoch能不能成为Finality需要进行2轮投票(Prepare Message阶段投票和Commit Message阶段投票),每轮投票都需要得到2/3以上的Validator才能通过(按保证金金额大小计算)。
在实际的系统中,不再区分Prepare Message和Commit Mesage,而且将epoch从100个区块减少到50个区块:最终每50个区块就是一个epoch,然后每个epoch只需要一轮投票即可。这一轮投票对于上一个epoch来说,是Commit Message,对于下一个epoch是Prepare Message。实际依然是两轮投票都要得到2/3以上的多数才算有效。
Validator的奖惩
如果Validator履行职责,可以得到相应的奖励。相反的,如果Validator有不良的行为,将受到相应的处罚。
如果有的Validator尸位素餐,该投票时一直不投票,导致系统因为没有2/3的票数而迟迟无法达成共识,这种情况会扣除这个Validator一部分保证金。如果有的Validator乱投票,出现分叉时两边同时下注,这种情况会扣除全部的保证金。
罚没的保证金会被销毁,相当于减少了系统中的以太币的总供应量。
虽然Validator交了保证金,但是也不是终身制的,有一定的任期。任期满后需要经过一段时间的等待期,在这个等待期中,其他节点可以检举揭发这个Validator的不良行为,对Validator进行惩处。如果等待期过了,该Validator没有不良行为,那么可以取回保证金和奖励。
Finality被推翻的情况
并非所有包含在Finality中的交易都不会被推翻。
如果攻击者的身份是矿工,那么他是无法推翻已经达成的Finality。因为Finality是Validator投票出来的,无论矿工的算力多强,如果没有Validator作为同伙,是无法推翻Finality的。
如果出现Finality被推翻的情况,一定是有大量的Validator(至少1/3的Validator)对前后两个有冲突的Finality同时下注。一旦这种情况被发现,这些Validator的保证金将会被没收。
以太坊的PoS共识机制
以太坊最终使用的是Gasper ,是Casper FFG 和 LMD-GHOST分叉选择算法的组合。在 Gasper 中,Casper FFG 原来的分叉选择规则被弃用,转而采用一种更复杂的算法,即 LMD-GHOST。