12月9日12月9日,Chainge区块链技术沙龙来到了北京,本期沙龙的主题是《寒冬,矿池该何去何从?》,BTC.com CEO庄重详解了PoW, PoS, DPoS等共识机制挖矿算法的利弊,他表示各算法的设计存在取舍,保护一条链需要付出代价,去中心化和成本不能兼顾。
以下是庄重的演讲内容精编,由整理。
大家好,我是BTC.com CEO庄重,非常感谢的邀请,也非常高兴在寒冬里还能看到这么多矿工来参加活动。我想带大家回顾一下常见的几种挖矿算法,并探讨下这方面近两年比较有争议的事情,最后站在矿池运营策略的角度给大家提出几点建议。
对于任意一个数字货币项目,为什么要有共识协议?一是为了让一个新的节点加入网络时,通过和其他节点的通讯,就能够达到一个最终一致的状态。二是我们需要一个公平的激励机制,来保证不断有新的区块产生。三是为了让这条链时稳定的,我们要减少矿工在主链外挖矿的动机。所以说,共识协议的核心有两点,怎么判断一个区块是合法的?怎么判断哪一条链是真正的主链?这里就包含了区块合法性检测和主链选择规则。
工作量证明(POW)
POW工作量证明,通常是说根据当前的候选区块,区块头里就包含了相关的交易信息,然后我们基于某种哈希算法计算出它的哈希值小于设定的目标。不同的币种采用的算法不同。主链选择规则也是设计中需要考虑的,但通过此次BCH分叉大战,大家意识到,认可主链并不是要看哪条链最长,而是要看哪条链累计的工作量最大。
目前来看,POW仍然是一个相对公平的分发机制,这体现在算力比例决定挖矿的概率,所以挖矿是公平的。但令人头疼的是,你防攻击的成本和攻击者的成本一样高,为了防范攻击,你需要和攻击者相匹配的算力。这就是为什么大家看到这次算力大战变成了烧钱大战,所以对于POW机制来讲,不管你的算法设计得有多好,如果没有算力和价格的支撑,都很难保证安全性。
对于矿工来讲,挖的币可能是各种各样的算法。工作量机制本身对于算法没有实质依赖,所以也有一些币中途换了算法。有的算法会打一个口号是“反ASIC”,通常有这样几种方式:
一是从内存的角度来做限制,比如让算法依赖于内存的带宽、容量、延迟,归根结底是能否在一个芯片上做出比较大的内存。目前我们已知的算法,它们设计的平衡点在于能否用一个比较经济的成本,做到100-200MB的芯片上SRAM。二是我不采用单一算法,而是混合多种哈希算法,以随机的顺序要求你去计算。三是我不采用非哈希算法。这几种解决方案本质上是矿机厂商投入研发成本生产挖矿芯片和最终产出收益的攻防战,任何算法最终都是有可能被攻破的。
莱特币的scrypt算法是最早出现的反ASIC的算法,但由于它的参数设计比较保守,所以实际上很快就有了ASIC,而且莱特币ASIC矿机的效率和比特币类似,是完全碾压GPU的。而像以太坊ASIC矿机的优势,即同样功耗小所能产生的算力相对于GPU基本在五倍以内。门罗币也很典型,当芯片能做的内存变大了以后,原来的算法很快就被攻破了,但开发者也很好调整,只需要修改算法的某些参数让你对内存的依赖更大,这些芯片就又都跑不了。而像达世币的算法设计是采用多种算法,增加设计的复杂度。这里说的是芯片难度,而非技术上做不到,所以随着它价格的上涨,很快就出现ASIC矿机了。开发者的对应策略是我可能会突然增加一种哈希算法,也可能突然改变哈希算法的策略。而Aetemity采用的是一种CuckooCycle的算法,它的关键在于现在还没有一种专门的芯片是用来解决它所要处理的图的问题,但如果针对这个问题的ASIC被设计出来的话,应当还是会比GPU快很多,这也是一个潜在的问题。另外,ProgPow是目前社区正在研究的一个算法,它实际上是以太坊Ethash的变种,最终目标是希望做到ASIC和GPU效率一致。
我们通常会有这样一种争论,认为ASIC会导致中心化,但实际上,无论GPU还是CPU,硬件生产厂商都是有限的,芯片生产集中在更少的上游厂商,这些都远远小于矿机的生产厂商,而且它们还存在大量专利壁垒。其实当单一币种利润变得很高时,就会促使市场产生新的竞争者,所以大家可以看到BTC矿机的市场非常活跃。现在的行情很像2014年的时候,有非常多的矿机厂商和芯片方案,但整个市场不断在下行,直到2015年见底。目前所有PoW币种都存在着散户多占比少的特点,从我们矿池的数据也可以看出,散户数量非常多,但算力占比非常少。另外,从历史上看,矿池规模都会在达到30%以上时引起自发的调整,大家也会认为,当一个矿池算力占比30%以上,对整个体系就不安全了。
这张图是2018年BTC.com矿池的份额占比。在这里可以看到一个比较有意思的现象,就是矿池行业的调整,实际上稍稍滞后于整个市场。大家可以看到,在今年4、5月份币价相对比较高的时候,绝大部分出块来自我们已知的几个大矿池。随着币价的上涨,只要启动一小部分算力就足够支撑一个矿池团队了,所以可以看到未知的矿池数量在不断地增长。而相应的,随着今年币价的下行,会导致小矿场难以支撑。因为矿池的收入主要来自于交易的手续费。因为矿池的滞后性,所以接下来矿池会迎来新一轮的竞争。
权益证明(POS)
另一个讨论比较多的就是权益证明(POS),对比PoW,最大的区别是新区块产生依赖于和持有代币数量有关的虚拟算力,挖矿的计算消耗很小。但实际上POS在设计上是有很多难点的:
首先就是在POS机制下,我们如何确定一条主链,不同于POW,挖矿是有成本的,POS在主链之外挖矿的成本很小,所以可以任意选择对自己对有利的分叉,而且攻击者还可以从很久之前的区块开始分叉,去覆盖之后的链,因此需要引入检查点。通常来讲有两种解决方案,一是从POW过渡转型到POS,二是预售。
POS挖矿的公平性也是很难的,POW是多少算力对应多少收益,POS能不能做到我有多少币对应的就有多少收益呢,在实际设计中其实会有各种各样的问题。依赖于虚拟算力的设计,可能会出现诸如拆分持有代币,调整交易顺序之类提高算力的方式,最终变相成为PoW。
另外一个问题就是“矿工关机”怎么办?在POW网络里,你并不能知道有多少算力,只能依靠当前挖矿难度进行反推,而在POS网络里,你知道整个网络里有多少币,有的协议里会要求,当你想要确认一个新块的时候,必须有多少算力的同意。如果这一批人都关机了,那可能就凑不够确认的最小金额。
POS 机制的算法有很多。我个人觉得比较值得期待的还是以太坊的Casper方案,从2014年开始讨论至今,也是由于这个方案延迟了数次,为了对冲以太坊调低了挖矿收益,Casper从一开始就有两个版本,一个是V神版FFG(Friendly Finality Ghost),另一个是Vlad版CBC(Correct by Construction),两方形成竞争。从今年以太坊开发者大会来看,FFG这个方案是被废除了,但它跟目前和分片方案进行了融合,进入以太坊2.0的开发。
DPOS和超级节点
DPOS更加简单,它只需要设计出一套机制,能够保证选出一些超级节点,而超级节点的选择过程是POS,可投票的票数取决于持有的代币数量。被选上的超级节点参与共识协议,它们本身共识协议不再重要,所有问题都会变成超级节点之间的开会讨论。在这种情况下,“算力”不再是在矿池,而是集中在了交易所,钱包,托管平台,但DPOS机制确实激发了社区的动力,超级节点为了竞选,都在自发的推广拉新。从性能的角度来讲,DPOS的性能有可能是Dapp必要的选择。但如果你看中的是代币本身价值的可靠性,DPOS反而并非一个好的解决方案,因为它的可控制能力太强了。
综上所述,我们看到POW、POS、DPOS及混合架构,其背后都是一个区块链方案设计上的取舍。我们会考虑去中心化还是性能,保护一条链需要付出代价,去中心化和成本不能兼顾。而矿池在一定程度上保证了用户的参与度,避免小“算力”用户无法参与挖矿。
对于我们矿池来讲,接下来在运营方面主要会做这几方面的工作,一是增加PoW币种支持数量,优化小币种挖矿。二是和挖矿工具和挖矿管理工具合作,让用户挖矿的过程变得更加简单。三是我们即将上线Decred的PoS矿池,以太坊的基于智能合约的PoS挖矿研发中,我们也会及时跟进。