Scrypt算法簡介
Scrypt是內存依賴型的POW算法,萊特幣采用此算法。第一個使用Scrypt算法的數(shù)字貨幣是Tenebrix,而后該算法被萊特幣使用。萊特幣創(chuàng)始人在萊特幣創(chuàng)世帖中介紹了萊特幣采用的共識機制,挖礦算法,發(fā)行總量,挖礦難度等相關重要信息。李啟威說明了萊特幣所使用的挖礦算法為數(shù)字貨幣Tenebrix所使用的Scrypt算法,是一種符合PoW共識機制的算法。Scrypt算法過程中也需要計算哈希值,但是,Scrypt計算過程中需要使用較多的內存資源。
其它使用Scrypt算法的數(shù)字貨幣還有數(shù)碼幣(DigitalCoin)、狗狗幣(DogeCoin)、幸運幣(LuckyCoin)、世界幣(WorldCoin)等。
Scrypt的誕生
由于比特幣將hash算法作為pow工作量證明的重要手段,后續(xù)的各種采用pow的數(shù)字貨幣也延續(xù)了這個設計,以SHA256、MD5(MD5后來被證明不具備強碰撞性數(shù)字貨幣一般不用)為代表算法在設計之初屬于算法都是算力敏感型,意味著計算資源是瓶頸,主頻越高的 CPU 進行 Hash 的速度也越快。這個設計直接導致后來的礦機出現(xiàn),采用ASIC芯片的礦機更是將這種運算能力成倍提升,更多礦場的出現(xiàn)使得當時的比特幣面臨算力中心化的威脅(關于礦場這個爭論現(xiàn)在依舊)
為了限制計算能力的依賴,人們開始尋求新的算法,我們說過現(xiàn)代計算機是“存儲轉發(fā)結構”,既然要限制轉發(fā)CPU的能力,目光自然投向存儲依賴,也就是內存依賴,萊特幣率先使用內存依賴型的scrypt算法作為pow核心,因此奠定了第一山寨幣的地位。
scrpyt算法是由著名的FreeBSD黑客 Colin Percival為他的備份服務 Tarsnap開發(fā)的,當初的設計是為了降低CPU負荷,盡量少的依賴cpu計算,利用CPU閑置時間進行計算,因此scrypt不僅計算所需時間長,而且占用的內存也多,使得并行計算多個摘要異常困難,因此利用rainbow table進行暴力攻擊更加困難。scrypt沒有在生產環(huán)境中大規(guī)模應用,并且缺乏仔細的審察和廣泛的函數(shù)庫支持。所以scrpyt一直沒有推廣開,但是由于其內存依賴的設計特別符合當時對抗專業(yè)礦機的設計,成為數(shù)字貨幣算法發(fā)展的一個主要應用方向。
后來有人在SCRYPT的基礎上稍作修改形成Scrypt –N算法,改進思路都一樣,都是追求更大的內存消耗和計算時間,以有效阻止ASIC專用礦機。
Scrpyt后續(xù)影響
雖然后來誕生的FPGA礦機可以有效運行scrpyt算法進行大規(guī)模挖礦,(FPGA和ASIC類似,F(xiàn)GPA板每塊有高達24.8GB/s或以上的內存帶寬,屬于專用可編程芯片,其實顯卡挖礦也是利用了顯卡GPU計算能力和內存帶寬能力),但是scrpyt算法的使用開啟了人們對于hash計算去中心化安全的探索。
后來誕生過串行算法,并行算法等等,其中X11就是使用了11種加密算法(BLAKE, BMW, GROESTL, JH, KECCAK, SKEIN, LUFFA, CUBEHASH, SHAVITE, SIMD, ECHO)
不要被這些算法嚇到,其實就是對一段數(shù)據進行了11次不同算法的運算,通過運算復雜度增強安全性和加大計算資源消耗,一方面更安全,另一方面抵抗專業(yè)硬件編程礦機。后來認為這種串行方式一個算法被攻破實際上會導致整個體系安全性受到攻擊,又發(fā)展出并行算法。
所謂并行就是將數(shù)據進行分塊,比如切分成11份,每一份使用不同算法計算,再拼接不同的結算結果而已。
由于pow算法依賴計算資源,不論是CPU或者是內存依賴,到后期總會有更專門的硬件出現(xiàn),這是計算機體系結構決定的,后期誕生的幣種或相關項目將目光投向pos證明機制,不再依賴算力,這也是發(fā)展的必然結果,雖然目前pos機制還在發(fā)展中,但是未來這是抵御中心化算力更好的方式。
scrpyt的價值在于提醒了人們對于算力中心化的認識,促進了區(qū)塊鏈系統(tǒng)向更好的方向發(fā)展,我認為這是一個里程碑式的算法,估計該算法的發(fā)明人也沒有想到scrpyt在區(qū)塊鏈世界是那么的重要。