原文作者:VitalikButerin
原文來源:Hackernoon
原文編譯:ChinaDeFi
分片是以太坊可擴展性的未來,它將是幫助生態系統支持每秒數千筆交易的關鍵,它還允許世界上的大部分地區可以以負擔得起的成本定期使用該平臺。然而,它也是以太坊生態系統和更廣泛的區塊鏈生態系統中被誤解較多的概念之一。它指的是一組具有非常特定屬性的思想,但現在它經常被與具有安全性較弱屬性的技術合并在一起。這篇文章的目的是解釋分片提供了哪些特定的屬性,它與其他不分片的技術有什么不同,以及一個分片系統必須做出哪些犧牲來實現這些屬性。
可擴展性三難困境
描述分片的最佳方式應該是從計劃并啟發解決方案的問題陳述開始:可擴展性三難困境。
可擴展性三難困境表示區塊鏈試圖擁有三個屬性,如果堅持使用“簡單”技術,那么我們只能獲得這三個中的兩個。這三個屬性分別是:
可擴展性:比起單個普通節點驗證的交易數量,鏈可以處理更多的交易。
去中心化:鏈可以在不依賴于一小群大型中心化參與者的情況下運行。這通常被解釋為當我們不能用一個普通筆記本電腦加入到一組節點時,就不應該對該節點有任何信任。
安全性:鏈可以抵抗大部分對參與節點的攻擊。(理想情況是50%;超過25%就還好,5%絕對不行)。
現在我們來看看這三類“簡單解決方案”,通常只能得到其中的兩個:
傳統區塊鏈:包括比特幣、pre-PoS/分片以太坊、萊特幣和其他類似的鏈。它們依賴于每個參與者運行一個完整的節點來驗證每個交易,因此它們具有去中心化和安全性,但沒有可擴展性。
高TPS鏈:包括DPoS家族,也包括許多其他類似的。它們依賴于少數節點來維持彼此之間的共識,用戶必須信任其中的大多數節點。這是具有可擴展性和安全性的,但它不是去中心化的。
多鏈生態系統:這是指“橫向擴展”的一般概念,通過在不同的鏈上運行不同的應用程序,并使用跨鏈通信協議在它們之間進行通信。這是去中心化和可擴展的,但它并不安全,因為攻擊者只需要在眾多鏈中的一個里獲得多數共識節點即可破壞該鏈并可能引起連鎖反應,對其他鏈中的應用程序也會造成巨大損害。
Vitalik Buterin:基于MPC的EOA錢包有根本缺陷,智能合約錢包是唯一選擇:6月29日消息,以太坊創始Vitalik Buterin發推回應如何看待基于MPC(EOA)的錢包與智能合約錢包的優缺點時表示,基于MPC的EOA錢包存在根本缺陷,因為它們無法撤銷密鑰(重新共享不算在內;舊持有者仍然可以恢復密鑰),智能合約錢包是唯一的選擇。[2023/6/29 22:07:37]
分片是一種可以同時滿足這三種需求的技術。一個分片區塊鏈是:
可擴展:它可以處理比單個節點多得多的交易。
去中心化:它完全可以在普通筆記本電腦上“生存”,不依賴任何“超級節點”。
安全:攻擊者無法以少量資源攻擊系統的一小部分;他們只能試圖控制和攻擊整個事物。
本文的其余部分將描述分片區塊鏈是如何做到這一點的。
通過隨機抽樣進行分片
最易理解的分片是通過隨機抽樣進行的分片。與我們在以太坊生態系統中構建的分片形式相比,通過隨機抽樣的分片有更薄弱的信任屬性,但它使用了更簡單的技術。
其核心思想如下。假設我們有一個包含大量驗證者的權益證明鏈,并且同時有大量需要驗證的區塊。沒有一臺計算機能夠強大到在下一組區塊進入之前驗證所有這些區塊。
因此,我們所做的就是將驗證工作隨機地進行拆分。我們隨機打亂驗證者列表,讓已打亂列表中的前100個驗證者來驗證第一個區塊,讓已打亂列表中的后100個驗證者來驗證第二個區塊,以此類推。這種被隨機選擇來驗證一個區塊(或執行一些其他任務)的一組驗證者被稱為委員會。
當驗證者驗證一個區塊時,他們會發布一個簽名來證明他們已經這樣做了的事實。其他所有人,不再驗證100個完整的區塊,現在只驗證10000個簽名,這樣工作量會小得多,尤其是使用BLSsignatureaggregation。每個區塊不是通過相同的P2P網絡廣播,而是在不同的子網上廣播,節點只需要加入它們負責(或出于其他原因感興趣)的區塊對應的子網。
試想一下,如果每個節點的計算能力都增加了2倍會發生什么?因為每個節點現在可以安全地多驗證2倍的簽名,所以我們可以減少最低質押存款規模,以支持2倍多的驗證者,屆時,我們就可以建立200個委員會,而不是100個。同時,每個slot可以驗證200個區塊,而不是100個。此外,每個單獨的區塊可以是原來的兩倍大。因此,我們將擁有2倍大小的2倍區塊,或多于4倍的鏈容量。
VitalikButerin等人發布Ethereum“賬戶抽象”提案ERC4337:9月29日,Ethereum創始人Vitalik Buterin聯合KristofGazso、yoav.eth、DrorTirosh、NamraPatel、TomaszK.Stanczak等人發布賬戶抽象提案ERC4337,可在不改變以太坊共識層協議的情況下實現驗證邏輯,該提案的開發者內測版本將于近期上線。
注:“賬戶抽象”是以太坊社區中討論的改進提案之一,以實現交易不需要從私鑰控制的EOA賬戶發起,而是可以直接從智能合約發起,具體的用例包括智能合約錢包、Tornado.Cash這類隱私保護工具等。[2021/9/29 17:15:22]
我們可以引入一些數學術語來討論發生了什么。使用大O表示法,我們用“O(C)”表示單個節點的計算能力。傳統的區塊鏈可以處理O(C)大小的區塊。如上所述的分片鏈可以并行處理O(C)個區塊(每個節點間接驗證每個區塊的代價是O(1),因為每個節點只需要驗證固定數量的簽名),每個區塊的容量為O(C),因此分片鏈的總容量為O(C2)。這就是為什么我們稱這種類型的分片為二次分片,而這種效應也是為什么我們認為從長遠來看,分片是擴展區塊鏈的最佳方式的關鍵原因。
隨機抽樣可以防止攻擊者將他們的火力集中在一個分片上。在100條鏈的多鏈生態系統中,攻擊者只需占總質押的大約0.5%就能造成破壞。在一個分片區塊鏈中,攻擊者必須擁有接近整個質押的30-40%才能完成同樣的操作(換句話說,鏈具有共享安全性)。當然,他們可以等待,直到他們幸運地在一個分片中隨機獲得51%,盡管他們擁有少于總質押的50%,但對于擁有遠低于51%的攻擊者來說,這將成倍增加。如果攻擊者的低于30%,那這件事幾乎是不可能的。
緊密耦合:即使一個分片出現一個壞區塊,整個鏈也會重組以避開它。有一種社會合約(在本文檔后面的章節中,我們將描述一些技術上實施這種合約的方法),就是一個分片中有一個壞區塊的鏈都是不可接受的,應該在發現它時立即丟棄它。從鏈內應用程序的角度來看,這確保了完美的安全性:合約A可以依賴于合約B,因為如果合約B由于鏈上的攻擊而行為不當,整個歷史都將被恢復,包括合約A中由于合約B的故障而行為不當的交易。
動態 | EOS 的Activity指數為43,721,037 排名第一:據IMEOS報道,截止12月16號11點,blocktivity.info上顯示,排名第一的 EOS 的Activity指數為43,721,037 ,排名第二、第三分別為 TLOS 和 IOST 。Acitivity指數為最近24小時內在區塊鏈上執行的操作數量。[2019/12/16]
這兩種差異都確保了分片為應用程序創建了一個環境,該環境保持單鏈環境的關鍵安全特性,而多鏈生態系統根本無法做到這一點。
分叉來協調解決攻擊,從而消除攻擊者的權力,那么他們可以時迅速做到這一點。
缺乏這種額外的安全性是更加中心化的高TPS鏈的一個關鍵弱點。這樣的鏈沒有,也不可能有常規用戶運行節點的文化,所以主要節點和生態系統的參與者可以更容易地聚集在一起,并強加實施一個社區非常不喜歡的協議更改。更糟糕的是,用戶的節點將默認接受它。一段時間后,用戶會注意到,但那時強制協議更改已成為既成事實:拒絕更改的協調負擔將落在用戶身上,他們將不得不做出痛苦的決定。
理想情況下,我們希望有一種分片形式,可以避免51%的有效性信任假設,并保留傳統區塊鏈通過充分驗證獲得的強大安全壁壘。這正是我們在過去幾年中所做的大部分研究。
驗證計算:假設我們擁有計算的所有輸入,檢查某些計算是否正確完成。
驗證數據可用性:檢查計算輸入本身是否以某種形式被存儲,如果真的需要,可以下載它們;這種檢查應該在不實際下載整個輸入本身的情況下執行(因為數據可能太大,無法下載每個區塊)。
在區塊鏈中驗證一個區塊時,其中包括計算和數據可用性檢查:我們需要確信區塊中的交易是有效的,并且區塊中聲明的新狀態根哈希是執行這些交易的正確結果,但是我們還需要確信區塊中已經發布了足夠的數據,以便下載該數據的用戶可以計算狀態并繼續處理區塊鏈。第二部分是一個非常微妙但非常重要的概念,稱為數據可用性問題;稍后再詳細說明。
可擴展的驗證計算相對容易;具體有兩類技術:欺詐證明和ZK-SNARK。
兩種技術可以簡單描述如下:
欺詐證明是一個接受計算結果的系統,需要一個有質押存款的人簽署一個消息,內容為“我證明,如果你用輸入X進行計算C,你會得到輸出Y”。在默認情況下,我們信任這些消息,但我們也為其他已質押存款的人提供了挑戰的機會(帶有簽名的消息表示“我不同意,輸出是Z”)。只在有挑戰時,所有節點才會運行計算。雙方中任何一方的錯誤都將失去他們的存款,并且所有的計算都取決于該計算的結果將被重新計算。
動態 | Vitalik Buterin在layer2解決方案中加入SNARK:上周,以太坊核心開發者Schoedon表示,以太坊網絡已經超負荷,Dapp開發者應該在其他鏈上建設。Vitalik Buterin不同意這一觀點,他認為大多數Dapps并不是針對Gas進行優化的,而且行業內的競爭將“推動”次優Dapps。他還強調了layer2解決方案的重要性和前景,并在Ethresear.ch上發布了一個潛在的使SNARK-utilizing分叉解決方案來支持他的論點。[2018/9/25]
ZK-SNARK是一種加密證明形式,它直接證明了“對輸入X執行計算C會得到輸出Y”的說法。這個證明在密碼學上是“合理的”:如果C(x)不等于Y,在計算上就不可能做出有效的證明。即使運行?C?本身需要大量時間,證明也可以快速驗證。
基于欺詐證明的計算是可擴展的,因為“在正常情況下”,我們可以用驗證單個簽名來取代運行復雜的計算。有一種例外情況,由于存在挑戰,我們必須鏈上驗證計算,但這種例外情況非常罕見,因為觸發它非常昂貴。ZK-SNARK在概念上更簡單——它們只是用更便宜的證明驗證取代了計算——但它們工作原理背后的數學原理要復雜得多。
有一類半可擴展系統,它只對計算進行可擴展的驗證,同時仍需要每個節點對所有數據進行驗證。這可以通過使用一組壓縮技巧來實現計算代替大多數數據。這是rollup的領域。
其核心理念是,對于當時沒有試圖下載特定數據的人來說,這兩個“世界”是無法被區分的,一個是V1是邪惡的發布者,V2是誠實的挑戰者,另一個是V1是誠實的發布者,V2是邪惡的挑戰者。在一個可擴展的去中心化區塊鏈中,每個單獨的節點只希望下載一小部分數據,所以只有一小部分節點會看到發生了什么,除了存在分歧的事實。
無法區分誰對誰錯的事實,使得我們不可能擁有一個有效的數據可用性防欺詐方案。
那么,如何在不嘗試下載的情況下檢查1MB的數據是否可用呢?這聽起來不可能的!
關鍵是一項被稱為數據可用性抽樣的技術。數據可用性抽樣的工作原理如下:
使用一種名為erasurecoding的工具,將一個有N個塊的數據擴展為有2N個塊的數據,這樣其中的任何N個區塊都可以恢復整個數據。
動態 | Vitalik Buterin提出新的礦工費用模式:以太坊聯合創始人Vitalik Buterin發布了一項提案,旨在改善加密貨幣礦工費用。他認為,目前的礦工補償模式可以調整,以使礦工和用戶受益。為了實現這一目標,他發表了一份相當廣泛的文件,詳細說明了使用一種統一的價格拍賣模式取代目前的手續費機制。[2018/7/10]
檢查可用性,不用試圖下載整個數據,用戶只需在區塊中隨機選擇一個固定數量的位置(例如30個位置),只有當他們成功地在他們選擇的所有位置找到區塊中的塊時,才會接受區塊。
糾刪碼將“檢查100%可用性”(每一個數據片段都可用)問題轉換為“檢查50%可用性”(至少一半數據片段可用)問題。隨機抽樣解決了50%的可用性問題。如果可用的數據少于50%,那么幾乎可以肯定至少有一個檢查會失敗,如果至少50%的數據可用,那么盡管一些節點可能無法識別一個區塊是否可用,但只需要一個誠實的節點運行糾刪碼重構過程就可以恢復剩余的50%的區塊。因此,不需要下載1MB來檢查1MB區塊的可用性,只需要下載幾千字節。這使得在每個區塊上進行數據可用性檢查變得可行。
ZK-SNARK可以用來驗證數據上的erasurecoding是否正確,然后可以用Merkle分支來驗證單個塊。或者,也可以使用多項式承諾,其本質上是在一個簡單的組件中進行erasurecoding、證明單個元素和正確性驗證——這就是以太坊分片所使用的。
每個客戶端對每個區塊執行數據可用性采樣,驗證每個區塊中的數據是否可用,即使整個區塊的大小為1兆字節或更大,每個區塊也只需下載幾千字節。客戶端只有在其可用性挑戰的所有數據都得到正確響應時才會接受一個區塊。
既然我們已經驗證了數據的可用性,那么驗證正確性就變得更容易了。有兩種方法:
1.我們可以用ZK-SNARK。每個區塊都有一個ZK-SNARK來證明正確性。
2.我們可以使用欺詐證明:一些已質押存款的參與者可以簽署每個區塊的正確性。其他節點,稱為挑戰者(或漁民)隨機檢查并試圖完全處理區塊。因為我們已經檢查了數據的可用性,所以可以下載數據并完全處理任何特定區塊。如果他們發現一個無效的區塊,他們會發布一個每個人都驗證的挑戰。如果結果顯示該區塊是壞掉的,那么該區塊和所有依賴于該區塊的未來區塊都需要重新計算。
在上述任何一種情況下,無論區塊有多大,每個客戶端只需要為每個區塊做少量的驗證工作。在欺詐證明的情況下,偶爾區塊需要在鏈上進行完全驗證,但這應該是非常罕見的,因為觸發哪怕一個挑戰都是非常昂貴的。
就以太坊分片而言,近期的計劃是讓分片區塊只包含數據;也就是說,分片純粹是一個“數據可用性引擎”,使用該安全數據空間以及欺詐證明或ZK-SNARK來實現高吞吐量安全交易處理能力是第2層rollup的工作。但是,完全可以創建這樣一個內置系統來添加“本地”高吞吐量執行。
無效的區塊無法通過,因為驗證節點會注意到它們是無效的,并忽略它們。
不可用的區塊無法通過,因為驗證節點無法下載它們,并忽略它們。
在一個具有高級安全特性的分片區塊鏈中:
無效區塊無法通過,因為:
欺詐證明會迅速捕捉他們,并告知整個網絡該區塊的不正確性,并嚴懲創建者;
ZK-SNARK證明了正確性,我們不能為一個無效的區塊創建一個有效的ZK-SNARK。
不可用的區塊無法通過,因為:
如果一個區塊的可用數據少于50%,那么對于每個客戶端,至少有一個數據可用性樣本檢查幾乎肯定會失敗,這將導致客戶端拒絕該區塊;
如果一個區塊至少有50%的數據可用,那么實際上整個區塊都可用,因為只需要一個誠實節點來重構區塊的其余部分就可以。
沒有分片的傳統高TPS鏈無法提供這些保證。多鏈生態系統無法避免攻擊者選擇一條鏈進行攻擊并輕松地接管它的問題(鏈可以共享安全性,但如果這一點做得不好,它將變成事實上的傳統高TPS鏈,具有所有的缺點,如果做得好,它將只是上述分片技術的更復雜的實現)。
側鏈高度依賴于實現,但它們通常容易受到傳統高TPS鏈的弱點(如果它們共享礦工/驗證者)或多鏈生態系統的弱點(如果它們不共享礦工/驗證者)的影響。分片鏈可以避免這些問題。
然而,分片系統的裝甲中有一些裂縫。值得注意的是:
只依賴委員會的分片鏈很容易受到適應性對手的攻擊,問責制也更弱。也就是說,如果對手有能力實時入侵(或關閉)他們選擇的任何一組節點,那么他們只需要攻擊一小部分節點就可以破壞一個委員會。此外,如果一個對手(無論是適應性對手還是僅僅是占50%的攻擊者)破壞了一個委員會,只有很少的部分會被懲罰。這就是為什么數據可用性抽樣與欺詐證明或ZK-SNARK一起是隨機抽樣技術的重要補充的另一個關鍵原因。
只有當有足夠數量的在線客戶端共同發出足夠的數據可用性抽樣請求時,數據可用性抽樣才安全,這些請求的響應幾乎總是重疊到至少占到50%的區塊。在實踐中,這意味著必須有幾百個客戶端在線(并且這個數字隨著系統容量與單個節點容量的比率的增加而增加)。這是一種n中的少數信任模型——通常是相當可信的,但肯定沒有非分片鏈中節點的n中的0信任那么可靠。
如果分片鏈依賴于欺詐證明,那么它依賴于時間假設;如果網絡太慢,節點可能會在防欺詐程序出現并表明它是錯誤的之前接受最終確定的區塊。幸運的是,如果我們遵循在發現無效區塊后恢復所有無效區塊的嚴格規則,那么這個閾值是一個用戶設置的參數:每個用戶選擇他們到最終結果等待多長時間,如果他們不想等待足夠長的時間,那么就遭受損失,更謹慎的用戶可確保安全。盡管如此,這還是削弱了用戶體驗。使用ZK-SNARK驗證有效性解決了這個問題。
需要傳遞大量的的原始數據量,這增加了在極端網絡條件下發生故障的風險。少量數據比大量數據更容易被發送。區塊瀏覽器如果想要保存整個鏈,就需要存儲更多的數據。
分片區塊鏈依賴于分片的點對點網絡,每個p2p“子網”更容易被攻擊,因為它的節點更少。用于數據可用性抽樣的子網模型緩解了這一問題,因為子網之間存在一些冗余,但仍然存在風險。
這些都是值得關注的問題,盡管在我們看來,通過允許更多的應用程序在鏈上運行而不是通過中心化的第二層服務來實現的用戶級中心化的減少遠遠超過了這些問題。也就是說,這些問題,尤其是后兩個問題,實際上是將分片鏈的吞吐量提高到一定程度的真正限制。二次分片的二次性是有極限的。
順便說一句,如果分片區塊鏈的吞吐量變得太高,則其安全風險會越大,這也是為什么擴展到超二次分片的努力在很大程度上被放棄的關鍵原因;看起來保持二次分片只是二次分片是一個不錯的折衷方案。
在高TPS鏈中,很難發現區塊生產者的審查。審查檢測需要(i)能夠查看?每筆?交易并驗證沒有明顯值得進入但無法進入的交易,或(ii)在區塊生產者中有一個n中的1信任模型,并驗證沒有區塊無法進入。在中心化的高TPS鏈中,(i)是不可能的,(ii)更困難,因為小節點數量使n中的1的信任模型更容易崩潰,如果鏈的區塊時間對DAS來說太快(就像大多數中心化的高TPS鏈所做的那樣),很難證明一個節點的區塊沒有被拒絕,因為它們都被發布得太慢了。
如果大多數區塊生產者和生態系統成員試圖強行通過一項不受歡迎的協議更改,用戶的客戶端肯定會發現它,但對于社區來說,反抗和分叉都要困難得多,因為他們將需要啟動一組新的非常昂貴的高吞吐量節點來維護一個保持舊規則的鏈。
中心化基礎設施更容易受到外部參與者的審查。區塊產生節點的高吞吐量使它們非常容易被檢測到,并且更容易被關閉。從邏輯上來說,審查專用的高性能計算比追查個人用戶的筆記本電腦要容易得多。
高性能計算向中心化云服務轉移的壓力更大,這增加了整個鏈將在1-3家公司的云服務中運行的風險,因此,由于許多區塊生產者同時失敗,使得鏈的風險下降。具有在自己的硬件上運行驗證者的文化的分片鏈也更不容易受到這種攻擊。
適當的分片系統最好作為基礎層。有了一個分片基礎層,我們始終可以通過將其構建為rollup來創建一個中心化生產系統。但是,如果我們有一個依賴于中心化區塊生產的基礎層,則不能在其上構建更加去中心化的第2層。
原文鏈接
親愛的BitMart用戶:BitMart將暫停所有PIKACHU相關的功能,移除PIKACHU/USDT交易對.
1900/1/1 0:00:00DearValuedUsers,HuobiGlobalwillbeopeningXPNT(pNetwork)?spottrading(XPNT/USDT)andspotGridtrading(X.
1900/1/1 0:00:00今日要聞提示: 1.芝商所推出以歐元計價的比特幣和以太幣期貨2.Meta已支持在Facebook上展示NFT3.馬斯克正式通知終止購買推特.
1900/1/1 0:00:00尊敬的用戶:KLAY網絡升級已完成,Hotcoin現已恢復KLAY的充值、提現業務。對您造成的不便深表歉意!感謝您對Hotcoin的支持與信任!HotcoinGlobal2022年8月29日Ho.
1900/1/1 0:00:00尊敬的XT.COM用戶:DASH錢包升級維護已完成,XT.COM現已恢復DASH充提業務。給您帶來的不便,請您諒解!感謝您對XT.COM的支持與信任!XT.COM團隊2022年8月30日XTZ突.
1900/1/1 0:00:00DearHuobiGlobalUsers,HuobiGlobalwillbelaunchingdepositeventsforBABY.Makeyourdepositstoearnhigh-yi.
1900/1/1 0:00:00