北京大学肖臻老师《区块链技术与应用》ETH笔记 - 9.0 权益证明

9.0 权益证明

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

9.1 BTC能耗

目前比特币和以太坊都是基于工作量证明的共识机制,这种共识机制对电力的浪费非常严重。 下图为比特币系统电力消耗随着时间变化的情况。y轴的单位为Twh,1Twh = 10^9 Kwh,1Kwh就是我们平时生活中常说的“一度电”。

可以看到比特币系统的能耗是相当大的,每个交易的平均能耗是1000度电,但是尽管成本很高,却仍然存在利润空间。

9.2 以太坊能耗

以太坊能耗也是随时间增长的,中间有一点波动。

以太坊的出块时间短,所以每个交易的平均能耗比比特币少。

img

比特币和以太坊的能耗相加当做一个国家来看。

9.3 权益证明

思考

挖矿消耗的这些能源是必须的吗?矿工为什么要挖矿? 矿工挖矿是为了取得出块奖励,获取收益。而系统给予出块奖励的目的是激励矿工参与区块链系统维护,进行记账,而挖矿本质上是看矿工投入资金来决定的(投入资金买设备->设备决定算力->算力比例决定收益)。

那么,为什么不直接拼“钱”呢?既然是用钱购买矿机进行挖矿比拼算力,那么为什么不直接将钱投入到系统开发和维护中,而根据投入钱的多少来进行收益分配呢?这就是权益证明的基本思想。

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

优点

省去了挖矿的过程,减少了能耗,温室气体的排放。

POW中维护其安全的资源没有形成闭环,它需要通过现实中的货币去购买矿机,这也就导致只要有人想要攻击,只需要外部聚集足够资金就可以成功。而对于POS,要想发动攻击的话需要得到这个币种发行量一半以上的份额才行,发动攻击的资源只能从这个加密货币的内部才可以得到(闭环)。无论这个人再外面有多少钱都不会对这个加密货币系统造成直接的影响。必须要有足够的钱去买足够的币才能够发起攻击,一旦有人大量买入这种加密货币,价格会大涨,早期的开发者和投资者会认为这不是坏事情,正好可以大赚一笔,这就类似于股份制公司遭受恶意的股份收购。

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

问题

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

如下图所示,区块链系统产生了分叉,存在两个区块A和B竞争主链时,如果是工作量证明的话,同时挖A、B两条链会因为算力分散导致挖到区块的概率降低,但是采用权益证明的话,在A和B同时进行了下注。最终A区块胜出,那么他能够获得A区块相应收益,而在B区块进行投票放入的“筹码”只记录在下面的分叉上并不影响你在上面分叉上的使用,这也就导致其每次都能获得收益。

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

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

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

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

Casper协议引入一个概念:Validator(验证者),一个用户想要成为Validator,需要上交一笔ETH“保证金”,这笔保证金会被系统锁定。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都下注。比如,一个Finality已经被超过2/3的验证者投票通过了(比如一共就A、B、C三人,A和B投了同意这个Finality的票),现在矿工发动分叉攻击,分叉链成为了最长合法链,验证者同时为了帮助分叉,投票给分叉链(这个时候可能是B和C投给了分叉链),也就是说,至少1/3(B两边都投了)(上面的链投了2/3,下面的链也投了2/3,至少有1/3的重叠了)的验证者两侧都投票。而这一旦被发现,这1/3验证者的保证金将会被没收。

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

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

9.5 其他观点

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

猜你喜欢

转载自blog.csdn.net/qq_40503872/article/details/124199527
今日推荐