ASIC終結者:X16R演算法的異軍突起
在加密數字貨幣挖礦行業中,ASIC礦機佔據著最主要的角色。每一個通證的設計者都必須考慮一個問題,防不防ASIC礦機,如何去防。通證和ASIC礦機也未必就是敵人,只要設計得足夠合理,循序漸進的發展,適當的時候有ASIC礦機介入也未必是一件壞事。
作者 | 洪福川
編輯 | 孟江東
/1/
演算法發展史
共識演算法可能是區塊鏈挖礦行業最為重要的核心,其中又以PoW為主。Proof of Work簡稱為PoW(工作量證明),用於證明你在某時間內完成的工作量。
這一概念最早被Cynthia Dwork和Moni Naor於1992年寫在如何處理打擊垃圾郵件的論文上。
2008年之後,Peer-to-Peer技術、PoW和加密演算法被應用於Bitcoin。
Bitcoin採用的SHA-256演算法屬於SHA-2(Secure Hash Algorithm 2,安全散列演算法2),由美國國家安全局研發。
SHA-2安全嗎?就目前來看是安全的,並且短期內哈希計算速度沒有發生大幅度提升的趨勢。
SHA-2的前身是SHA-1,目前想要破解一次SHA-1的成本大約在70萬美元(可能更低)。破解需要進行的計算總量約為900萬兆(9,223,372,036,854,775,808),5Ghz的CPU每秒計算速度約為20億次。相當於使用CPU得花費150年才能破解SHA-1,足以說明破解難度之高。
SHA-2雖難以破解,但是其本身計算方式單一,只要加快哈希值計算便可以提高BTC開採的速度。ASIC礦機就是為了高效計算哈希值而生。
ASIC礦機的出現使社區產生了分歧,分歧點在於是否符合PoW這一理念以及對於每一個用戶是否平等。
目前多個主流加密數字貨幣分別採用不同的演算法或者共識去反抗ASIC礦機的出現。主要分為兩種方式,一是共識機制的改革,二是通過更改演算法規則。
現行的共識機制下,公鏈上主要以PoW和PoS(Proof-of-Stake,股權證明)兩種存在。
二者皆有利弊,使用PoW便意味著消耗大量的能源去進行計算,並且理論上存在著算力攻擊的風險,相對來說安全性較高;PoS缺少工作過程證明,也存在利益分配和賄選問題。而Ethereum試圖採用PoW+PoS混合制的形式,就是為了改善現有共識來抵禦ASIC的影響。其目前的狀況是使用PoW共識,試圖轉至PoS,但沒有推出一個完美的過渡機制(依舊使用PoW)。
Ethereum使用了Ethash演算法,前身為Dagger演算法(Vitailk發明),其目的是為了抵制ASIC礦機。如何抵制ASIC礦機呢?通過將挖礦和內存帶寬相捆綁,即降低其他硬體的運算優勢,從而達到挖礦設備平等這一理念。
Ethereum算力變化圖
Ethash演算法沒有阻擋ASIC礦機的出現,只是拖延了出現的時間。
綁定內存帶寬意味著可以通過提高內存帶寬速度來提高算力,或者在相同內存帶寬速度下降低功耗,只不過目前內存帶寬價格過高以及ETH價格過低,從成本上考慮,ASIC礦機相較GPU來得不夠划算。
Litecoin使用的是密碼學家兼程序員Colin Percival於2009年發表的論文Stronger Key Derivation via Sequential Memory-hard Functions上所發明的scrypt演算法。原理和Ethash較為相似,都是提高挖礦時內存的使用成本,延緩ASIC礦機的出現。
2014年,Zeusminer研發出了專門針對scrypt演算法的ASIC礦機。這也說明通過綁定某一硬體(如內存)從而抬高挖取的使用成本是沒有辦法完全杜絕ASIC礦機。
除了以上的演算法外,還有Dash使用的X11演算法,Zcash使用的Equihash演算法,Bytecoin使用的CryptoNote演算法等等。
演算法的進化和變革的一個主要原因是抵制ASIC礦機的出現。
ASIC礦機對整個生態存在的缺點如下:
1、容易變成寡頭之間的算力遊戲,有發生算力攻擊的風險。
2、挖礦設備不平等,算力過於集中。(也有觀點認為設備不平等是客觀存在的,ASIC礦機的研發和使用都投入了人力物力,不應該過分抵制。)
3、消耗大量的資源,用途較為單一。
如果以Bitcoin為例,ASIC礦機並非全是缺點,反而支撐起了BTC的價格。
中本聰曾在回復用戶的郵件中寫道,「it would be left more and more to specialists with server farms of specialized hardware」。如ASIC一類的專門用於挖礦的硬體(specialized hardware)會在未來出現早已被中本聰考慮到了。
那麼,那些為了抵制ASIC礦機的而設計發明出來的演算法存在的意義呢?給予普通用戶將過剩資源利用起來的入場券。
/2/
目前為止, 適合個人參與挖掘的演算法
最近,Binance上一個新上的通證引起了大家的注意,尤其是採用的X16R演算法。
X16R演算法是繼X11、X13、X15、X17之後的一種變形演算法。
X11演算法指的是將11種固定的哈希演算法串聯使用,從而增大ASIC礦機的研發成本。X13演算法則是將13種固定的哈希演算法串聯。然而單純增加演算法的數量和種類也只是延長ASIC礦機出現的速度。
X16R演算法則是不斷打亂哈希演算法的串聯順序,使得計算難度得到幾何級的提升。
X16R演算法選擇了X15演算法中經過驗證的15種,外加SHA-512演算法(屬於SHA-2,和SHA-256結構相同)。但是16種演算法不是採用固定排列,而是基於前一個區塊的哈希值進行動態變化。
改變順序和固定順序之間的區別有多大?
使用ASIC礦機進行固定順序的哈希演算法可以使晶元利用率達到100%。ASIC礦機在亂序的哈希演算法上,平均晶元利用率只有64.38%。
如X11演算法,礦機研發企業只需要將11種哈希演算法逐一研發對應的ASIC礦機,並進行固定順序組合。如同車間一般,每一種哈希演算法都由相應的ASIC礦機進行計算,往複循環。每個晶元都不會閑置,利用率可以達到滿負荷。
X16R增加了兩個不確定性:
1、演算法順序的不確定性。
2、演算法出現頻率的不確定性。
每個區塊會進行16次運算,這16次運算會出現什麼哈希演算法是無法確定。
假設16次運算都是同一種演算法,那麼這樣的概率是16/(16的16次方)=8.673617379884e-19
假設16次運算出現了兩種不同的演算法,那麼這樣的概率為[16*15/2(從16種演算法選兩種)*2的16次方]/(16的16次方)=4.2632564145606e-13
......
假設16次運算出現了16種演算法,那麼出現這種情況的概率為16!/(16的16次方)=1.1342267125514e-6
通過加權平均計算,每個區塊會涉及到10.3種函數。假設實現每種哈希計算的晶元面積相同,那麼晶元利用率為10.3/16=64.38%。這也意味著即使使用ASIC礦機進行X16R計算將會造成至少35.62%的晶元浪費。
X16R還有一特點,由於每種哈希計算所需要的時間是不相同會導致出塊時間不相同。在長時間上來看,出塊時間會由於各個哈希函數的搭配而被平均。
X16R具有如此多之前所不具備的特徵,那麼到底能不能防止ASIC礦機的產生呢?就現在來說,可以。
什麼情況下會產生專門針對X16R的ASIC礦機?
1、通證的價格足夠高,有足夠的利潤吸引廠商去進行研發。
2、新技術的產生,算力功耗比得到大幅度的提升,拉開和GPU的算力優勢。
不過,X16R目前能防止ASIC礦機卻防不了FPGA礦機。當一個區塊產生時,其哈希值的最後8個位元組就確定了下一個區塊所使用的哈希函數演算法。FPGA礦機可以快速重新編程,為每一個哈希演算法排好順序,充分利用晶元資源,從而進行運算,但是其算力較為低下,和GPU相比優勢不明顯。
只要還有利可圖、有人在乎設備平等,演算法和ASIC礦機之間的較量就還會持續下去。
X16R絕對不會是最後一個阻擋ASIC礦機的演算法。
※上海市發布《2018上海區塊鏈技術與應用白皮書》;韓國金融監管局:有必要通過制定全球性規則來監控數字貨幣交易風險
※揣著加密貨幣,比特大陸能入駐港交所?
TAG:耳朵財經 |