Core真会改变比特币的算法吗?先来说道说道区块链的POW算法

2018-02-26 23:12    来源:比特币国际观察员

这两日,据Bitcoin.org负责人Core发表的一封公开信在币圈内被热议。他认为比特币的去中心特性正在被中心化的算力摧毁,越来越多的网络算力开始集中到一个人或个别公司手中,并提出要“改变比特币的PoW算法”。

币圈里面,币种成千上万,而这些币种背后,又是多种算法的支持。

对新手来说,token的含义可能只是以太坊的erc20标准的代币。

其实,erc20代币只是以太坊区块链所产生的股权代币,而在以太坊之前,在2012~2013年之间,还有许多形形色色的区块链,当然那时还不叫区块链,而是单纯的称之为“币”。有些币经过了历史的沉淀,一直到今天都颇具价值,而这些币种的算法,也是值得琢磨琢磨。

老币也要分成两派,一是POW派(proof of power),二是POS(proof of stake)。

先来介绍下POW部分算法。

一是HA256算法的币种

SHA256算法其实不用多说,因为比特币就是使用SHA256的算法该算法属于SHA-2系列,在中本聪发明比特币时(2008)被公认为最安全最先进的算法之一。除了生成地址中有一个环节使用了REPID-160算法,比特币系统中但凡有需要做Hash运算的地方都是用SHA256。随着比特币被更多人了解,大家开始好奇中本聪为何选择了SHA256,同时对SHA256的安全性发表各种意见,然而SHA256妥妥经受了质疑,到目前为止,没有公开的证据表明SHA256有漏洞,SHA256依然牢牢抗住保卫比特币安全的大旗。

除比特币以外的使用SHA256算法的币种,面临着一个问题,那就是51%攻击。所以当年很多搞这个算法的老币种,基本上都没落什么好下场……不过此一时彼一时,像BCH这种硬分叉币,因为有大矿工支持,敢于和BTC公开叫板,当BCH价格高的时候甚至还公然和BTC抢矿工。但是如果没有BCH那样大的势力,开发币种时SHA256算法并不是个好选择。

备注:BCH——挖矿巨头比特币大陆旗下的矿池viabtc准备了一套硬分叉的体系,基于比特币的原链推出“比特币现金”。 2017年8月1日20时20分,比特币现金开始挖矿,比特币现金修改了比特币的代码,支持大区块(将区块大小提升至8m),不包含segwit功能,是bitcoinabc方案产生的区块链资产。

二是scrypt算法的币种

这种算法下面的币种还真多,老大当然是莱特币,还有狗狗币,当年还爆发过著名的莱狗大战争夺算力(不过狗狗币好像最近要修改算法和以太坊联合?有待进一步考证)。与SHA256算法相比,SCRYPT占用的内存更多,计算时间更长,并行计算异常困难,对硬件要求很高。很显然,SCRYPT算法在初期具有更强的抵御矿机的特性,

很快,针对Scrypt的矿机也被研发出来,算力开始飙升,那些币种是越来越难挖了,而且还出现了机枪池(哪个币的收益高就挖哪个,像机枪扫射一样随时切换),导致Scrypt的币种成片成片死亡,最终活到今天的币种,都是久经考验。就连莱特币都曾经跌到过5块钱人民币,可想而知当年的竞争究竟有多残忍。三是改良S系X11串联算法、深度加密的并联算法

接下来有人专门针对Scrypt做了算法改进,为了增加抵抗矿机的难度,技术人员不满足于使用单一Hash函数,2013年7月,夸克币(Quark)发布,首创使用多轮Hash算法,看似高大上,其实很简单,就是对输入数据运算了9次hash函数,前一轮运算结果作为后一轮运算的输入。这9轮Hash共使用6种加密算法,分别为BLAKE, BMW, GROESTL, JH, KECCAK和SKEIN,这些都是公认的安全Hash算法,并且早已存在现成的实现代码。

这种多轮Hash一出现就给人造成直观上很安全很强大的感觉,追捧者无数。现今价格依然坚挺的达世币(DASH,前身是暗黑币,Darkcoin,)接过下一棒,率先使用11种加密算法(BLAKE, BMW, GROESTL, JH, KECCAK, SKEIN, LUFFA, CUBEHASH, SHAVITE, SIMD, ECHO),美其名曰X11,紧接着X13,X15这一系列就有人开发出来了。

S系列算法实际是一种串联思路,只要其中一种算法被破解,整个算法就被破解了,好比一根链条,环环相扣,只要其中一环断裂,整个链条就一分为二。虽然号称可以抵抗矿机,但是仍然架不住硬件工程师坚持不懈的攻关,针对X11算法的矿机也被搞出来。

有了串联算法,自然就有并联算法。并联算法是怎么一回事呢?并联算法完全不同于S系列算法,算是一种彻底的创新,在开始运算时,先对输入数据首先运行一次HEFTY1(一种Hash算法)运算,得到结果d1,以d1为输入,依次进行SHA256、KECCAK512、GROESTL512、BLAKE512运算,分别获得输出d2,d3,d4和d5,再分别提取d2-d5前64位,混淆后形成最终的256位Hash结果,作为区块ID。

这样综合而成的算法,实际上是从以上每种算法提取64位,经过融合,实际上是将四种算法并联在一起,其中一种算法被破解只会危及其中64位,四中算法同时被破解才会危及货币系统的安全性。四是企图让区块链的POW为现实世界制造贡献的算法——Prime素数算法。

