[block #11] 亦敵亦友的ASIC

什麼是ASIC

ASIC是application-specific integrated circuit(專用集成電路)的簡稱,讀作/?e?s?k/。比起CPU、GPU這些通用的集成電路,ASIC功耗更小、計算性能更高。主要缺點是初期研發投資很大,出貨量小的話不如FPGA實惠,而且應用場合單一,不適合業務需求變化大的場景。就好比電子書可以在通用的手機、平板電腦上閱讀,也可以用Kindle。後者的待機時間更持久,屏幕更適合讀書、零售價也更低,但若用它玩王者榮耀就是自虐行為了。

在[block #6] 比特幣挖礦與淘金一文中已經提到,從2013年起比特幣挖礦進入了ASIC時代。ASIC礦機的SHA-256哈希速度以TH/s計量,在同等功耗下輕鬆把CPU、GPU甩開幾個數量級。這場變遷意味著絕大部分比特幣用戶再也無法參與挖礦。

對於ASIC挖礦的主流意見

主流意見認為挖礦權集中於少數專業的ASIC礦工是危險的,比特幣的未來會被他們挾持。按中本聰白皮書里「一CPU一票」的提法,民主的比特幣應該由用戶們共同掌控。他們覺得比特幣工作證明(Proof of Work)的核心演算法SHA-256太容易被製成ASIC晶元,是個硬傷。理想的演算法應該具備ASIC抵抗性。

所謂ASIC抵抗性並不是說設計無法用ASIC實現的挖礦演算法,而是盡量縮小專用晶元和通用晶元之間的獲益差距,從而消除開發專用硬體的利益驅動。換句話說,讓現成的CPU和GPU變成最優的礦機。

當然,在挖礦能力方面通用硬體之間也是不平等的。比如說,幾年前Intel和AMD分別在自家的CPU里實現了AES-NI指令集,加速AES加解密和密鑰生成的速度。Intel的Goldmont微處理器系列和AMD的Ryzen晶元中還集成了SHA擴展指令,加速SHA-1和SHA-256的運算。這也就是為什麼Raspberry Pi的CPU主頻、核數、能耗看似不賴,但缺乏上述的優化指令,挖礦方面非常吃虧。

抵抗ASIC的技術手段

設計能抵抗ASIC的挖礦演算法有幾種基本策略。最流行的是內存依賴法。它避開ASIC高計算速度的鋒芒,把戰場轉移到了內存。第一,演算法需要大量內存,提高內存在礦機成本中的比重;第二,通過頻繁讀寫內存,提高內存訪問在挖礦演算法中的時間佔比。內存的性能差異遠比計算單元的差異小,技術的升級速度也相對緩慢。所以一旦內存變成瓶頸,ASIC就算有勁也使不上,只能幹等I/O。

比特幣選用的SHA-256演算法只需要32位元組的狀態空間,可以輕鬆塞入寄存器里,在ASIC面前毫無抵抗力。而Ethereum基於Dagger-Hashimoto的Ethash、Zcash基於泛化生日問題的Equihash、?ternity基於二分圖環路檢測的Cuckoo Cycle等新演算法都很耗費內存,至今沒有出現ASIC礦機。當然這並不代表它們無懈可擊,能至死抵禦ASIC。想當初Litecoin的設計者以為用上Scrypt就高枕無憂了,結果參數設定得不夠保守,終究還是被ASIC攻破。

抵抗ASIC還有些別的旁門左道。經典案例是DASH採用的X11:2007至2012年間,美國國家標準化組織曾經辦過一場比賽,徵求一套新的哈希函數作為SHA-3標準。24個候選演算法貌似沒有大毛病,X11就從中挑選了11個,串聯使用。用硬體實現11種奇形怪狀的哈希演算法是件苦差事,但X11顯然是個懶人辦法,並不真正安全。DASH市值足夠高時,果然出現了ASIC礦機,每秒打臉150億次。

還有種策略是動態變化PoW演算法。比如今天玩keccak,下個月換groestl+skein+cubehash,再任性地選個xor指令替換成or。問題是,如果預先規定好演算法的變化,那麼廠商可以提早為未來的區塊生產ASIC;如果預先不定死在代碼里,那麼每次更換演算法都需要經歷一場硬分叉,估計ASIC還沒出就被自己作死了。

對於ASIC挖礦的非主流意見

從Litecoin、DASH等PoW演算法的相繼淪陷可以看到,長期抵禦ASIC也許只是不切實際的妄想。真的出了ASIC礦機其實也沒那麼可怕,Litecoin、DASH還活得好好的,目前市值分別位居加密幣的第五第六。老大比特幣就更別提了,四年多以來幾乎全靠ASIC挖礦,可財大氣粗的礦工集團至今仍無法挾算力以令諸侯。好不容易分叉出的Bitcoin Cash還不爭氣(參閱[block #7] 好好開車別急剎:談比特幣現金的緊急難度調整)。

從技術角度看,SHA-256的硬體優化雖然還有發展空間(比如日本的GMO集團計劃投產7納米工藝的礦機),但已經比較接近物理上限。這有利於比特幣網路的算力穩定。

從網路安全的角度看,ASIC抵抗性還可能是件壞事。一個攻擊者可以短期租用大量雲伺服器(AWS EC2、Google Cloud GPU等),迅速獲得算力,干擾區塊鏈運作,完事之後關伺服器撤離,不用花費多少成本。而用同樣策略攻擊比特幣等網路的話,則需要投入大量初始資金買ASIC和勞力,攻擊後還不能挪作它用,那還不如老老實實挖礦,共同維護比特幣的幣值更有利於自己。

總結

挖礦演算法的ASIC抵抗性是個複雜的問題。且不論如何抵抗,連該不該抵抗都不是顯而易見的。

推薦閱讀:

BCC,可能是分叉後最純正的比特幣
暴跌真的是幣安惹的禍?
遭遇「屠殺」,數字貨幣還遠未到稱王之時
LinkEye:它會是區塊鏈時代的信用基石嗎?

TAG:比特币Bitcoin | 以太坊 | ASIC |