因此當我們說“X幣使用Y算法”的時候,其實具體指的是采用何種Hash算法,而且隱含的前提條件是這個幣使用POW證明方式。只有在POW下討論選取何種算法才有意義,算法的各種復雜設計才能體現其用處。為什么呢,中本聰在設計
比特幣的時候其實有很多地方用到Hash函數,比如計算區塊ID,計算交易ID,構造代幣地址等。我們說的算法具體是指用何種Hash函數計算區塊ID,所謂算法創新也就是在這個地方下功夫。此外其他任何用到Hash函數的地方,對計算難度沒有要求,而且應該選用可以快速運算的算法,尤其在計算交易ID時候,不然影響區塊鏈同步速度。因此如果選用POS方式,計算區塊ID也應該使用容易運算的算法。
Hash函數
如上所言,我們經常說的POW算法本質是一個Hash函數。Hash函數是一個無比神奇的東西,說他替中本聰打下了半壁江山一點不為過,學習比特幣應該從學習Hash函數入手,理解了Hash函數再去學比特幣原理將事半功倍,不然將處處感覺混沌,難以開竅。而中本聰也將Hash函數的所有特性使用得淋漓盡致:
已經有很多Hash函數被設計出來并廣泛應用,不過Hash函數一般安全壽命都不長,被認為安全的算法往往沒能使用多久就被成功攻擊,新的更安全的算法相繼被設計出來,而每一個被公認為安全可靠的算法都有及其嚴格的審計過程。在
幣圈中我們經常說某某幣發明了某種算法,其實主要都是使用那些被認證過的安全算法,或是單獨使用,或是排列組合使用。
SHA256
SHA (Secure Hash Algorithm,譯作安全散列算法) 是美國國家安全局 (NSA) 設計,美國國家標準與技術研究院 (NIST) 發布的一系列密碼散列函數,經歷了SHA-0,SHA-1,SHA-2,SHA-3系列發展。NSA于2007年正式宣布在全球范圍內征集新新一代(SHA-3)算法設計,2012年公布評選結果, Keccak算法最終獲勝成為唯一官方標準SHA-3算法,但還有四種算法同時進入了第三輪評選,分別是:BLAKE, Gr?STL, JH和SKEIN,這些算法其實也非常安全,而且經受審查,被各種競爭幣頻繁使用。
比特幣采用SHA256算法,該算法屬于SHA-2系列,在中本聰發明比特幣時(2008)被公認為最安全最先進的算法之一。除了生成地址中有一個環節使用了REPID-160算法,比特幣系統中但凡有需要做Hash運算的地方都是用SHA256。隨著比特幣被更多人了解,大家開始好奇中本聰為何選擇了SHA256,同時對SHA256的安全性發表各種意見,SHA256妥妥經受了質疑,到目前為止,沒有公開的證據表明SHA256有漏洞,SHA256依然牢牢抗住保衛比特
幣安全的大旗。當然大家心里都明白,沒有永遠安全的算法,SHA256被替代是早晚的事,中本聰自己也說明了算法升級的必要和過程。
SCRYPT
后來隨著顯卡挖礦以及礦池的出現,社區開始擔心礦池會導致算力集中,違背中本聰“一CPU一票”的最初設計理念。在那段時間,中心化的焦慮非常嚴重,討論很激烈,比特幣一次又一次“被死亡”,直到現在,針對礦池是否違背去中心化原則的爭論仍在繼續。
無論如何,有人將矛頭指向SHA256,認為是算法太容易導致礦機和礦池出現,并試圖尋找更難的算法。
恰逢其時,使用SCRYPT算法的
萊特幣(Litecoin)橫空出世。據說SCRYPT是由一位著名的黑客開發,由于沒有得到諸如SHA系列的嚴格的安全審查和全面論證,一直沒被廣泛推廣使用。與SHA256算法相比,SCRYPT占用的內存更多,計算時間更長,并行計算異常困難,對硬件要求很高。很顯然,SCRYPT算法具有更強的抵御礦機性,萊特幣還將區塊時間改為2.5分鐘,在那個山寨幣還鳳毛麟角年代,萊特幣依靠這兩點創新大獲成功,長期穩坐山寨幣第一寶座位置。
后來有人在SCRYPT的基礎上稍作修改形成Scrypt –N算法,改進思路都一樣,都是追求更大的內存消耗和計算時間,以有效阻止ASIC專用礦機。
很快,萊特幣的成功催生了各種各樣的算法創新,2012至2014年間,算法創新一直都是社區討論的熱門話題,每一個使用創新算法的幣種出現,都能刮起一陣波瀾。
串聯算法
重新排列組合是人類一貫以來最常用的創新發明方法。很快,有人不滿足于使用單一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系列算法實際是一種串聯思路,只要其中一種算法被破解,整個算法就被破解了,好比一根鏈條,環環相扣,只要其中一環斷裂,整個鏈條就一分為二。
并聯算法
有人串聯,就有人并聯,Heavycoin(HVC)率先做了嘗試。HVC如今在國內名不見經傳,當時還是名噪一時,首次實現鏈上游戲,作者是俄羅斯人,后來不幸英年早逝,在幣圈引起一陣惋惜。
隨著比特幣、萊特幣礦機相繼出現,大家已經認識到沒有不能開發礦機的算法,想通過改進算法來徹底阻止礦機和礦池的出現是不可能的。另外,從近幾年的發展來看,礦池也沒有之前想的那么可怕,甚至已經有人論證了礦池并沒有破壞去中心化。但除了安全性,POW往往伴隨分發代幣功能,從這個角度來說,CPU算法更具公平性,用戶門檻更低,這也是算法創新的驅動,從Ethash以及Equihash設計來看,目前的算法創新仍然是以追求內存高消耗為主。以此同時,社區在共識機制的探索之路上也取得很多成果。縱觀當前區塊鏈核心技術發展全局,算法創新熱潮已經有所消退,但也未停止,于比特幣,于區塊鏈,于算法探索而言,都還在路上。