权益证明
约 1595 字大约 5 分钟
2021-12-21
相关术语
Proof of Work PoW 工作量证明
Proof of Stake PoS 权益证明或者股份证明
virtual mining 虚拟挖矿
AltCoin Infanticide 把币扼杀到摇篮中
Proof of Deposit PoD 存款证明
nothing at stake 无利害关系
two-phase commit 两阶段提交
能耗
比特币和以太坊现在都是采用的工作量证明Proof of Work
PoW
,这种方式共识机制受到普遍的批评就是浪费电。
这个Y轴TWh
是Terawatt hours 1012,大家比较收悉的是KWh
,kilowatt hours 103,就是千瓦时一度电的意思。
比特币一年的能耗69.96TWh,相当于智利整个国家的能耗,占全球的0.31%。这个能耗是相当大的。一个交易大概需要1014,也就是1000度电,这听起来挺吓人的。
下面是以太坊的数据。
平均到每个交易就是67读电。实际是比比特币少很多。
Proof of Stake
矿工为什么要挖矿?为了取得出块奖励,为了获得收益。那为什么要给矿工这些收益呢?是为了激励矿工参与区块链的维护。那矿工具体是怎么挖矿的呢?需要一大笔资金,然后去买挖矿设备,可以是矿机可以是GPU。挖多少收益就是由挖到多少区块决定,而挖多少区块是由算力所占的比例决定,而算力是由硬件设备决定的,设备又由金钱决定,投入的资金越多,设备越好,挖矿的算力越大得到的出块奖励就越多,受益也就越高。所以说白了,挖矿的收益是由拼钱决定的!那么既然是拼钱,直接把钱拿出来比一比不就行了么?现在是矿工通过竞争算力来决定挖矿的收益分配,能不能改成直接比钱的多少决定利益的分配。
比如A出100万,B出50万,现在的做法是把这些钱拿去买矿机,比拼谁的算力大。与其这样,还不如把这些钱都投入到区块链的开发,将来就按照每个人投入资金的多少,来决定收益的分配,那还挖矿干嘛?直接拼钱就完事了。这种方法就叫做Proof of Stake
,或者叫做virtual mining
虚拟挖矿。
采用权益证明的虚拟货币一般在正式发行之前,会先预留一部分货币,给开发者。也会出售一部分货币,来换取开发所需的资金。将来按照权益证明的共识机制,每个人是按照持有货币的数量进行投票的,这种方法跟工作量证明相比,有哪些优点呢?
一个很明显的好处是省去了挖矿的过程,也避免了由此带来的能耗,和对环境的影响、减少了温室气体的排放。
基于工作量证明的共识系统,从某种意义来说,维护这个区块链安全的资源不是一个闭环!block chain is secured by mining
。那么mining的equipment从哪来呢?是用法币买来的,是从加密货币的外面得到的。这就带来一个问题,虽然最近加密货币的总市值有了很大的增长,但是跟世界经济总量相比仍然是微乎其微的,比如跟美股相比,完全不在一个数量级上。所以如果有某个组织想发动恶意攻击,它只需要用足够的资金来购置挖矿设备,然后聚集到51%的算力就行了。也就是说发动攻击的资源是可以从外面得到的 。
比特币还好,已经得到一定体量,想要攻击挺不容易的。但是像刚发行的加密货币,想要攻击就非常容易了。像之前提到的AltCoin
,就是除了比特币以外小的加密货币,如果这种小的币种刚刚发行不久,就遇到这种攻击,那么很可能这个币价就直线下降,甚至归零。那么对于这个币的开发者和早期矿工来说,损失就是灾难性的,AltCoin Infanticide
,把币扼杀到摇篮中。
如果是权益证明呢,想要发动攻击只能从内部发起,跟比特币的攻击类似,比特币需要51%以上的算力,权益证明则需要51%以上的份额,才能发动攻击,这个攻击的资源只能从内部得到,这就是为什么说权益证明是一个闭环。
权益证明和工作量证明并不是互斥的,有的加密货币会采用混合的模式,它仍然需要挖矿,但是挖矿的难度跟你占有的权益、持有多少币是相关的。比如说每个矿工持有一定数量的币,那么挖矿的时候持有的币越多挖矿的难度就越小,当然如果就这样简单的设计其实是有一定问题的,持有币越多的节点每次容易挖到矿,所以有的币会要求你投入的币每次使用会被锁定一段时间,不能重复使用,有冷却时间,有时候管它叫做Proof of Deposit
。
基于权益证明的共识机制该怎么设计,有很多挑战。其中早期的权益证明遇到一个挑战就是两边下注的问题,nothing at stake
(无利害关系),就是分叉的时候两个分支都下注。
以太坊中准备采用的权益协议叫做Casper the Friendly Finality Gadget
(FFG)。Casper是怎么做的呢,会有Validator角色,就是投入大量以太币,获得话语权。挖矿的时候,没挖100个区块,作为epoch,然后要决定它能不能成为Finality,要进行投票two-phase commit
两阶段提交,第一轮是Prepare Message,第二轮是Commit Message。Casper中规定,每一轮投票都要得到32以上的验证者同意才能通过。