6.抗ASIC的工作量證明
解決該問題的一種方法是基于一種很難專門化的計算類型來創(chuàng)建工作量證明算法。有關抗ASIC的硬件的更深入討論,請參見 https://blog.ethereum.org/2014/06/19/mining/。
狀態(tài):已在最大限度上解決。
在《難題》一文發(fā)表的 6 個月后,以太坊決定選用抗 ASIC 的算法 Ethash 作為其工作量證明算法。眾所周知,Ethash 是一種內存密集型算法。理論上來說,普通計算機對內存的隨機讀寫已經(jīng)是充分優(yōu)化的了,所以很難為專門的應用進一步提高效率。Ethash 正是企圖讓內存讀取變成 PoW 計算的主要部分,以此實現(xiàn) ASIC 抗性。Ethash 不是第一種內存密集型算法,但它加入了一項創(chuàng)新:運行算法需要在一個雙層(two-level)的 DAG(有向無環(huán)圖)執(zhí)行偽隨機查找,這就提供了兩種計算函數(shù)的方式:第一種,如果你擁有整個 DAG 文件(約 2GB),那么你可以快速計算出函數(shù)值,這是一種內存密集型的 “快速計算路徑”;第二種,如果你只擁有 DAG 的頂層,那么計算速度就會慢很多,但仍能快速驗證一個給定的值是不是一個合適的解,這可以用于區(qū)塊驗證。
Ethash 在抵抗 ASIC 方面被證明非常成功。以太坊上線三年并成功發(fā)放數(shù)十億美元的區(qū)塊獎勵之后,ASIC 確實出現(xiàn)了,但其算力和效率充其量最多比 GPU 高 2-5 倍。有人提出 ProgPoW 作為 Ethash 替代方案,但越來越多的共識認為,抗 ASIC 的算法注定不能長久,并且 ASIC 抗性有缺點,因為它使 51% 的攻擊便宜(例如,參見對以太坊經(jīng)典的 51% 攻擊) 。
我相信,具備中等程度的 ASIC 抗性的 PoW 算法是有可能存在的,但是這種抵抗力只在有限時間內有用,并且 ASIC 和非 ASIC 的工作證明都各有缺點。從長遠來看,區(qū)塊鏈共識的更好選擇是權益證明。
7.具有實際效用的工作量證明
所謂實用性工作量證明就是讓工作量證明的結果也對其它領域有用;常見的對標項目類似于Folding@home:Folding@home 的用法是用戶下載來軟件,在自己的計算機上模擬蛋白質折疊并提供數(shù)據(jù)給研究者,幫助他們治療病癥。
現(xiàn)狀:也許是不可能的,但可能有一個例外。
有用的工作量證明所面臨的挑戰(zhàn)是,工作量證明算法需要許多屬性:難以計算;易于驗證;不依賴大量外部數(shù)據(jù);對小量級的數(shù)據(jù)可以高速運算。
不幸的是,沒有多少實用的計算項目可以保留所有這些屬性。并且,大多數(shù)具有所有這些屬性,而且 “有用” 的計算 “有用” 的時間太短,無法基于它們構建密碼貨幣。但是,有一個可能的例外:零知識證明生成。區(qū)塊鏈有效性方面的零知識證明(例如,數(shù)據(jù)可用性根)難以計算且易于驗證。而且,它們的計算難度能長久保持,如果對 “高度結構化” 的計算的證明變得太容易了,可以調整到驗證區(qū)塊鏈的整個狀態(tài)轉換,由于需要對虛擬機和隨機內存訪問進行建模,它需要消耗大量的計算資源。
區(qū)塊鏈有效性的零知識證明為區(qū)塊鏈用戶提供了巨大的價值,因為它們可用于代替對區(qū)塊鏈歷史的直接驗證;Coda 已經(jīng)在做這件事,而且使用了一種專門為可證明性優(yōu)化過的簡化區(qū)塊鏈設計。這些證明可以極大地幫助改善區(qū)塊鏈的安全性和可擴展性。不過,實際需要完成的計算總量仍然遠遠小于工作量證明礦工當前完成的計算量,所以,最好把它作為權益證明區(qū)塊鏈的附加部分,而不是用作共識算法。
8.權益證明
解決挖礦中心化問題的另一種方法是完全取消挖礦,并轉向其他機制來決定共識過程中每個節(jié)點的權重。迄今為止,在討論中最受推崇的替代方案是 “權益證明”。亦即,不再是 “一個 CPU 一票” 而是 “一塊錢一票”。
現(xiàn)狀:理論上取得重大進展,尚待進行更多實際評估。
在2014年底,權益證明社區(qū)便清楚地知道,某種形式的 “弱主觀性” 是不可避免的。為了維護資金安全,節(jié)點在首次同步時需要在協(xié)議進程外獲取最近的檢查點,如果節(jié)點離線超過幾個月則需要再次獲取。這是很難解決的弱點。許多 PoW 擁護者仍然堅持使用 PoW,就是因為在 PoW 鏈中,鏈的起點是可以被發(fā)現(xiàn)的,而你唯一需要信任的數(shù)據(jù)來源就是區(qū)塊鏈客戶端軟件本身。但是,PoS 倡導者愿意承擔這個弱點,因為這里引入的信任要求并不高。從那開始,借由要求安全保證金長期存儲來實現(xiàn)權益證明機制的路徑就變得清晰了。
如今,最有趣的共識算法從根本上類似于 PBFT,但是用一個動態(tài)列表替換了固定的驗證者集,任何人都可以通過將代幣發(fā)送到具有鎖定時間的系統(tǒng)級智能合約中來加入動態(tài)列表(例如,在某些情況下,代幣可能最多需要 4 個月才能取出)。在許多案例中(包括以太坊2.0),這些算法通過對違反協(xié)議某些條款的驗證者進行處罰,而實現(xiàn)了 “經(jīng)濟確定性”(有關權益證明取得的成果,請參見此處的高度凝練的觀點)。 截止到今天,我們有(還有許多其他算法):
Casper FFG: https://arxiv.org/abs/1710.09437
Tendermint: https://tendermint.com/docs/spec/consensus/consensus.html
HotStuff: https://arxiv.org/abs/1803.05069
Casper CBC: https://vitalik.ca/general/2018/12/05/cbc_casper.html
人們還在對這些算法繼續(xù)進行優(yōu)化(例如,這里和這里)。Eth2 階段0將使用FFG算法,目前正在開發(fā)中,并已取得了巨大進展。另外,使用 Tendermint 的 Cosmos 鏈已經(jīng)運行好幾個月了。我認為,關于權益證明的其余論點與優(yōu)化經(jīng)濟激勵措施有關,以及進一步規(guī)范應對 51% 攻擊的策略。此外,Casper CBC 規(guī)范仍需要很多效率上的改進。
9.存儲證明
解決該問題的第三種方法是使用計算能力或貨幣以外的稀缺計算資源。在這個議題上,已提出的兩個主要替代方案是存儲容量和帶寬。原則上,提供擁有或使用過相應帶寬的密碼學證據(jù)是不可能的,因此,帶寬證明應被視為社會證明的一個子集(因此我們會在后面的問題中討論)。但是存儲容量證明是必然可以通過計算完成的,存儲容量證明的一大優(yōu)勢是完全抗 ASIC。硬盤驅動器中的存儲類型已經(jīng)接近最優(yōu)(效率不可能更高了)。
現(xiàn)狀:理論上有很多進步,但是還有很多工作要做,尚待實際場景中的評估。
有許多計劃使用存儲容量證明協(xié)議的區(qū)塊鏈,包括Chia和Filecoin。也就是說,這些算法尚未經(jīng)過實際測試。我自己的主要擔憂是集中化:這些算法最終是由使用備用存儲的、容量較小的用戶主導;還是由大型礦場主導?