POW机制能耗状况
比特币和以太坊目前都是基于工作量证明,这种共识机制收到了一个普遍的批评就是浪费电。
上图展示的是比特币能耗随时间变化的情况,y轴是TWh是Terawatt Hours,这是10^12,KWh=Kilowatt hours,是10^3,所谓叫千瓦时,一度电的意思,通过这个图可以看出比特币能耗随时间是不断增长的。
上图是比特币的能耗统计数据:
比特币每年的总能耗,大概是70个TWh,相当于治理这个国家的能耗,也相当于647万多美国家庭的能耗,占全世界总能耗的0.31%
具体到每个交易上来说,平均每个交易的能耗是1014个千瓦时,相当于34.26个美国家庭一天的能耗,这个能耗是相当大,一个交易要花1000度电,信用卡公司处理一个交易的能耗远远到不了这个数字。
比特币挖矿的每年总收入是60多亿美元,接近61亿美元,费用是差不多35亿美元,占总收入的57.48%,说明挖矿的利润空间还是很大的
上图是以太坊的统计数据,以太坊的能耗也是随着时间增长的,中间有一些波动
从具体的数据上来看,以太坊一年的能耗大概是20个TWh,跟刚才比特币的70个还是少了不少,相当于冰岛这个国家的能耗,也相当于183万个美国家庭的能耗,能耗占全世界总能耗的0.09%,平均到每个交易上,每个交易是67个千瓦时,相当于2.25个美国家庭一天的能耗。
从道理上讲,比特币的交易是比较简单的,就是一些单纯的转账交易,以太坊的交易有可能包含对智能合约的调用,所以以太坊的能耗应该更高才对,而实际上是比比特币要低了很多,一个是67度电,一个是1000多度电。因为出块时间长,比特币要10分钟才能挖出一个区块,以太坊15S就可以挖出一个区块,所以以太坊的出块时间很短,挖矿挖的时间就短,所以每个交易平均下来的能耗要小很多,当然以太坊的这个单位交易的能耗仍然比信用卡公司要高的很多。
以太坊每年挖矿的收入是50多亿美元,费用接近24亿美元。如果把比特币和以太坊的能耗加在一起当作一个国家来算的话,它在国家中的排行榜是这样的,芬兰,比利时,巴基斯坦,然后就是比特币加以太坊,然后是哈萨克斯坦,阿联酋,荷兰。
思考
挖矿的过程这些能耗是不是必须的,思考几个问题:
矿工为什么要挖矿?为了取得出块奖励,为了获得收益。
为什么要给矿工这些收益,这些出块奖励呢?为了激励矿工参与区块链的维护。
那矿工具体是怎么挖矿的呢,比如说你决定参与挖矿要成为一个矿工,你需要怎么做?你需要找一笔挖矿资金,然后去买这些设备,可以买矿机,GPU,然后开始挖矿。
那挖矿的收益是由什么决定的?是由你算力所占的比例决定的,是由你有多少矿机,占了多少硬件设备,最终是由你投入的资金决定的。
那既然最终是拼钱,那么直接把钱拿出来比一比不就行了吗。现在是矿工通过竞争算力来决定挖矿的收益如何分配,能不能改成直接靠比钱的多少来决定收益。比如我出100万,你出50万,现在的做法是咱们用这些钱去买矿机,然后用这个矿机开始挖矿,比拼下算力,看谁挖的区块多,那与其这样,还不如我们都把这些钱投入区块链开发,将来就按照每个人投入的资金的多少来决定收益的分配。那还挖矿干嘛,直接拼钱不就醒了,这个就是权益证明的一个基本思想,有时候管这种方法叫做virtual mining(虚拟挖矿)。
权益证明
采用权益证明的加密货币,一般在正式发行之前,会先预留一部分货币给开发者,也会出售一部分货币,来换取开发这个加密货币所需要的资金,将来按照权益证明的共识机制,每个人是按照持有货币的数量来进行投票的,那这种方法跟工作量证明相比有什么优点?
一个明显的好处是,省去了挖矿的过程,也避免了因此产生的能耗和环境影响,减少了温室气体的排放。
基于工作量证明的共识系统从某种意义上来说,维护区块链安全的资源不是闭环,这是什么意思呢?我们说Block chain is secured by mining,用美元可以购买矿机,然后参与挖矿,也就是说,是从加密货币系统的外面得到的。虽然17年加密货币的市值有了很大的增长,但是18年开始又下跌了不少,无论怎么说,它跟世界经济总量相比,仍然是微乎其微的,比如说美国股市的总市值相比,这两完全不在同一个数量级上。所以如果有某个组织想要发动恶意攻击,只需要足够的资金来购买挖矿设备,然后聚集到加密货币总算力一半以上的算力就行了,也就是说,发动这种攻击所要的资源是可以从外面的世界得到的。
像比特币这样比较主流的加密货币,抗攻击的能力还是相对比较强的,因为系统的总算力还是比较大的,如果是一些刚刚发行的小的这种遇到这样的攻击可能就是致命的。如果这种小的币种刚刚发行不久,就遇到这种攻击,那么很可能这个币价就直线下降甚至归零了,那么对于这个开发者和早期矿工来说,遭受的损失可能是灾难性的,不等这个加密货币长大,就把他先干掉了。
那么如果采用的是权益证明,情况会有什么不同呢?
优点类似于股份制公司按每人占的股份进行投票,权益证明是按照你有多少这个币种的币进行投票的,所以如果有某个人想发动恶意攻击,比如说51%的攻击,他首先要获得这个币种发行量一半以上的份额才行,也就是说发动攻击的资源只能从加密货币系统内部得到,这就是为什么说它是一个闭环。
无论这个组织者在外面有多少钱,都不会对这个加密货币造成直接的影响,必须用这些钱去买币,买到足够多的币然后才能发动攻击。而一旦有人大量买入加密货币,会出现价格大涨,本来一个刚刚发行的小币种,没有多少人买的,价值也不高,突然有人为了搞垮它大量买入这种币种,让它价格大涨,如果你是这个币的开发者或者早期投资者,出现这种情况你会怎么想?你会觉得这不一定是坏事啊,我正好可以从中赚一笔,有点类似于股份制公司遭受恶意收购,就为什么说工作量证明的系统维护它安全的资源不是一个闭环,权益证明才是一个闭环。
权益证明和工作量证明并不是互斥的,有的加密货币采用的是一种混合模型,它仍然是要挖矿的,但是挖矿的难度跟你占有的权益,你持有多少币是相关的。
比如说每个矿工持有一定数量的这个币,挖矿的时候你持有的币越多,挖矿的难度越小,根据你持有的这个币的权益降低你的挖矿难度。但如果就像这么简单去设计,其实是有一定问题的,那样的话,系统中持有币数量最多的那个人,每次挖矿都是最容易的。所以有的加密货币要求你投入的币会被锁定一段时间,不能重复使用,如果挖当前区块的时候,你投入一定数量的币,用于降低挖矿难度,等这个区块发布出来之后,你投入的这些币就会被锁定一段时间,下次再挖下一个区块的时候,这个币就不能再用了,要过一段时间,过多少个区块以后,才能再重复使用,这个有时候管它叫做Proof of Deposit。
基于权益证明的共识机制该怎么设计有很多挑战,其中这种早期的权益证明遇到的一个挑战就是两边下注的问题
比如说有上图这样一个区块链,出现了分叉。如果是挖矿的话,会沿着上面这条链去挖,因为这个是最长合法链,其实下面那条链也有可能成为最长合法链,如果连续挖出好几个区块,他有可能比上面那条链还要长,但是你不会两个都挖,两边都挖的话,算力分散了,挖到的概率就笑了。但是用权益证明的话,可以两边都下注,如果上面那条链成为最长合法链,下面那条链锁定的那些币是没有影响的,比如说,你挖下面区块投入的那些币,只是记录在下面的分叉上,并不影响你在上面分叉使用,这个叫做nothing at stake,这是早期基于权益证明遇到的一个问题。
以太坊准备采用的权益证明
以太坊中准备采用的权益证明协议叫做Casper the Friendly Finality Gadget,该协议在过渡阶段也是要跟工作量证明混合使用的,为工作量证明提供叫做Finality,Finality是一种最终的状态,包含在Finality中的交易不会被取消。
单纯基于工作量证明就基于挖矿的交易是有可能被回滚的,就比如说,某个交易被写到区块链上,然后有人从前面开始分叉,挖出一条更长的分叉链,这个时候原来写入区块链的那个交易有可能就无效了,比特币当中规定要等六个确定区块,那个只是说等六个确定区块之后,发生回滚的可能性已经非常小了,但是有个某个恶意的攻击者,从前面开始分叉,只要他算力强到占到半数以上的算力,仍然有可能让这个分叉链变得比原来的链更长。
Casper协议引入了一个概念叫做验证者Validator,要想成为一个Validator必须要投入一定数量的以太币作为保证金,这个保证金会被系统锁定。Validator的职责是要推动系统达成共识,投票决定哪条链是最长合法链,投票的权益决定于保证金的数目大小。
具体的做法是,混用的时候还是有人挖矿的,挖矿的时候,每挖出100个区块就作为一个epoch,然后决定能不能成为Finality,要进行一些投票,第一轮投票是一个Prepare Message,然后第二轮是Commit Message,Casper规定每一轮投票都要得到2/3的验证者才能通过,这事按照保证金的金额大小来算的。
实际系统中不再区分这两个Message,而且这个epoch从原来的100个区块减少到50个区块,变成了每50个区块就是一个epoch,每个epoch只用一轮投票的就行了,这一轮投票对于上一个epoch来说是个Commit Message,对于下一个来说是一个Prepare Message,那么要连续两轮投票,两个epoch都得到2/3以上的多数,才算有效。
上图是一条区块链,两个虚线中间间隔了100个区块,原始版本的Casper协议是把中间是间隔了100个区块定义成一个epoch,然后结束有两轮投票,每一个要2/3的验证者才能算通过,这是原始版本。
优化以后,原来100个区块的epoch,变成了50个区块的epoch,然后每个epoch结束的时候只要一轮投票,对于前一个epoch来说是Commit Message,对于后一个epoch来说是Prepare Message,然后连续两个投票的都要有2/3的验证者支持才算通过。
那验证者有什么好处呢?
如果验证者履行职责的话,可以得到相应的奖励,就像矿工挖矿能得到出块奖励一样,验证者做这个工作也可以得到这个奖励。相反如果验证者有不良行为被发现的话,要受到相应的触发,比如某个验证者行政不作为,该投票的时候不去投票,结果导致系统迟迟不达成共识,这种情况下要扣掉他的一部分保证金;如果某个验证者,乱作为乱投票,给两个有冲突的分叉都投票,就两边下注,这种情况被发现的话,要没收全部保证金,相当于减少了系统中以太币的总供应量。
每个验证者有一定的任期,即使你交了保证金也不是可以永远当验证者,任期满了之后要经过一定时间的等待期,等待期是为了让其他的验证者检举揭发这个验证者有没有不良行为,进行惩处,如果等待期过了,没有什么问题,验证者可以取回当初的保证金和得到的奖励,这就是Casper协议的一个过程。
Casper协议可以给挖矿完成一个区块链的某一种状态,做一个check point(检查点),那这个check point是不是绝对安全的?换句话说,通过这个验证者投票达成的Finality有没有可能被推翻?
原来说包含在Finality里的交易是不会被推翻的,这个是不是绝对的,假设有某个有恶意的组织要发动攻击,如果这个组织仅仅是矿工的话,他是没有办法推翻已经达成的Finality,因为Finality是验证者投票投出来的,单纯是有恶意的矿工,无论他算力有多强,如果没有验证者作为同伙是不可能推翻的。
那什么情况下会出现攻击成功的情况,一定是有大量的验证者两边下注,Casper协议要求每轮投票有2/3以上的验证者支持才算通过,如果出现这种情况,至少是1/3的验证者是两边都投票,一旦发现,这1/3的验证者的保证金将会被没收,所以可以看到基于权益证明的共识机制和基于工作量证明的共识机制是很不一样的。
以太坊是要逐步从工作量证明过渡到权益证明,随着时间的推移,挖矿得到的奖励是越来越少的,权益证明得到的奖励是越来越多的,最后达到完全不用挖矿的境界。
那既然权益证明这么好,以太坊为什么不从一开始就用权益证明呢?
因为权益证明不是很成熟,工作量证明是比较成熟的,是经过了时间的检验,比特币和以太坊的挖矿算法都经历了bug bounty的检验,没有人发现什么漏洞,很多人认为权益证明是未来的方向,但是目前主流的加密货币用的还是工作量证明。
其他观点
对于挖矿消耗大量电能这个观点有人提出了不同的看法,他们认为其所消耗的电能所占比值并不大,而且其对于环境的影响是有限的。
挖矿的一个好处是提供了把电能转化成钱的一种手段。而电能本身难以传输和存储,比特币矿产都是建在电力丰富的地方,所以有人认为挖矿消耗电能并不是坏事,可以有效的化解过剩产能,带动当地经济的发展。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。