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

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

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

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

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

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

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

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