極客∣遏制算力中心化的功臣:Scrypt加密演算法
一、起源
眾所周知,比特幣挖礦運用的是SHA-256雜湊演算法,這種演算法十分簡單快捷,但效能與CPU的處理速度,也就是算力,有著極大的關聯。為了能夠挖到更多的比特幣,GPU礦機、FPGA礦機以及ASIC礦機這樣的專業礦機相繼被製造出來。擁有條件入手這些礦機的人,憑藉著高算力挖到更多的比特幣,變得更加富有。
隨著礦機制造業的崛起,比特幣逐漸被幾大礦池壟斷,所謂的去中心化也開始變得越來越遠,萊特幣的創始人認為比特幣的演算法對其他挖礦的人來說並不公平,且影響區塊鏈的去中心化,所以在萊特幣中使用了Scrypt演算法,以阻止這類專業礦機挖礦而造成算力競爭。
Scrypt演算法由知名的FreeBSD黑客,同時也是一名密碼學家的Colin Percival在2009年提出,他開發這一演算法的初衷是為其備份服務Tarsnap降低CPU負荷,減少對於CPU計算的依賴,同時防止網路攻擊。雖然Scrypt演算法的效能與算力相關不大,但卻很依賴記憶體。
由於Scrypt演算法對記憶體非常依賴的設計非常適合用於對抗專業礦機,所以後來有很多區塊鏈挖礦專案都使用這一演算法,如狗狗幣,來使得數字貨幣的分發更加分散。
二、原理
那麼Scrypt演算法具體是如何對抗ASIC礦機的呢?
一開始,Scrypt演算法被開發出來時,是為了減少對CPU的依賴,所以這一演算法其實是利用了CPU的閒置時間進行計算。Scrypt演算法不僅計算所需的時間長,而且需要的記憶體也很大。因為Scrypt演算法計算時會產生一個具有若干個塊元素(block element)的陣列,對其中的每個塊元素,都必須先進行一系列運算生成雜湊值,再對整個陣列進行運算得到最終的結果。
其中,每個塊元素都必須被儲存在記憶體中,才能保證最後得到正確的結果,故而Scrypt演算法需要極大的記憶體空間,本身運算的成本很大。大量記憶體的硬體成本會很高,礦池就無法進行低成本挖礦了。
這樣導致的一個結果就是,算力難以集中,很難形成大型礦池,從而減少51%攻擊的可能。
同時,Scrypt演算法這一特性會使得平行計算多個摘要異常困難,因此利用rainbow table(彩虹表攻擊,為破解密碼的雜湊值而預先計算好的表)進行暴力攻擊的難度增加。因為Scrypt演算法屬於一種金鑰匯出(KDF)演算法,這種演算法非常適用於生成金鑰,可以避免黑客低成本地生成大量金鑰去試探密碼,因此可以為備份服務提供高度安全的網路環境。
正是看到了它的這些原理,萊特幣才採用了此演算法。
三、優缺點
以萊特幣為例,使用以Scrypt演算法為核心的PoW共識機制,有效抵制了專業礦機的使用,避免了算力中心化的趨向;同時令更多人能夠通過家用電腦來參與挖礦,萊特幣的分發將變得更加分散。總的而言,這一演算法能夠更好地保證區塊鏈的去中心化特徵。
由於持幣更加分散,區塊鏈網路面臨51%攻擊的概率也大大降低了。而Scrypt本身具有的金鑰匯出效能,能夠有效阻止黑客對密碼進行破解和攻擊。
簡言之,Scrypt演算法使得加密幣網路更加安全和去中心化,所以一經萊特幣的使用,它就得到了廣大山寨幣的青睞,有很多人甚至認為這是最適合數字貨幣的演算法。
但是,隨著Scrypt演算法的廣泛使用,專用於這一演算法的礦機也被生產出來,後來誕生的FPGA礦機也可以在運用這演算法時進行大規模挖礦。
不過,Scrypt演算法在區塊鏈上的使用開啟了人們對於算力去中心化的思考,現今它的最大影響,與其說這一演算法的具體運用遏制了中心化,不如說是其帶來的思考促進了人們對算力去中心化的支援與探索。
欄目策劃丨無忌
文章作者丨狂歌酒
責任編輯丨鬼薄主
排版編輯丨辣姬
美術指導丨冰菓
BB財經原創,作者:極客,轉載請註明出處:http://www.bbcaijing.cn/article/news/23103.html