分片(Sharding)是以太坊擴容的未來,它將是幫助以太坊生態系統支持每秒成千上萬筆交易的關鍵,并允許世界上大部分人以負擔得起的成本定期地使用該平臺。然而,分片也是以太坊生態系統和更廣泛的區塊鏈生態系統中更容易被誤解的概念之一。它指的是一組非常具體的具有特定屬性的想法,但它經常與那些具有非常不同且通常更弱的安全性屬性的技術混為一談。本文的目的是解釋分片提供了哪些特定的屬性,它與其他非分片技術的區別,以及分片系統為了實現這些屬性需要做出哪些權衡。
上圖:以太坊分片版本的一個描述。初始結構圖來自Hsiao-weiWang,由Quantstamp設計。
擴容的三難困境
描述分片的最佳方式,可以從形成和激發分片解決方案的問題開始:擴容的三難困境。
擴容的三難困境指出,區塊鏈嘗試擁有三個屬性,如果你堅持使用“簡單”的技術,你只能獲得這三個屬性中的兩個。這三個屬性分別是:
可擴展性:整個區塊鏈能夠處理的事務(transactions,也譯作“交易”)比單個普通節點(比如一臺消費型筆記本電腦)能夠驗證的事務要多。
去中心化:區塊鏈可以在不依賴于一小群大型中心化參與者的情況下運行。這通常理解為不應該對一組你無法通過一臺消費級電腦加入其中的節點有任何信任(或者甚至不應該假設多數節點將保持誠實);
安全性:區塊鏈能夠抵抗大量試圖攻擊它的參與節點。
現在我們來看看三種“簡單的解決方案”,這些解決方案只獲得了上述三個屬性中的兩個:
傳統區塊鏈——包括比特幣、PoS/分片之前的以太坊、萊特幣和其他類似的區塊鏈。這些區塊鏈依賴于每個參與者運行一個完整的節點來驗證每個事務(交易),因此這些區塊鏈具有去中心化和安全性,但沒有可擴展性。
高TPS的區塊鏈——包括DPoS家族,但也有許多其他的鏈。這些區塊鏈依賴于少量的節點(通常是10-100個)來維持節點之間的共識,用戶不得不信任這些節點中的大多數。這種鏈是可擴展的和安全的(基于上面的定義),但不是去中心化的。
多鏈生態系統——這指的是“橫向擴展”的一般概念,即讓不同的應用運行在不同的鏈上,并使用跨鏈通信協議使它們之間進行通信。這種生態系統是去中心化和可擴展的,但不安全,因為攻擊者只需要控制了這些鏈中的其中一條鏈的多數共識節點(通常是整個生態系統的<1%節點),就能攻破這條鏈,而且可能引發連鎖反應,對其他鏈上的應用造成很大的損害。
分片是一種讓你擁有所有這三大屬性的技術。一條使用分片技術的區塊鏈是:
可擴展的:它能夠處理比單個節點多得多的事務;
去中心化的:它能夠完全依靠消費型筆記本電腦來生存下去,而不依賴任何“超級節點”;
安全的:攻擊者無法用少量的資源攻擊系統的一小部分;而只能試圖控制和攻擊整條鏈。
本文的其余部分將描述分片區塊鏈如何做到這一點。
通過隨機抽樣進行分片
最容易理解的分片版本是通過隨機抽樣(randomsampling)進行分片。與我們正在以太坊(2.0)生態系統中構建的分片形式相比,通過隨機抽樣進行分片具有更弱的信任屬性,但它使用的技術更簡單。
V神:Optimism第一輪融資是成功的,期待可追溯公共產品融資的后續進展:11月17日消息,V神發布長文表示,上個月,以太坊二層擴容解決方案 Optimism 進行了第一輪可追溯公共產品融資,總共向 58 個項目分配了 100 萬美元,以獎勵這些項目已經為 Optimism 和以太坊生態系統所做的出色工作。文章稱,總的來說,我認為 Optimism 第一輪融資是成功的。許多有趣和有價值的項目得到了資助,衍生出很多討論。無論如何,可追溯公共產品融資仍然是一項令人興奮的、以多種方式進行的制度創新的新實驗。這是一項非貨幣驅動的去中心化治理的實驗,也是一項通過追溯而不是主動激勵來實現事情的實驗。無論結果如何,我都期待看到這個實驗在接下來的幾輪中如何發展。[2021/11/17 21:56:54]
其核心理念如下:假設有一條擁有很大數量(比如10000名)驗證者的PoS區塊鏈,并且該鏈有大量(比如100個)區塊需要驗證。沒有任何一臺計算機有能力在下一組區塊到來之前,將所有這些區塊進行驗證。
因此,我們所做的就是隨機地劃分驗證工作。我們隨機洗牌(打亂)驗證者列表,然后將經打亂的驗證者列表中的前100名驗證者分配去驗證第一個區塊,將列表中接下來的100名驗證者分配去驗證第二個區塊,以此類推。這樣的一組經隨機選中的驗證者(被分配去驗證某個區塊或執行一些其它任務),我們稱之為一個委員會(committee)。見下方示例圖:
當一名驗證者驗證某個區塊時,該驗證者會發布一個簽名(signature)來證明自己驗證了該區塊。其它驗證者現在僅需驗證10000個簽名,而不是驗證100個完整的區塊--這樣一來,工作量就小得多了,尤其是通過使用BLS簽名聚合(注:也即將多個簽名聚合成一個簽名)。每個區塊不是通過同一個P2P網絡進行廣播,而是在不同的子網絡中廣播,且節點只需加入與它們負責的區塊(或因其它原因感興趣的區塊)相對應的子網絡。
想象一下,如果每個節點的計算能力增加2倍將會發生什么。由于每個節點現在能夠安全地驗證多2倍的簽名,你(指區塊鏈)可以減少最低Staking質押金,從而支持多2倍的驗證者數量,這樣你就可以有200個委員會,而不是100個。因此,你在每個slot可以驗證200個區塊,而不是只有100個。此外,每個單獨的區塊還可以大2倍。這樣以來,你(在每個slot)就驗證了多2倍的的區塊,且每個區塊的大小還增加了2倍,也即是說,整個區塊鏈的容量增加了4倍。
我們可以引入一些數學術語來討論這是怎么回事。借助大O表示法,我們用“O(C)”表示單個節點的計算能力。傳統的區塊鏈可以處理大小為O(C)的區塊;而一條采用如上所述的分片技術的區塊鏈可以并行處理O(C)區塊(請記住,每個節點間接驗證每個區塊的成本是O(1),因為每個節點僅需驗證固定數量的簽名),且每個區塊有著O(C)的容量,因此整個分片區塊鏈的總容量將是O(C2)。這就是為何我們將這種類型的分片稱之為二次分片(quadraticsharding),且這種效果是我們認為從長遠來看,分片是擴展區塊鏈的最佳方式的關鍵原因。
常見問題:分成100個委員會和分成100條獨立的鏈有什么不同?
V神:從1.0到2.0是從一個共識引擎系統到另一個的狀態轉換:基于以太坊的去中心化社交應用Status官方在推特稱,像“從以太坊1.0遷移到以太坊2.0”這樣的說法是行不通的。以太坊創始人V神則評論稱,也許關鍵在于“遷移”是一個不好的詞,因為它意味著它們是兩個獨立的系統。然而在現實中,它是一種從一個共識引擎系統轉移到另一個的狀態轉換。[2020/11/14 20:48:01]
有兩個關鍵區別:
隨機抽樣防止了攻擊者將他們的能力集中在某一個分片上。在一個有著100條多鏈的多鏈生態系統中,攻擊者只需要控制stake(質押金)總量的0.5%就可以造成破壞:他們可以集中對單條鏈發起51%攻擊;相比之下,在一個分片區塊鏈系統中,攻擊者必須控制近30-40%的stake總量才可能做出同樣的事情(換句話說,整條鏈有著共享的安全性)。當然,攻擊者可以等待好運氣,即通過隨機的方式讓他獲得單個分片的51%的控制權,即使該攻擊者所控制的stake數量不到整條鏈的stake總量的50%。如果攻擊者的質押量少于整條鏈質押總量的30%,那上述這種情況幾乎不可能發生。
緊密耦合:即便某個分片出現了一個非法區塊(badblock),整條區塊鏈可以通過重組來拋棄該區塊。在實施分片的區塊鏈中,存在一個社會契約(在本文檔后面的章節中,我們將描述一些從技術上強制執行該契約的方法),也即,即便某個分片中存在一個非法區塊,那整條區塊鏈也是不會接受的,應該在發現該非法區塊時會立即將之驅逐出去。從區塊鏈內的應用程序的角度來說,這確保了完美的安全性:合約A可以信賴合約B,因為如果合約B由于鏈上發生攻擊而出現不當行為,那么整個歷史記錄將被逆轉恢復,包括由于合約B中的故障導致合約A中發生的不當交易。
這兩個差異確保分片為應用程序創建了這樣一個環境,該環境保留著一個單鏈環境所擁有的關鍵安全屬性,而這是多鏈生態系統根本無法做到的。
使用更好的安全模型改進分片
比特幣圈中一個常見的說法,也是我完全同意的一個說法是,像比特幣(或以太坊)這樣的區塊鏈并不完全依賴于「誠實大多數的假設」。如果對這樣的區塊鏈發起51%的攻擊,那么攻擊者可以做出一些令人討厭的事情,比如逆轉或審查交易,但他們不能添加無效的交易。而且,即使它們確實逆轉或審查交易,運行常規節點的用戶也可以很容易地檢測到這種行為,因此,如果社區希望通過一個削弱攻擊者算力的分叉來協調解決該攻擊,他們可以很快做到這一點。
缺乏這種額外的安全性正是那些更加中心化的高TPS區塊鏈的一個關鍵弱點。這樣的區塊鏈沒有,也不可能會有普通用戶運行節點的文化,因此其主要節點和生態參與者可以更容易地聚集起來,強制執行一項社區非常厭惡的協議更改。更糟糕的是,用戶的節點將默認接受這種更改。一段時間后,用戶會注意到這種更改,但到那時,這種強制的更改已經是一個既成事實:用戶將承擔拒絕這項更改帶來的協調負擔,他們將不得不做出痛苦的決定,逆轉每個人都認為已經被敲定的一天或更多的活動。
理想情況是,我們希望有一種分片形式,避免51%的信任假設,并保留傳統區塊鏈通過全網驗證獲得的強大安全保障。這正是我們在過去幾年里所做的研究。
V神:不喜歡鏈基層治理,因其可被利用并導致權力集中:針對有推特網友稱以太坊虛擬機不能實現鏈上治理,以太坊創始人V神在推特回復稱,治理絕對可以在EVM(以太坊虛擬機)中實現,以太坊上的許多DAO(自治組織)就是這樣做的。我不喜歡鏈基層治理,因為它可被利用并導致權力集中。[2020/10/31 11:19:25]
1.可擴展的計算驗證
我們可以把防51%攻擊的、具有可擴展性的驗證分為兩種情況:
驗證計算:檢查某些計算是被否正確地完成,這假設你擁有計算的所有輸入(inputs);
驗證數據的可用性:檢查計算本身的輸入是否以某種形式被存儲,當你真的需要,你可以下載這些輸入;應該在無需實際下載整個輸入的情況下執行此檢查(因為數據可能太大,無法下載每個區塊)。
驗證區塊鏈中的某個區塊,涉及對「計算」和「數據可用性」同時進行檢查:你需要確信,1)該區塊中包含的交易是有效的,且該區塊新的狀態根哈希是執行這些交易的正確結果;但你也需要確信,2)有足夠多來自該區塊的數據已經被發布,這樣下載該數據的用戶就可以對該狀態進行計算,并繼續處理這條鏈。這第二部分是一個非常微妙但卻很重要的概念,我們稱之為「數據可用性問題」,稍后再詳細介紹。
首先,以可擴展的方式驗證計算是相對容易實現;有兩類技術:欺詐證明(fraudproofs)和ZK-SNARKs(簡潔的非交互式零知識證明)。
欺詐證明是一種具有可擴展性的計算驗證方法
這兩種技術可以簡單地描述如下:
欺詐證明(fraudproofs)是這樣一個系統,即如果要接受某個計算結果,你(指協議)需要一個質押了一筆存款(deposit)的人簽署一條這樣的消息:“我證明,如果你對輸入X執行計算C,你會得到輸出Y”。在默認情況下,你(協議)會信任這些消息,但是你也會留給其他質押了存款的人一個發起挑戰的機會(即提交一條簽名消息,表示“我不同意,輸出應該是Z”)。只有當存在挑戰時,所有節點才會運行計算。雙方中的任何一方錯了,將失去自己的存款,且所有依賴于該計算結果的計算都將被重新計算。
ZK-SNARKs是一種加密證明,它直接證明了“對輸入X執行計算C,將得到輸出Y”的說法。這個證明在密碼學上是“合理的”:如果C(X)不等于Y,在計算上無法對此進行有效證明。該證明也可以快速得以驗證,即便運行C計算本身需要大量的時間。關于ZK-SNARKs的更多數學細節,請參閱這篇文章:https://vitalik.ca/general/2021/01/26/snarks.html
基于欺詐證明的計算是可擴展的,因為“在正常情況下”,你可以通過驗證單個簽名來代替運行復雜的計算。也有例外的情況,即由于有人發起了挑戰,你必須在鏈上驗證計算,但這種例外情況非常罕見,因為觸發這種情況的成本非常昂貴(最初的證明者或者發起挑戰者,其中一方將損失一大筆存款)。
ZK-SNAKRs在概念上更簡單--它們只是用更便宜的證明驗證代替了計算--但其工作原理背后的數學運算要復雜得多。
V神:ERC20項目應積極研究ZK-Rollup L2擴容解決方案:金色財經報道,Education Ecosystem今日發推稱,過去幾周,以太坊gas價格高昂,每筆交易價格為0.40至0.88美元,這使得ERC20項目無法在以太坊上進行任何微交易支付,這挫敗了使用以太坊網絡進行支付的想法。對此,以太坊創始人V神表示,ERC20項目應該積極研究ZK-Rollup L2擴容解決方案,這些解決方案目前已在主網上運行。[2020/7/10]
當前,有一類半擴展(semi-scalable)的Layer2系統,它僅僅以可擴展的方式(即使用欺詐證明或者ZK-SNARKs)驗證計算,同時仍然要求每個節點對所有數據進行驗證。通過使用一套壓縮技巧可以非常有效地實現這一點。這就是rollups。
2.可擴展的數據可用性驗證要更加困難
欺詐證明不能用于驗證數據的可用性。計算的欺詐證明依賴于這樣一個事實,即計算的輸入在最初的證明被提交的那一刻就發布在鏈上,因此如果有人發起挑戰,那么挑戰的執行與最初證明的執行是完全發生在同一個“環境”中的。但在檢查數據可用性時,你不能這么做,因為問題恰恰在于,有太多的數據需要檢查,不能全部發布到鏈上。因此,針對數據可用性的欺詐證明方案遇到了一個關鍵問題:某人可以聲稱“數據X是可用的”而不公布該數據,等待被挑戰,然后才會在鏈上公布數據X,從而使發起挑戰者被網絡上的其它人視為不正確。
這在「漁夫的困境」中到了進一步的闡述:
「漁夫的困境」的核心概念是存在兩個“世界”:一個世界中,V1是個邪惡的數據發布者,V2是個誠實的挑戰者;另一個世界中,V1是個誠實的數據發布者,V2是個邪惡的挑戰者。對于當時沒有試圖下載這一特定數據的人來說,是無法對此進行區分的。當然,在一個可擴展的去中心化區塊鏈中,每個單獨的節點可以只下載一小部分數據,因此,除了存在分歧這一事實之外,只有一小部分節點可以看到發生了什么。
由于不可能區分誰對誰錯,因此不可能有一個有效的數據可用性欺詐證明方案。
常見問題:如果某些數據不可用怎么辦?通過ZK-SNARK,你就可以確定一切都是有效的,這還不夠嗎?
不幸的是,僅僅只有有效性是不足以確保正確運行區塊鏈的。這是因為,如果區塊鏈是有效的,但是所有的數據都是不可用的,那么用戶就沒有辦法更新他們所需的數據來生成用于驗證未來區塊的有效性的證明。如果一個攻擊者生成了一個有效但不可用的區塊,然后該攻擊者又消失了,那么他就可以有效地暫停這條鏈。某個人可能會劫持某個特定用戶的賬戶數據,直到該用戶支付贖金,所以這個問題并不純粹是區塊鏈活性問題。
有一些強有力的信息-理論觀點認為這個問題十分重大,沒有什么明智的方式來規避。詳情請參閱這篇文章:
https://eprint.iacr.org/2009/612.pdf
那么,如何在不下載的情況下檢查1MB數據是否可用呢?這聽起來不可能!
其中的關鍵是一種稱為數據可用性抽樣(dataavailabilitysampling)的技術。數據可用性抽樣的工作方式如下:
V神:比特幣的很多原則也適用于以太坊:2月28日,UCL區塊鏈技術研究中心研究員Angela Walch發推文詢問比特幣核心開發者所追求的比特幣原則,其發布的比特幣原則的維基頁面顯示,比特幣原則有:2100萬比特幣上限、無審查、開源、交易不可逆轉等。對此,V神評論回應稱,對他而言這也是一個合理描述,(比特幣這些原則)中的很多也適用于以太坊。[2020/2/29]
使用一種叫做糾刪碼(erasurecoding)的工具,將一段包含N個數據塊的數據擴展成一段包含2N個數據塊的數據,這樣,其中任意N個數據塊都可以恢復整個數據。
為了檢查數據的可用性,無需下載整個數據,用戶只是簡單地在該區塊中隨機選擇一個固定數量的位置(比如30個位置),且只有當用戶在所有他們選擇的位置成功地找到這些數據塊時,才會接受該區塊。
糾刪碼將“檢查100%可用性”(即檢查每一段數據都是可用的)這一問題轉變成了“檢查50%的可用性”(即至少有一半的數據是可用的)。隨機抽樣解決了50%的可用性問題。如果不到50%的數據是可用的,那么至少有一次檢查幾乎肯定會失敗;如果至少50%的數據是可用的,同時某些節點可能無法識別出某個區塊是可用的,那么只需要一個誠實節點運行糾刪碼重構過程,就能將該區塊剩余的50%數據恢復。因此,不需要下載1MB來檢查1MB區塊的可用性,你只需要下載幾KB。這使得對每個區塊進行數據可用性檢查是可行的。可以通過這篇文章來了解這種檢查如何在P2P子網絡中有效地實現:
https://hackmd.io/@vbuterin/sharding_proposal#Blob-publication-process
可以使用ZK-SNARK來驗證對一段數據進行的糾刪碼是否正確地被執行,然后可以使用Merkle分支來驗證單個數據塊。或者,你可以使用多項式承諾(例如Kate(又名KZG)承諾),本質上是在一個簡單的組件中進行糾刪碼、證明單個元素和正確性驗證——這就是以太坊分片所使用的。
概述:我們又是如何確保一切都是正確的?
假設有100個區塊,你想要在不依賴委員會的情況下有效地驗證所有區塊的正確性。我們需要做以下工作:
每個客戶端對每個區塊進行數據可用性采樣,以驗證每個區塊中的數據的可用性,同時客戶端對每個區塊只下載幾KB,即使整個區塊的大小有1MB或更大。只有當某個區塊的所有數據可用性挑戰都被正確地相應時,客戶端才會接受該區塊。
既然我們已經驗證了數據的可用性,那么驗證正確性就變得更容易了。有兩種方法:
我們可以使用欺詐證明:一些質押了存款的參與者可以對每個區塊的正確性進行簽名。而其它節點,被稱為挑戰者(或者漁夫),會隨機檢查并嘗試完整地處理區塊。由于我們已經檢查了數據的可用性,所以總是可以下載數據并完整地處理任何特定的區塊。如果他們(挑戰者)發現一個無效的區塊,他們會發布一個每個人都會驗證的挑戰。如果這個區塊被證明是無效的,那么這個區塊以及依賴于它的所有后續區塊都需要重新計算。
我們也可以使用ZK-SNARKs。每個區塊都將附帶一個ZK-SNARK來證明其正確性。
在上述任何一種情況下,每個客戶端只需要對每個區塊做少量的驗證工作,無論區塊有多大。在使用欺詐證明的情況下,偶爾需要在鏈上完整地驗證區塊,但這應該是非常罕見的,因為觸發哪怕一個挑戰的成本都是非常昂貴的。
就是這樣!就以太坊分片而言,近期計劃是將分片區塊僅用于數據;也就是說,分片純粹是一個“數據可用性引擎”,而Layer2Rollups將使用這個安全的數據空間,同時使用欺詐證明或ZK-SNARKs,來實現高吞吐量的安全交易處理能力。但是,完全可以創建這樣一個內置系統來添加“本地”高吞吐量執行。
分片系統的關鍵屬性是什么?有哪些權衡?
分片的關鍵目標是盡可能復制傳統(非分片)區塊鏈最重要的安全屬性,但不需要每個節點親自驗證每筆交易。
在傳統的區塊鏈中:
無效區塊無法通過,因為驗證節點會發現它們無效并忽略它們。
不可用的區塊無法通過,因為驗證節點無法下載它們并忽略它們。
在一個具有高級安全特征的分片區塊鏈中:
無效區塊無法通過,因為:
欺詐證明會迅速抓住無效區塊,并通知整個網絡該區塊的無效性,并嚴懲該區塊的創造者;或者
ZK-SNARK證明正確性,并且你不能為一個無效區塊創建一個有效的ZK-SNARK證明。
不可用的區塊無法通過,因為:
如果一個區塊的數據只有不到50%可用,那么對于每個客戶端來說,至少會有一個數據可用性抽樣檢查會失敗,從而導致客戶端拒絕該區塊。
如果一個區塊至少有50%的數據可用,那么實際上整個區塊都是可用的,因為只需要一個誠實的節點就可以重構該區塊的其余部分。
沒有實施分片的傳統高TPS區塊鏈(比如DPoS鏈)無法提供這些保證;多鏈生態系統也沒有辦法避免攻擊者選擇其中一條鏈作為攻擊目標并輕易控制該條鏈的問題(這些鏈可能會共享安全性,但如果這方面做不好,整個多鏈生態系統將實際上變成一條傳統的高TPS的鏈,并具有后者的所有缺點;如果在共享安全性方面做好了,這個多鏈生態就只是成了上述分片技術的一個更復雜的實現而已)。
側鏈(sidechains)高度依賴于具體實現,但它們通常容易受到傳統高TPS區塊鏈的弱點的影響(如果它們共享礦工/驗證者),或受到多鏈生態系統的弱點的影響(如果它們不共享礦工/驗證者)。采用分片的區塊鏈?(注:譯者在下文種簡稱為“分片區塊鏈”或“分片系統”)能夠避免這些問題。
然而,分片系統的盔甲上也有一些裂縫。尤其是:
僅依賴于委員會的分片區塊鏈容易受到自適應敵手(adaptiveadversaries)的攻擊,而且問責制也較弱。也就是說,如果對手有能力實時入侵(或關閉)他們選擇的任意節點,那么他們只需要攻擊少量節點就可以破壞單個委員會。此外,如果敵人(無論是一名自適應的敵手還是一名控制有50%總質押金的攻擊者)打破了某個委員會,只有他們的少數一些節點(即攻擊者在該委員會中的控制的少數節點)會被公開地被證實參與了此次攻擊,因此只有少數的質押金會被懲罰。這也是為什么數據可用性抽樣與欺詐證明或ZK-SNARKs結合起來是隨機抽樣技術的重要補充的另一個關鍵原因。
只有當有足夠數量的客戶端在線,它們共同發出足夠的數據可用性采樣請求時,數據可用性抽樣才安全。在實踐中,這意味著必須有幾百個客戶端在線(并且這個數字隨著系統容量與單個節點容量的比率的增加而增加)。這是一個few-of-N信任模型——通常是相當可信的,但肯定沒有非分片區塊鏈中節點對數據可用性無需信任那么健壯。
如果分片區塊鏈依賴于欺詐證明,那么它依賴于及時性假設;如果網絡太慢,節點可能會在用于證明某個區塊不正當的欺詐證明出現之前接受某個區塊是被敲定了。幸運的是,如果你嚴格遵循一旦發現無效區塊就逆轉所有無效區塊的規則,那么這個閾值是一個用戶設置的參數:每個用戶選擇他們可以等待最終敲定的時間,如果他們不愿等待太長時間,那么就會遭受損失,但更加謹慎的用戶是安全的。即便如此,這還是削弱了用戶體驗。
需要傳送的原始數據數量要大得多,這增加了在極端網絡條件下發生傳輸失敗的風險。與大量數據相比,少量數據更容易發送(如果強大的政府試圖審查這條鏈,也更容易安全地隱藏數據)。區塊瀏覽器需要存儲更多的數據,如果它們想要支持整條鏈的話。
分片區塊鏈依賴于分片P2P網絡,每個單獨的P2P“子網絡”(即分片鏈)更容易受到攻擊,因為它有更少的節點。用于數據可用性抽樣的子網絡模型??可以緩解這種情況,因為子網絡之間存在一些冗余,但仍然存在風險。
以上這些都是合理的擔憂,盡管在我們看來,允許更多的應用運行在區塊鏈上,而不是通過中心化的Layer2服務運行,是更為令人擔憂的問題。話雖如此,這些擔憂,尤其是后兩個問題,實際上是限制分片區塊鏈吞吐量超過某個點的真正因素。二次分片的二次性是有限制的。
順便說一句,如果分片區塊鏈的吞吐量變得太高,那么它的安全風險會越來越大,這也是為什么擴展到超二次分片的努力在很大程度上被放棄的關鍵原因;似乎保持二次分片的二次性才是最好的方法。
為何不以中心化的方式進行區塊生產,同時對驗證進行分片?
人們經常提出的一種分片替代方案是,搭建一條結構類似于中心化的高TPS鏈的區塊鏈,但這條鏈上面使用數據可用性抽樣和分片,以實現對有效性和可用性的驗證。
這改進了目前存在的中心化高TPS區塊鏈,但仍然比分片系統弱得多。這有幾個原因:
在一個高TPS的區塊鏈中,區塊生產者更難以監測到審查。發現審查要求:(i)能夠看到每一筆交易,并驗證沒有這樣的交易存在:該交易明顯值得被打包,但莫名其妙地未被打包進區塊;或者(ii)在區塊生產者中建立一個1-of-N信任模型,并驗證沒有區塊沒能進入鏈中。在一條中心化的高TPS鏈中,(i)是不可能的,(ii)更難以實現,因為較少的節點總數甚至會使1-of-N信任模型更容易崩潰,而且,如果區塊鏈的出塊時間對于DAS來說太快了(就像大多數中心化的高TPS鏈一樣),就很難證明某個節點生產的區塊不是因為發布速度太慢而被拒絕。
如果大多數區塊生產者和生態系統成員試圖強行通過一項不受社區歡迎的協議變更,雖然用戶的客戶端肯定會檢測到該變更,但對于社區來說,反抗和通過分叉來拒絕該變更是非常困難的,因為他們需要啟動一組新的非常昂貴的高吞吐量節點來維護一條保持舊規則的鏈。
中心化的基礎設施更容易受到外部行為者的審查。生產區塊的節點有著高吞吐量,這使得它們非常容易被發現,并更容易被關閉。在和邏輯上,審查專門的高性能計算也比審查個人用戶的筆記本電腦更容易。
將高性能計算轉移到中心化云服務的壓力更大,增加了整條鏈將在1-3家公司的云服務內運行的風險,因此會增加由于許多區塊生產者同時出現故障而導致整條鏈崩潰的風險。而有著在用戶自己的硬件上運行驗證者的文化的分片區塊鏈不容易受到這種影響。
適當進行分片的系統作為基礎層更好。給定一個實施分片的基礎層,你總是可以通過構建一個Rollup來在其上創建一個中心化的生產系統。但是,如果你有一個依賴于中心化的區塊生產的基礎層,那你就無法在上面構建一個更加去中心化的Layer2。
原文鏈接:
https://vitalik.ca/general/2021/04/07/sharding.html
正文中涉及的鏈接:
:https://ethresear.ch/t/pragmatic-signature-aggregation-with-bls/2105
:https://vitalik.ca/general/2020/08/17/philosophy.html
:https://github.com/ethereum/research/wiki/A-note-on->
*本文首發于Unitimes?App*
撰文:VitalikButerin
編輯:南風
特別感謝DankradFeist和AdityaAsgaonkar的校審。
Gate.io一直秉承真實,透明的理念,不造假數據,不干預市場交易,為用戶提供真實自由的市場工具和穩定健康的市場服務。杠桿交易提供做多和做空機制,可以有效穩定市場到合理價值.
1900/1/1 0:00:00Coinbase剛剛公布了它的2021年第1季度的數據。它的第1季度的總收入是18億美元,超過去年全年的13億美元。利潤有可能達到8億美元.
1900/1/1 0:00:00數字經濟是以區塊鏈、人工智能和大數據深度挖掘和融合應用為特征的智能化階段,面對新的社會狀態,數字化經濟蓬勃發展,充分發揮了技術創新的收益,改變了當前的技術應用方式,發揮技術對社會的賦能作用.
1900/1/1 0:00:00自比特幣誕生,區塊鏈行業已經發展了12年。隨著技術的不斷成熟,區塊鏈一詞頻頻出現在熱點新聞中,「區塊鏈」也漸成趨勢,不斷賦能各行各業。有人說區塊鏈是百年一遇的偉大機會,越早參與區塊鏈,收獲越大.
1900/1/1 0:00:00Gate.io直播間作為行業內首個交易所內置直播功能,通過多樣性的直播形式為平臺用戶帶來具有深度、有趣、開放的信息內容.
1900/1/1 0:00:00行情觀點:小時盤面來看,昨日晚間大餅沖高插針至58933.75一線回調,走出6連陰回吐漲幅,觸底57860.32一線反彈,震蕩上升插針向上試探遇壓58602.94一線回調,延續震蕩震蕩下行.
1900/1/1 0:00:00