不请自来,区块链底层研发工程师一枚,觉得这个问题很对我的胃口,来强答一发。
先说答案,我认为以太坊的挖矿机制优于比特币。至于为什么以太坊优于比特币,且听我慢慢道来。
众所周知,目前的以太坊和比特币都使用POW机制作为挖矿机制,因此我们只需要针对两者的POW机制进行分析就可以弄清这个问题。
POW机制,又叫工作量证明机制,简单来说,就是矿工生产每个区块时,都需要求解一个nonce值,然后这个nonce值和区块头的数据一起求解hash值,求解出的hash值要小于一定的难度目标值。其它的节点收到这个区块后,会用这个nonce值加上区块头一起重新计算一下hash值,看看是否满足该条件。这个机制主要涉及到hash算法、出块间隔的设定(难度调整)、主链的选择等,下面我们也从这几个方面就比特币和以太坊的挖矿机制进行分析。
hash算法
在比特币中,中本聪老爷子选定sha256作为pow中的hash算法,该算法属于当时(2008年)最先进、最安全的hash算法,不得不说老爷子的与时俱进。后面涌现出来的很多山寨币又搞了这hash算法、那hash算法,又或者是什么并联、串联,在我看来都没有老子选择当时最新最先进的算法来的有魄力。
而V神在以太坊中则采用自己设计的hash算法Ethash。这个算法据说是借鉴了一篇论文叫做双线性hash的算法,根据此算法发明了Ethash。这个hash算法牛逼之处在于,sha256的解空间是所有的值(所有的数学空间),而Ethash的解空间只能由之前的区块生成的数据集来生成,也就是说它限定了解空间。同时这个算法最厉害的地方,就是可以限制矿机。大家都知道,比特币中使用矿机比一样的机器挖矿的效率高了不是一点半点,而在以太坊中,要挖矿(求解),得先把数据集(解空间)载入到内存中来,然后在数据集中查找nonce。通过耗内存的方式,来限制asic矿机挖矿。
所以从hash算法来说,以太坊略胜一筹。
出块间隔
比特币的出块间隔是10分钟,至于为什么这么做,是因为中本聪他老人家在设计时候就考虑到,产出一个区块,大概要10分钟才能在网络中传播完毕(或者说才能同步到其它所有的节点)。但是这也就限制了比特币的TPS比较低,目前统计的是大概7TPS。这个7TPS为一个区块中平均拥有的交易数量,除以600秒得到。
而在以太坊中为了提高TPS,平均15秒钟就生产一个区块。但是这也同时带来一个问题,就是单位时间内需要广播的数据增加,从而造成网络的拥堵。比特币网络本身就比较堵了,以太坊就更厉害了。
所以从这一点上,虽然以太坊的tps要高,但是其造成网络堵塞,如果单纯只是说挖矿,以太坊更胜一筹,但是综合系统考虑的话,两者打平。
主链选择
主链选择,简单来说就是当一个节点同时收到多个矿工挖到的同样高度的区块时,如何选择。也就是如何解决临时分叉问题。
在比特币中,中本聪老爷子选择使用最简单但是也是最有效的最长链识别做为主链选择的原则。即发生分叉后,哪一条链长,我就选择哪一条作为我的主链。这个主链选择同时也限制了出块的间隔。因为在此种方式下,如果出块间隔过短,很容易造成分叉,所有节点回溯的成本太高。
在以太坊中,则使用ghost算法来选择主链。简单来说,就是选择区块链的子树权重(即子树中节点最多)最大的链作为主链。因为节点最多,也意味这聚集了最多的算力。相对于最长链识别,ghost更难理解。但是它能够解决因为出块间隔段造成分叉的问题。
所以,在这一点上,我认为以太坊的设计思想更胜一筹。
综上,我认为以太坊的挖矿机制优于比特币。