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