原標題:“SSF 後每個插槽堅持 8192 個簽名:如何以及為什麼”
Vitalik Buterin的原創文章,ETH研究
原創合輯:Luccy, BlockBeats
*編者注:SSF(單插槽終結性)代表單插槽終結性,它提供了一種顯著減少乙太坊延遲的方法。 在區塊鏈共識機制中,最終性意味著交易或區塊變得不可撤銷,確保它不能被篡改或逆轉。 實現最終性對於去中心化系統的信任和安全至關重要,因為它消除了雙重支出和其他惡意活動的風險。 *
*SSF建議在區塊鏈共識機制中,單個時間段或時間單位可以被認為是“最終的”。 與最初的乙太坊共識不同,它允許所有驗證者參與確認或簽署插槽,減少交易確認時間並改善整體用戶體驗。 *
Vitalik“回歸”ETH研究探討了為什麼SSF後每個時隙需要讓參與的驗證者有兩個簽名,即達到8192個簽名,並就如何實現這一目標提出了3個假設,即全質押、雙層質押和輪換參與,分析了如何在維護協定安全的同時更有效地處理每個時隙的簽名數量,並討論了它們的優缺點以及對協定和用戶的影響。 BlockBeats將原文編譯如下:
乙太坊與大多數其他(具有最終性)PoS系統之間的一個主要區別是,乙太坊努力支援大量的驗證者:目前我們有895,000個驗證者,對Zipf定律的分析表明,這相當於數以萬計的獨立個人或實體。 這樣做的目的是支援去中心化,使普通人能夠參與質押,而無需每個人都放棄行動能力並將控制權移交給為數不多的質押池之一。
然而,這種方法要求乙太坊鏈在每個插槽處理大量簽名(今天大約 28, 000 個;SSF 後有 1, 790, 000 個),這是一個非常高的負載。 為了支援這一負載,必須做出一些技術上的犧牲:
簽名聚合系統乍一看似乎很合理,但實際上它創造了遍佈整個系統的系統複雜性。
而且,它甚至沒有實現其目標。 質押的最低要求仍然是 32 ETH,這對很多人來說是遙不可及的。 僅從邏輯分析的角度來看,一個允許每個人長期簽署每個插槽的系統的目標似乎並不可行,無法真正為普通人提供質押:如果乙太坊有 5 億使用者,其中 10% 參與質押,這意味著每個插槽有 1 億個簽名。 從資訊論的角度來看,此設計中的處理懲罰每個插槽至少需要 12.5 MB 的數據可用空間,大致相當於完全分片的目標。 這可能是可能的,但要求質押本身依賴於數據可用性採樣是一個很大的複雜性增加。 即便如此,全球只有大約0.6%的人口參與質押,而且它還沒有開始涉及驗證這麼多簽名的計算問題。
因此,與其依靠密碼學來創建魔術子彈(或魔術防彈)來實現每個插槽不斷增加的簽名數量,我建議進行哲學轉變:首先放棄這種期望。 這將大大擴展PoS的設計空間並允許大量的技術簡化,通過允許Helios直接在乙太坊共識上SNARKs使其更加安全,並通過使像溫特尼茨這樣無趣但長期存在的簽名方案變得可行來解決量子電阻問題。
許多面臨這一確切問題的非乙太坊區塊鏈採用基於委員會的安全方法。 在每個插槽期間,他們隨機選擇 N 個驗證者(例如,N ≈ 1000),負責最終確認插槽。 值得提醒的是,為什麼這種方法是不夠的,因為它沒有提供問責制。
為了理解原因,假設發生了51%的攻擊。 這可能是終端逆轉攻擊或審查攻擊。 為了進行攻擊,您仍然需要經濟參與者控制大部分股份以同意攻擊,即運行參與攻擊的軟體並與最終當選為委員會的所有驗證者一起參與攻擊。 數學隨機抽樣確保了這一點。 然而,他們因此受到的懲罰是最小的,因為大多數同意攻擊的驗證者最終都沒有被選入委員會,因此沒有被看到。
目前,乙太坊的做法恰恰相反。 如果發生51%的攻擊,整個攻擊驗證器集合中的大多數都將被削減存款。 目前攻擊的成本約為900萬ETH(約合200億美元),並且假設網路同步中斷是以對攻擊者最有利的方式進行的。
我認為這是一個很高的成本,但付出的代價太高了,我們可以在這個問題上做出一些犧牲。 即使是 1-2 百萬ETH的攻擊成本也完全足夠了。 此外,乙太坊目前存在的主要中心化風險反映在一個完全不同的地方:如果最低存款金額降至接近零,大規模質押池的力量不會減弱太多。
這就是為什麼我提倡一個中間的解決方案:在驗證者的責任上做出一些犧牲,但仍然保持較高的總可削減ETH金額,作為交換,我們可以享受一小部分驗證者的大部分好處。
假設傳統的兩輪共識協定(如Tendermint使用的協定,以及SSF不可避免地使用的協定),每個參與的驗證者每個插槽需要兩個簽名。 我們需要解決這個現實,我看到有三種主要方法可以解決這個問題。
Python Zen包含一個非常關鍵的短語:
應該有一個 - 最好只有一個 - 明顯的方法來做到這一點。 )
乙太坊目前在使質押平等方面違反了這一規則,因為我們同時實施兩種不同的策略來實現這一目標:(i) 小規模獨立質押,以及 (ii) 使用分散式驗證器技術 (DVT) 的去中心化質押池。 由於上述原因,(i)只有少數個人質押者可以支援,並且總會有很多人的最低存款金額過大。 然而,乙太坊為支援(i)付出了非常高的技術負擔成本。
一個可能的解決方案是放棄(i)並全力以赴(ii)。 我們可以將最低存款金額增加到 4096 ETH,並將驗證人的總上限設置為 4096(約 1670 萬ETH)。 預計小規模質押者將加入DVT池:通過提供資金或成為節點運營商。 為了防止攻擊者濫用,節點操作員角色需要以某種方式受到聲望閾值的限制,池將通過在這方面提供不同的選項來競爭。 資本的提供將是無需許可的。
我們可以通過設置罰款上限(例如,提供的總存款的 1/8)使該模型中的質押更加“寬容”。 這將減少對 Node 運營商的信任,儘管由於概述的問題,值得謹慎對待。
我們創建了兩層質押者:一個需要 4096 ETH參與最終狀態確認的“重”層,以及一個沒有最低要求的“輕”層(沒有存取款延遲,沒有削減漏洞),增加了第二層安全性。 為了確認區塊最終狀態,需要重層最終狀態確認和至少50%的在線光驗證器證明的輕層。
這種異質性有利於審查和抗攻擊,因為重層和輕層都需要被破壞才能使攻擊成功。 如果一層損壞而另一層沒有,則鏈條將停止,如果重層損壞,則可以受到懲罰。
這樣做的另一個好處是,淺層可以包含也用作應用內抵押品的ETH。 主要缺點是,通過在小規模質押者和大型質押者之間建立鴻溝,質押變得不那麼平等。
我們採用類似於這裡提出的超級委員會設計的方法:對於每個插槽,我們選擇 4096 個當前活躍的驗證器,並仔細調整每個插槽中的集合,以便我們仍然具有安全性。
但是,我們在此框架內進行了一些不同的參數選擇,以便在其中獲得“物有所值”。 特別是,我們允許驗證者以任意高的餘額參與,如果驗證者擁有超過一定數量的ETH(必須是浮動的),他們就會參與每個插槽中的委員會。 如果驗證者有 N<M ETH,那麼他們在任何給定的插槽中都有 N/M 參與委員會的概率。
在這裡,我們有一個有趣的槓桿來將激勵目的的“權重”與共識目的的“權重”解耦:委員會中每個驗證者的獎勵應該是相同的(至少對於使用≤M ETH的驗證者),以保持平均獎勵與餘額成正比,但我們仍然可以通過加權ETH來計算委員會中的共識驗證者權重。 這確保了打破最終結果所需的ETH量等於委員會總ETH的 1/3 以上。
對齊普夫定律的粗略分析計算出這個ETH量如下:
備註:為了更清楚地顯示計算數據,接下來的步驟將是螢幕截圖

這種方法的主要缺點是在協定中隨機選擇驗證者的複雜性略有增加,這樣我們就可以在委員會發生變化時獲得共識安全性。
主要優點是它以可識別的形式保留獨立質押,保持單一類系統,甚至允許將最低存款金額降至非常低的水準(例如 1 ETH)。
如果我們決定在 SSF 協定之後堅持使用 8192 簽名,這將使技術實施者和側基礎設施(如輕用戶端)的構建者的工作變得更加容易。 任何人都可以更輕鬆地運行共識用戶端,使用者、質押愛好者和其他人可以立即根據這一假設開展工作。 乙太坊協議的未來負載不再未知:未來可以通過硬分叉來提升,但前提是開發人員確信該技術已經足夠改進,可以在相同的輕鬆程度下處理每個插槽的更多簽名。
剩下的工作將是決定我們要採用三種方法中的哪一種,或者可能是完全不同的方法。 這將是一個我們感到滿意的權衡取捨的問題,特別是我們如何處理諸如液體質押之類的相關問題,這些問題可能與現在容易得多的技術問題分開解決。
連結到原始文章