比特币和以太坊目前用的都是基于工作量的证明,这种共识机制受到普遍的批评就是浪费电。

矿工挖矿是出于出块奖励,算力越大,出块奖励平均下来就越大,算力取决于设备的多少,也就是资金的投入,资金投入越多,奖励也越丰厚。那么我们可不可以不挖矿,直接比拼资金,奖励按资金比分配?这就是权益证明的思想,权益证明有时候也叫virtual mining。

采用权益证明的交易货币,一般会在正式发行之前预留一些货币给开发者,也会出售一部分货币来换取开发加密货币所需要的资金,将来按照权益证明的共识机制,每个人按照持有货币的数量进行投票,这种方法和工作量证明相比有一些优点,一个是不需要挖矿了,减少能耗;二是挖矿的算力从现实世界来,攻击者只要足够富裕,买大量矿机就可以发动攻击,对于小币种是致命打击,权益证明是按持有的货币数量进行投票,类似股票分红,如果某人想发动攻击,他需要先获得货币总量的51%才能发动攻击,也就是说发动攻击的资源必须从加密货币的系统中来,这样就系统形成了一个闭环,无论攻击者在系统外有多少资源,都不会对系统造成直接的影响,如果一定要发动攻击就要买大量的币,造成币的大涨,而开发者和早期矿工就可以从中获利。权益证明和工作量证明不是互斥的,有些加密货币采用的是混合模型,仍然要挖矿,但是挖矿难度和持有多少币是相关的,币越多难度越低,但是这样简单设计有一个问题就是富人挖矿越来越简单。有些两者混用的加密货币系统会将用于降低挖矿难度的币锁定一段时间,下次再挖一个区块的时候,不能用锁定的币降低难度,过几个区块才能使用,这种叫proof of deposit。

权益证明有许多问题,早期的权益证明有一个问题是两边**
权益证明
上图出现分叉,如果挖矿的话,我们会沿着上面这条链继续挖,但是下面的链也有可能成为最长合法链,只要下面这个分支连续挖出好几个区块。但是矿工不会两边都挖,因为算力会分散。如果不挖矿,用权益证明的话,两边都可以**,如果上面那条链成为最长合法链,下面分支锁定的币对上面分支没有影响的,所以这种情况叫nothing at stake。

以太坊准备采用的权益证明协议叫做Casper the Friendly Finality Gadget(FFG),它在过渡阶段也是要和工作量证明混合使用,为工作量证明提供finality,finality 是最终状态,包含在finality中的交易不会被取消,单纯基于工作量证明是有可能被回滚的,Casper协议引入validator,要想成为validator,必须投入一定数量的以太币作为保证金,这个保证金会被锁定,validator推动系统达成共识,投票决定哪条链是最长合法链,投票权重取决于保证金的大小。挖矿的时候(混用状态下)每挖出一百个区块,就作为一个epoch,然后要决定它能不能成为finality要进行投票,投票进行两轮,类似于数据库的two-phrase commit,一个是prepare message,一个是commit message,Casper规定每一轮投票都要获得2/3以上的投票才能通过。实际当中不区分投票阶段,epoch也减少至50个,每个epoch只用一轮投票就行,这轮投票对于上一个epoch来说是commit message,对于下一个epoch来说是prepare message,要连续两个epoch都得到2/3的投票才算有效。
权益证明
上图是早期的Casper协议,100个区块构成一个epoch,每个epoch要投两轮,都要获得2/3的票

权益证明
上图是实际的Casper,这轮投票对于上一个epoch来说是commit message,对于下一个epoch来说是prepare message,要连续两个epoch都得到2/3的投票才算通过。
验证者验证的好处是如果验证者履行职责,那么可以获得相应的奖励,就像矿工挖矿能获得出块奖励一样,验证者验证也可以得到奖励,相反,如果验证者有不良行为,要受到相应处罚,比如验证者不作为,导致系统迟迟达不成共识,这样要扣掉验证者的部分保证金,如果验证者乱作为,给两个有冲突的分叉都投票,这种情况要没收全部的保证金。没收的保证金会销毁,相当于减少了以太币的总量。每个验证者有一定的任期,任期满了之后要经过一定时间的等待期,等待期是为了让其它节点可以检举验证者的不良行为,等待期过了没有受到惩罚那么验证者可以取回保证金以及一定的奖励,这就是casper协议的过程。

这里有一个问题,包含在finality的交易是不是一定不会被回滚,假设有某个恶意节点发动攻击,如果他只是一个矿工,那么他是不能推翻已经达成的finality,因为finality是验证者投票投出来的。如果有大量的验证者两边**,给前后两个有冲突的finality都**,casper协议规定每轮投票要2/3的支持才算通过,所以至少有1/3的验证者是两条分叉都投票了。

相关文章:

  • 2021-08-14
  • 2021-06-20
  • 2021-12-09
  • 2021-08-25
  • 2021-11-29
  • 2021-09-06
  • 2021-06-11
  • 2022-01-19
猜你喜欢
  • 2021-11-17
  • 2021-04-21
  • 2022-01-14
  • 2021-12-05
  • 2021-04-18
  • 2021-04-24
  • 2021-06-17
相关资源
相似解决方案