作者:Vitalik Buterin,ethresear;編譯:松雪,
以太坊和大多數(shù)其他(最終確定性)權(quán)益證明系統(tǒng)之間的主要區(qū)別在于,以太坊試圖支持非常多的驗證器對象:我們目前有 895,000 個驗證器對象,簡單的 Zipf 定律分析表明這對應(yīng)于數(shù)萬個驗證器對象是獨特的個人/實體。 這樣做的目的是支持去中心化,甚至允許普通個人參與質(zhì)押,而不要求每個人放棄自己的代理權(quán)并將控制權(quán)交給少數(shù)質(zhì)押池之一。
然而,這種方法要求以太坊鏈每個時隙處理大量簽名(今天約為 28,000 個;SSF 后為 1,790,000 個),這是一個非常高的負載。 支持此負載需要做出大量技術(shù)犧牲:
這需要一個復(fù)雜的證明傳播機制,涉及將證明分割到多個子網(wǎng)之間,需要對BLS簽名操作進行超優(yōu)化以驗證這些簽名等等。
我們沒有一個明確的可替代、足夠高效的抗量子的方案。
類似視圖合并的分叉選擇修復(fù)變得更加復(fù)雜,因為無法提取單個簽名。
對簽名進行SNARK處理是困難的,因為它們的數(shù)量很大。Helios需要在一個專用的額外簽名上操作,稱為同步委員會簽名。
它通過要求一個時間槽中有三個子時間槽而不是兩個,增加了安全最小時間槽。
簽名聚合系統(tǒng)乍看起來是合理的,但實際上它創(chuàng)建了系統(tǒng)性復(fù)雜性,這種復(fù)雜性滲透到各個方面。
更何況,它甚至沒有達到自己的目的。 質(zhì)押的最低要求仍然是 32 ETH,這對很多人來說是遙不可及的。 而僅僅從邏輯上分析,從長遠來看,讓每個人都簽到的系統(tǒng)真正為普通人提供質(zhì)押似乎是不可行的:如果以太坊有 5 億用戶,其中 10% 的用戶進行質(zhì)押,那么 這意味著每個插槽有 1 億個簽名。 從信息理論上講,此設(shè)計中的處理削減需要每個插槽至少 12.5 MB 的數(shù)據(jù)可用空間,大致與完整 daksharding 的目標一樣多(!!!)。 也許是可行的,但要求質(zhì)押本身依賴于數(shù)據(jù)可用性采樣會帶來很大的復(fù)雜性增益——即使這只是世界人口質(zhì)押的約 0.6%,而且還沒有開始涉及驗證這么多簽名的計算問題。
因此,與其依賴于密碼學家創(chuàng)造魔法子彈(或魔法防彈衣),以使每個時間槽中的簽名數(shù)量不斷增加成為可能,我建議我們進行一次哲學轉(zhuǎn)變:從一開始就放棄對此類期望。這將極大地擴展PoS設(shè)計空間,并允許進行大量技術(shù)簡化,通過允許Helios直接在以太坊共識上進行SNARK處理,使其更加安全,并通過使即使是像Winternitz這樣無聊而存在已久的簽名方案也能夠可行來解決量子抗性問題。
為什么不“只用委員會”呢?
許多面臨這一確切問題的非以太坊區(qū)塊鏈使用了一種基于委員會的安全方法。在每個時間槽中,它們隨機選擇N個驗證者(例如,N約等于1000),這些驗證者負責完成該時間槽。值得提醒的是,為什么這種方法不足夠:它缺乏問責制。
為了理解其中的原因,假設(shè)發(fā)生了一次51%攻擊。這可能是一次最終性逆轉(zhuǎn)攻擊或?qū)彶楣?。要發(fā)動攻擊,仍然需要控制大部分質(zhì)押的經(jīng)濟參與者同意進行攻擊,即運行參與攻擊的軟件,與所有最終被選為委員會的驗證者一起參與攻擊。隨機抽樣的數(shù)學保證了這一點。然而,他們?yōu)檫@樣的攻擊承擔的懲罰很小,因為大多數(shù)同意攻擊的驗證者最終沒有被看到,因為他們沒有被選為委員會成員。
目前,以太坊采取了相反的極端。如果發(fā)生51%攻擊,整個攻擊驗證器集合的大部分都會被削減質(zhì)押。目前攻擊的成本約為900萬ETH(約合200億美元),并且這假設(shè)網(wǎng)絡(luò)同步以最大程度地有利于攻擊者的方式中斷。
我認為這是一個高昂的成本,而且是一個過高的成本,我們可以在這個問題上做出一些犧牲。即使攻擊成本為1-2百萬ETH也完全足夠。此外,以太坊目前存在的主要中心化風險在一個完全不同的地方:如果最低質(zhì)押金額降低到接近零,大規(guī)模的質(zhì)押池的實力差異將不會太大。
這就是為什么我主張一個溫和的解決方案:在驗證者的問責制上做出一些犧牲,但仍然保持可削減的ETH總量相當高,作為交換,它給我們帶來了較小驗證者集合的大部分好處。
在SSF下,每個時間槽的8192個簽名會是什么樣子呢?
假設(shè)采用傳統(tǒng)的兩輪共識協(xié)議(類似Tendermint使用的協(xié)議,以及SSF不可避免地會使用的協(xié)議),每個參與的驗證者每個時間槽需要兩個簽名。我們需要繞過這個現(xiàn)實。我看到三種主要方法,我們可以這樣做。
方法一:全力投入去中心化質(zhì)押池
Python 有一句非常關(guān)鍵的話:
應(yīng)該有一種——最好只有一種——明顯的方法來做到這一點。
對于質(zhì)押平等化的問題,以太坊目前違反了這一規(guī)則,因為我們同時執(zhí)行兩種不同的策略來實現(xiàn)這一目標:(i)小規(guī)模單獨質(zhì)押,以及(ii)使用分布式驗證器技術(shù)(DVT)的去中心化質(zhì)押池 。 由于上述原因,(i) 只能支持部分個人質(zhì)押者; 總會有很多人的最低存款額太大。 然而,以太坊正在為支持(i)付出非常高的技術(shù)負擔成本。
一種可能的解決方案是放棄(i)并全力投入(ii)。我們可以將最小質(zhì)押金額提高到4096 ETH,并設(shè)定4096個驗證者的總上限(約1670萬ETH)。預(yù)計小規(guī)模質(zhì)押者將加入DVT池:要么通過提供資金,要么成為節(jié)點運營商。為了防止攻擊者濫用,節(jié)點運營商角色需要以某種方式受到聲望的限制,并且池之間將通過在這方面提供不同的選擇來競爭。提供資金將是無許可的。
我們可以通過限制處罰來使該模型中的集合質(zhì)押更加“寬容”,例如。 至所提供質(zhì)押總數(shù)的 1/8。 這將減少對節(jié)點運營商的信任,盡管由于此處概述的問題,值得謹慎處理。
方法 二:兩級質(zhì)押
我們創(chuàng)建兩層質(zhì)押者:一個“重型”層,要求4096 ETH,參與最終化,以及一個“輕型”層,沒有最低質(zhì)押要求(同時也沒有存款和提款延遲,以及沒有削減的風險),它增加了另一層的安全性。要使一個區(qū)塊最終化,既需要重型層最終化它,又需要輕型層在線輕型驗證者的>= 50%對其進行證明。
這種異質(zhì)性對于抗審查和抵抗攻擊是有益的,因為要使攻擊成功,需要同時腐化重型層和輕型層。如果一層被腐化而另一層沒有,鏈將停止;如果是重型層被腐化,可以對其進行懲罰。
這種方法的另一個好處是,輕型層可以包括同時用作應(yīng)用程序內(nèi)抵押品的ETH。主要的缺點是,通過確立小規(guī)模質(zhì)押者和大規(guī)模質(zhì)押者之間的分歧,使質(zhì)押變得不太平等。
方法 三:輪流參與(即委員會但負責)
我們采取的方法與這里提出的超級委員會設(shè)計類似:對于每個時隙,我們選擇 4096 個當前活躍的驗證者,并且我們在每個時隙期間仔細調(diào)整該集合,以確保我們?nèi)匀话踩?/strong>
然而,我們做出了一些不同的參數(shù)選擇,以便在此框架內(nèi)獲得“最大的收益”。 特別是,我們允許驗證者以任意高的余額參與,如果驗證者擁有超過一定數(shù)量 M 的 ETH(必須是浮動的),那么他們在每個時段都參與委員會。 如果驗證者有 N<M ETH,那么他們有N/M 在任何給定時間段內(nèi)進入委員會的概率。
我們這里有一個有趣的杠桿,是將出于激勵目的的“權(quán)重”與出于共識目的的“權(quán)重”解耦:委員會內(nèi)每個驗證者的獎勵應(yīng)該相同(至少對于≤M ETH 的驗證者),以保持平均獎勵成比例。我們?nèi)匀豢梢砸?ETH 為權(quán)重,對委員會中的驗證者進行共識計數(shù)。 這確保了打破最終性需要 ETH 數(shù)量等于委員會中 ETH 總量的大于三分之一。
Zipf 定律分析將按如下方式計算 ETH 數(shù)量:
在總余額的每個二次方級別,驗證者的數(shù)量與該余額級別成反比,并且這些驗證者的總余額將相同。
因此,委員會將有來自每個余額級別的等量 ETH 參與,除了高于障礙 M 的級別(驗證者始終在委員會中)。
因此,我們在上述級別的每個 K 驗證器中都有Log2(M)級別,和K+K/2+……=2K以上級別的驗證者。因此,K=4096/Log2(M)+2。
最大的驗證器將有M*k ETH。我們可以向后推算:如果最大的驗證器有2^18=262144 ETH,這意味著(大致)M = 1024 and k = 256。
質(zhì)押的 ETH 總額為:
前 512 名驗證者的全部權(quán)益(2^18*1+2^17*2+……+2^10*2^8=2359296)
加上隨機抽樣的較小賭注(2^8*(2^9+2^8+2^7……)約等于2^8*2^10=2^18)
我們總共獲得了2621440個ETH,或者攻擊成本約為900k ETH。
這種方法的主要缺點在于在協(xié)議內(nèi)部引入了一些更多的復(fù)雜性,以通過一種使我們在委員會更改時仍然能夠獲得共識安全性的方式隨機選擇驗證者。
其主要優(yōu)勢在于它保留了獨立質(zhì)押的可識別形式,保留了一個單一的系統(tǒng),并且甚至允許將最小質(zhì)押金額降低到非常低的水平(例如1 ETH)。
總結(jié)
如果我們確定在SSF協(xié)議之后,我們希望堅持使用8192個簽名,這將使技術(shù)實施者的工作變得更加容易,以及輕客戶端等輔助基礎(chǔ)設(shè)施的構(gòu)建者。對于任何人來說,運行一個共識客戶端都變得更加容易,用戶、質(zhì)押愛好者和其他人可以立即在這一假設(shè)的基礎(chǔ)上進行工作。以太坊協(xié)議的未來負載不再是未知的:它可以通過硬分叉在未來提高,但只有當開發(fā)人員確信技術(shù)已經(jīng)足夠改進,能夠以相同的輕松程度處理更多的簽名每個時間槽。
剩下的工作將是決定我們想要采取上述三種方法中的哪一種,或者也許是完全不同的方法。這將是一個關(guān)于我們對哪些權(quán)衡感到舒適的問題,特別是我們?nèi)绾谓鉀Q涉及的問題,比如流動質(zhì)押,這可能可以與現(xiàn)在變得更加容易的技術(shù)問題分開解決。