淘先锋技术网

首页 1 2 3 4 5 6 7

区块链学习笔记20——ETH权益证明

学习视频:北京大学肖臻老师《区块链技术与应用》
笔记参考:北京大学肖臻老师《区块链技术与应用》公开课系列笔记——目录导航页

权益证明(POS——Proof of stake)

POW能耗

数据来源:https://digiconomist.net/

目前比特币和以太坊都是基于工作量证明的共识机制,这种共识机制对电力的浪费非常严重

比特币能耗
下图为比特币系统电力消耗随着时间变化的情况。y轴的单位为Twh,1Twh = 10^9 Kwh,1Kwh就是我们平时生活中常说的“一度电”。
在这里插入图片描述
在这里插入图片描述
可以看到比特币系统的能耗是相当大的,每个交易的平均能耗是1000度电,但是尽管成本很高,却仍然存在利润空间。
在这里插入图片描述

以太坊能耗
以太坊能耗也是随时间增长的,中间有一点波动在这里插入图片描述
以太坊的出块时间短,所以每个交易的平均能耗少在这里插入图片描述

比特币和以太坊的能耗相加当做一个国家来看
在这里插入图片描述

思考

挖矿消耗的这些能源是必须的吗?矿工为什么要挖矿?
矿工挖矿是为了取得出块奖励,获取收益。而系统给予出块奖励的目的是激励矿工参与区块链系统维护,进行记账,而挖矿本质上是看矿工投入资金来决定的(投入资金买设备->设备决定算力->算力比例决定收益)。
那么,为什么不直接拼“钱”呢?现状是用钱购买矿机进行挖矿比拼算力,那么为什么不直接将钱投入到系统开发和维护中,而根据投入钱的多少来进行收益分配呢?这就是权益证明的基本思想。

权益证明

采用权益证明的货币,一般在正式发行之前会先预留一些货币给开发者,而开发者也会出售一些货币换取开发所需要的资金,在系统进入稳定状态后,每个人都按照持有货币的数量进行投票。

优点

  1. 省去了挖矿的过程,减少了能耗
  2. POW中维护其安全的资源没有形成闭环,它需要通过显示中的货币去购买矿机,这也就导致只要有人想要攻击,只需要外部聚集足够资金就可以成功。而对于POS,要想发动攻击的话需要得到这个币种发行量一半以上的份额才行,发动攻击的资源只能从这个加密货币的内部才可以得到(闭环)。

POS与POW并不是互斥的,有的加密货币采用一种混合模型,即仍然需要挖矿,但挖矿难度跟你持有的币的数量有关,持有的币越多,挖矿越简单。当然这也是有问题的,即持有币数量最多的人每次挖矿都是最容易的。所以,有的加密货币要求投入的币会被锁定一段时间不能重复使用,比如:挖当前区块投入一定数量的币用于降低挖矿难度,等这个区块发布后,这些币会被锁定一段时间,下次再挖的时候这些币就不能再用了,要过多少个区块之后才能再用。

权益证明的应用仍然存在很多挑战,其中一个就是“两边下注”的问题

如下图所示,区块链系统产生了分叉,存在两个区块A和B竞争主链时,如果是工作量证明的话,同时挖A、B两条链会因为算力分散导致挖到区块的概率降低,但是采用权益证明的话,在A和B同时进行了下注。最终A区块胜出,那么他能够获得A区块相应收益,而在B区块进行投票放入的“筹码”只记录在下面的分叉上并不影响你在上面分叉上的使用,这也就导致其每次都能获得收益。
由于一个人可以拥有多个账户,所以我们无法强迫一个人一次只能投向一个区块。而越有钱的人,通过“双边下注”得到的收益也就越多。
在这里插入图片描述

以太坊准备采用的权益证明协议

以太坊中,准备采用的权益证明协议为Casper the Friendly Finality Gadget(FFG),该协议在过渡阶段是要和POW结合使用的。为工作量证明提供Finality。

Finality是一种最终的状态,包含在Finality中的交易不会被取消

单纯基于挖矿的交易是有可能被回滚的,比特币中规定要等六个区块来防止被回滚,但这只是说明回滚的概率比较小,但是只要攻击者的算力足够强(占到50%以上)仍然可能回滚该交易。所以单纯基于挖矿的区块链是缺乏这种Finality的。

Casper协议引入一个概念:Validator(验证者),一个用户想要成为Validator,需要上交一笔“保证金”,这笔保证金会被系统锁定。Validator的职责是推动系统达成共识,投票决定哪一条链成为最长合法链,投票权重取决于保证金数目。挖矿的时候每挖出一百个区块就作为一个epoch,然后通过投票决定其能不能成为一个Finality。

投票时采用two-phase commit,第一轮投票是Prepare Message,第二轮投票时Commit Message,Casper规定每一轮投票都要得到2/3以上的验证者才能通过(按照保证金的金额大小计算)实际系统中不再区分这两个Message,而且把epoch从100个区块减到50个区块,且只需要一轮投票(对于上一个epoch是Commit Message,对下一个epoch是Prepare Message),要连续两轮投票都得到2/3以上的多数才算有效。

原始版本:
在这里插入图片描述
优化后:
在这里插入图片描述

矿工挖矿会获得出块奖励,而验证者也会得到相应奖励。当然,为了防止验证者的不良行为,规定其被发现时要受到处罚。例如某个验证者“行政不作为”,不参与投票导致系统迟迟无法达成共识,这时会扣掉部分保证金;如果某个验证者“乱作为”,给两个有冲突的分叉都进行投票(两边下注),被发现后没收全部保证金。没收的保证金被销毁,从而减少系统中货币总量。验证者存在“任期”,在任期结束后,进入“等待期”,在此期间等待其他节点检举揭发是否存在不良行为进行惩处,若通过等待期,则可以取回保证金和应得的奖励。

Q:通过验证者达成的Finality有没有可能被推翻?
A:如果发动攻击的组织仅仅作为矿工的话是无法推翻的,必须在系统中,存在大量“验证者”对前后两个有冲突的Finality都下注。也就是说,至少1/3(该协议规定超过2/3才有效)的验证者两侧都投票。而这一旦被发现,这1/3验证者的保证金将会被没收。

以太坊系统设想,随着时间推移,挖矿奖励逐渐减少而权益证明奖励逐渐增多,从而实现POW到POS的过渡,最终实现完全放弃挖矿。

为什么以太坊不从一开始就用权益证明呢?
因为权益证明还不是很成熟,工作量证明是很成熟的,经过了时间的检验(bug bounty)。
EOS加密货币,即“柚子”,就是采用权益证明的共识机制,其采用的是DPOS:Delegated Proof of Stake。该协议核心思想是通过投票选21个超级节点,再由超级节点产生区块。但目前,权益证明仍然处于探索阶段。

其他观点

前面的基本观点都是基于“挖矿消耗大量电能,而这是不好的”这一观点,但也有人持有相反观点。
他们认为其所消耗的电能所占比值并不大,而且其对于环境的影响是有限的。挖矿提供了将电能转换为钱的手段,而电能本身难以传输和存储,一般来说,白天所发的电不足,晚上所发的电又多于实际需求,很多大型数据中心要建在电比较便宜的地方,就是因为传输数据比传输电要容易。因此,挖矿为将多余的电能转换为有价值的货币提供了很好的解决手段。
也就是说挖矿消耗电能可以有效消耗过剩产能,带动当地经济发展。