ETH-权益证明(区块链技术与应用)

权益证明 proof of stake

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

以太坊与比特币相比能耗要少很多,这是因为比特币的出块时间长,以太坊的出块时间短,所以每个交易上比特币所花费的能耗要多很多,但是即使如此,以太坊挖矿所消耗的能耗要比信用卡公司多很多。

矿工为什么要挖矿?

为了要收益,为什么要给他出块奖励呀?为了激励矿工参与区块链系统的维护

矿工具体要怎么挖矿:找一大笔资金买设备,挖矿的收益是由区块决定、算力决定、电力决定,实际上是拼钱决定的。

这就带来一个问题,既然是拼钱来决定谁来发布谁来发布下一个区块,我们直接拼钱来代替算力决定吧,有的时候管这种方式叫做virtual mining虚拟挖矿

采用权益证明的加密货币一般会预留一部分货币给开发者,也会出售一部分货币用作货币的开发资金,将来按照权益证明的共识机制,每个人是按照资金的多少来进行投票。

基于工作量证明的共识系统从某种意义来说维护区块链安全的资源不是一个闭环(越挖矿,越安全)。虽然 某种虚拟货币的总市值很高,但是跟某些组织相比,虚拟货币的总市值是微乎其微的,所以要是某个组织恶意发动攻击,只需要足够的资金来购买挖矿设备,然后聚集到一半以上的算力就可以,这个例子是说现实世界对这种区块链系统仍具有威胁能力。

比特币这种比较主流的加密货币,抗攻击的能力是比较强的,因为系统的总算力是比较大的。但是对于AltCoin这种小的币种,遇到这种攻击将是毁灭性的,很可能这个币的价值会直线下滑,这对于系统开发者和早期的挖矿者造成的损失将是灾难性的,一个专门的词就是infanticide把它扼杀在摇篮里。

我们采用权益证明的一个好处就是:无论某些组织再有钱,都不能通过外界的矿机等东西来威胁系统,只有通过获得更多的加密货币,才能对货币系统产生威胁,这就是我们说的基于工作量证明的共识系统从某种意义来说维护区块链安全的资源不是一个闭环(越挖矿,越安全),基于权益证明的货币系统是一个闭环,只能在系统内部发动攻击。而一旦有人通过大量法币来购买货币,会造成货币价格大涨,所以对于货币开发者来说这不一定是一个坏事。

有的加密采用的是混合模型,依旧会采用挖矿,但是挖矿的难度是和挖矿者持有的货币是相关的,持有的币越多,难度越小。

但是这样简单地设计是有一个问题,就是钱越多的人总能获得区块,富人越来越富,所以我们可以将比拼的钱进行一定时间内冻结,使得这笔钱不能参与下一次区块的发布权。这种做法有时候叫做proof of deposit

基于权益证明来设计问题将会遇到很多问题,早期遇到的一个问题是两边下注的问题nothing at stake

img

正常我们挖矿,将沿着最长合法链继续挖矿,但是要是使用权益证明的话(要使用资金进行下注对比谁得到下一个区块的发布权),用户就可以在两条链上都进行下注,因为在下面一条链上下注并不会影响用户在上面一条链上下注nothing at stake。这就是早期基于权益证明的共识机制遇到的一个问题。

Casper the friendly finality gadget(FFG)

以太坊中准备采用的权益证明协议叫做Casper the friendly finality gadget(FFG)。

他在过度阶段也是要和工作量证明混合使用,为工作量证明提供finality,这个finality是一个最终的状态,包含在finality中的交易不会被取消,而单纯基于工作量证明,就是基于挖矿的交易是有可能是被回滚的,是缺乏finality。

所以以太坊协议引入了一个概念validator叫做验证者要想成为validator需要交纳一定的以太币成为保证金,validator的职责就是推动这个系统达成共识,投票决定那条链是最长合法链,投票的权重就是保证金的大小,混用的时候还是有人挖矿的,挖矿的时候每挖出一百个区块就作为一个epoch,然后要进行一个投票决定他能不能成为finality。

投票采用以下的方法:

两阶段提交:two-phase commit

  • prepare message 第一轮投票

  • commit message 第二轮投票

在casper协议中规定每一轮投票中,都要经过2/3以上的验证者才能通过。实际的系统中不再区分这两个message,而且把这个epoch变成了每50个区块生成一个epoch,然后每个epoch只需要一次投票就可以,对于下一个epoch,前面的epoch是它的prepare message 第一轮投票

原始版本:一百个区块就作为一个epoch,挖出一百个区块后才进行两轮投票

img

优化后:每50个区块生成一个epoch,每个epoch只需要一次投票就可以

img

验证者

验证者在投票的过程中要是

  1. 不投票:扣掉部分保证金
  2. 乱投票:比如有两边下注的行为,直接没收全部保证金

每一个验证者都有一定的任期,任期之后就要有一定时间的等待期,这时可能其他节点可能会对这个验证者进行一个检举、揭发,假如没有问题,就会回退给验证者保证金和一定金额的奖励。这就是casper协议的一个过程。

casper协议可以给挖矿挖出的区块链的某种状态做一个检查点:一个check point,那么这个check point是不是绝对安全的?通过这个验证者达成的finality有没有可能被推翻?

  • 假如某个矿工要推翻一个finality是不可能的,为什么?

因为finality 是验证者投票投出来的,单纯是有恶意的矿工,无论算力有多强,假如没有验证者作为同伙,finality 是不可能被推翻的。

  • 那么什么样的情况会造成finality被攻击成功的情况?

一定是有大量的验证者给两边的分叉都进行下注的情况下,因为casper协议要求每轮投票要求有2/3以上的验证者支持才能通过,如果出现这种情况,那么至少有1/3的验证者两边都投票了,这一旦发现这1/3的验证者的保证金将会被没收。

我们可以看到,基于权益证明的共识机制与基于工作量的共识机制是完全不一样的。以太坊的设想是逐步将基于工作量证明过渡到基于权益证明,随着时间的推移,挖矿得到的奖励是越来越少的,权益得到的奖励是越来越多的,最后达到完全不用挖矿的境界。

为什么以太坊一开始不用权益证明呢?

权益证明不是很成熟,工作量证明是很成熟的(比特币和以太坊的挖矿算法都经历了bug bounty的检验,没有人发现什么漏洞)很多人认为权益证明是未来发展的方向,但是目前主流的加密货币用的还是工作量证明。

比如以太坊现在还是用的工作量证明,上个月有个叫EOS的加密货币上线了,用的就是权益证明的方式挖矿,但是用的不是casper协议,用的是DPOS协议

posted @ 2021-11-12 13:03  不加糖不加奶  阅读(544)  评论(0)    收藏  举报