为什么会诞生这个算法,这个还要跟当时的舆论环境结合在一起。正当一部分人在算法探索之路上进行的如火如荼之时,另一部分人的声音也非常刺耳,那就是指责POW浪费能源(彼时POS机制已经实现)。POW党虽极力维护,但也承认耗费能源这一事实。这一指责打开了另一条探索之路,即如果能找到一种算法,既能维护区块链安全,这些Hash运算又能在其他方面产生价值,那简直更完美。

在这条探索之路上最让人振奋人心的成果来自于Sunny King(这大神之前已经开发了Peercoin,即点点币)发明的素数币(Primecoin)。素数币算法的核心理念是:在做Hash运算的同时寻找大素数。素数在数轴上不但稀有(相对于偶数而言),而且分布不规律,在数轴上寻找素数只能盲目搜索探测,这正是POW的特征。

素数到底有什么用?肯定是有用的,只可惜素数虽然如今已被广泛应用于各个领域,但人类对他的认识还是有限。而且还出现了个问题,由于素数在数轴上分布不均匀,且根据目前掌握的知识来看,数越大,素数越稀有,寻找难度并不是线性递增,耗时也就不可预估,但是区块链要求稳定出块。于是这种搞法实在是不招矿工的喜欢。除了素数算法,还有解析蛋白基因的算法甚至计算π值的算法之类,最后也都悄无声息了,但探索还在继续。五是目前人人都用到的以太坊的算法了,以太坊采用Ethash的算法。

以太坊开发团队一点也不含糊,简单问题复杂化,繁琐细节秀智商。 Ethash 是最新版本的 Dagger-Hashimoto改良算法,是Hashimoto算法结合Dagger算法产成的一个新变种。开发团队最后倒腾出来的Ethash挖矿时基本与CPU性能无关,却和内存大小和内存带宽成正相关。不过在实现上还是借鉴了SHA3的设计思路,但是使用的”SHA3_256” ,”SHA3_512”与标准实现很不同。

以太坊的算法也是号称抵抗矿机,而且确实抵抗了很久,只可惜架不住人们的各种手段去,就算是显卡都能集成在一起搞成矿机,搞得整个市场都断货。但是也着实让显卡厂商大赚了一笔,即使再“抵抗矿机”,也没法抵抗人们的欲望,只要利润够高,活神仙都能买通。六零知识认证的EQUIHASH算法。

这个算法如今被部分币种采用。但是早期刚出来的时候还曾引起过轰动,就是Zcash,这个币种可了不得,曾经创造出过单币“天价”,一枚Zcash在没上线的时候期货价格最高甚至达到200万美元,令人叹为观止。Equihash算法由Alex Biryukov 和 Dmitry Khovratovich联合发明,其理论依据是一个著名的计算法科学及密码学问题——广义生日悖论问题。Equihash是一个内存(ARM)依赖型算法,机器算力大小主要取决于拥有多少内存,根据两位发明者的论文描述,该算法执行至少需要700M内存,1.8GHz CPU计算30秒,经Zcash项目优化后,目前每个挖矿线程需要1G内存,因此Zcash官方认为该算法在短时间内很难出现矿机(ASIC)。此外,Zcash官方还相信该算法比较公平,他们认为很难有人或者机构能够对算法偷偷进行优化,因为广义生日悖论是一个已经被广泛研究的问题。此外,Equihash算法非常容易验证,这对于未来在受限设备上实现Zcash轻客户端非常重要。

不过虽然容易认证,但是究竟能不能彻底保证安全是个未知数,就连Zcash自己的项目团队都表示,如果EQUIHASH算法出现问题,将来Zcash会进行算法更换。

那么什么是POS呢?

POS是和POW完全不同的流派,在POW阵营里,你掌握的算力多,你获得的币数就多,就牛;然而在POS阵营里,你获得币的量是由你之前获得币的量来确定的。

所以POS也称股权证明,类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。

简单来说,就是一个根据你持有货币的量和时间,给你发利息的一个制度,在股权证明POS模式下,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息。

刚开始的时候,POS还仅仅是作为一种POW的辅助,但是后来有越来越多的人觉得POW太浪费了,需要大量的硬件,于是一些纯POS币种被制造了出来,比如nxtcoin等等。

可是难道POS币种的币就不能被51%攻击了吗?答案是否定的,如果有人拥有POS币种的数量足够多,甚至都不用攻击币种自身,外部的人都会因为币种数量过于集中而对这个体系产生怀疑。所以POW总是以此发难,抨击POS币种是纯传销。

在POS的基础上,继而演化出了大名鼎鼎的DPOS,为什么说DPOS大名鼎鼎呢?因为直到今天,一些明星币种仍然使用DPOS算法。EOS也是。

DPoS机制(Delegated Proof of Stake)中文名叫做股份授权证明机制(又称受托人机制),比特股就是DPOS的一个良好的典型,它的原理是让每一个持有比特股的人进行投票,由此产生101位代表 , 我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS的出现最主要还是因为矿机的产生,大量算力在不了解也不关心比特币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。其他的DPOS修改了见证人的数量,但是核心的东西仍然是投票选举的一套东西。

可是问题随之而来,DPOS虽然解决了一些问题,但是马上也被人诟病,因为DPOS需要产生中心见证节点,而这些节点是存在被腐蚀的可能性的,而且即使被选下去,下一批上来的人仍然可能被腐蚀,所以POW中有不少人认为这是一个“换汤不换药”的中心化体系,和去中心化的理念完全背道而驰。但是诟病归诟病,DPOS机制仍然在社区内获得了相当高的认可度。

其实除了POW算法和POS算法,还有一些其他既不是POW也不是POS的算法,如ripple采用的opencoin算法等等。当然占比较小,这里也就不一一赘述。