Scrypt不止是加密算法,還是萊特幣的挖礦算法

在密碼學(xué)中,scrypt(“ess crypt”)是2009年發(fā)明的金鑰推衍函數(shù),2016年,scrypt算法發(fā)布在RFC 7914。scrypt的簡化版被用在數(shù)個密碼貨幣的工作量證明上。

Scrypt不止是加密算法,還是萊特幣的挖礦算法

Scrypt算法簡介
Scrypt是內(nèi)存依賴型的POW算法,萊特幣采用此算法。第一個使用Scrypt算法的數(shù)字貨幣是Tenebrix,而后該算法被萊特幣使用。萊特幣創(chuàng)始人在萊特幣創(chuàng)世帖中介紹了萊特幣采用的共識機(jī)制,挖礦算法,發(fā)行總量,挖礦難度等相關(guān)重要信息。說明了萊特幣所使用的挖礦算法為數(shù)字貨幣Tenebrix所使用的Scrypt算法,是一種符合PoW共識機(jī)制的算法。Scrypt算法過程中也需要計算哈希值,但是,Scrypt計算過程中需要使用較多的內(nèi)存資源。

其它使用Scrypt算法的數(shù)字貨幣還有數(shù)碼幣(DigitalCoin)、狗狗幣(DogeCoin)、幸運(yùn)幣(LuckyCoin)、世界幣(WorldCoin)等。

Scrypt的誕生
由于比特幣將hash算法作為pow工作量證明的重要手段,后續(xù)的各種采用pow的數(shù)字貨幣也延續(xù)了這個設(shè)計,以SHA256、MD5為代表算法在設(shè)計之初屬于算法都是算力敏感型,意味著計算資源是瓶頸,主頻越高的 CPU 進(jìn)行 Hash 的速度也越快。這個設(shè)計直接導(dǎo)致后來的礦機(jī)出現(xiàn),采用ASIC芯片的礦機(jī)更是將這種運(yùn)算能力成倍提升,更多礦場的出現(xiàn)使得當(dāng)時的比特幣面臨算力中心化的威脅

為了限制計算能力的依賴,人們開始尋求新的算法,我們說過現(xiàn)代計算機(jī)是“存儲轉(zhuǎn)發(fā)結(jié)構(gòu)”,既然要限制轉(zhuǎn)發(fā)CPU的能力,目光自然投向存儲依賴,也就是內(nèi)存依賴,萊特幣率先使用內(nèi)存依賴型的scrypt算法作為pow核心,因此奠定了第一山寨幣的地位。

Scrpyt算法是由著名的FreeBSD黑客 Colin Percival為他的備份服務(wù) Tarsnap開發(fā)的,當(dāng)初的設(shè)計是為了降低CPU負(fù)荷,盡量少的依賴cpu計算,利用CPU閑置時間進(jìn)行計算,因此Scrypt不僅計算所需時間長,而且占用的內(nèi)存也多,使得并行計算多個摘要異常困難,因此利用rainbow table進(jìn)行暴力攻擊更加困難。scrypt沒有在生產(chǎn)環(huán)境中大規(guī)模應(yīng)用,并且缺乏仔細(xì)的審察和廣泛的函數(shù)庫支持。所以Scrpyt一直沒有推廣開,但是由于其內(nèi)存依賴的設(shè)計特別符合當(dāng)時對抗專業(yè)礦機(jī)的設(shè)計,成為數(shù)字貨幣算法發(fā)展的一個主要應(yīng)用方向。