分片(Sharding)是以太坊擴容的未來,它將是幫助以太坊生態系統支持每秒成千上萬筆交易的關鍵,并允許世界上大部分人以負擔得起的成本定期地使用該平臺。然而,分片也是以太坊生態系統和更廣泛的區塊鏈生態系統中更容易被誤解的概念之一。它指的是一組非常具體的具有特定屬性的想法,但它經常與那些具有非常不同且通常更弱的安全性屬性的技術混為一談。本文的目的是解釋分片提供了哪些特定的屬性,它與其他非分片技術的區別,以及分片系統為了實現這些屬性需要做出哪些權衡。
上圖:以太坊分片版本的一個描述。初始結構圖來自Hsiao-weiWang,由Quantstamp設計。
擴容的三難困境
描述分片的最佳方式,可以從形成和激發分片解決方案的問題開始:擴容的三難困境。
擴容的三難困境指出,區塊鏈嘗試擁有三個屬性,如果你堅持使用“簡單”的技術,你只能獲得這三個屬性中的兩個。這三個屬性分別是:
可擴展性:整個區塊鏈能夠處理的事務(transactions,也譯作“交易”)比單個普通節點(比如一臺消費型筆記本電腦)能夠驗證的事務要多。
去中心化:區塊鏈可以在不依賴于一小群大型中心化參與者的情況下運行。這通常理解為不應該對一組你無法通過一臺消費級電腦加入其中的節點有任何信任(或者甚至不應該假設多數節點將保持誠實);
安全性:區塊鏈能夠抵抗大量試圖攻擊它的參與節點。
現在我們來看看三種“簡單的解決方案”,這些解決方案只獲得了上述三個屬性中的兩個:
傳統區塊鏈——包括比特幣、PoS/分片之前的以太坊、萊特幣和其他類似的區塊鏈。這些區塊鏈依賴于每個參與者運行一個完整的節點來驗證每個事務(交易),因此這些區塊鏈具有去中心化和安全性,但沒有可擴展性。
高TPS的區塊鏈——包括DPoS家族,但也有許多其他的鏈。這些區塊鏈依賴于少量的節點(通常是10-100個)來維持節點之間的共識,用戶不得不信任這些節點中的大多數。這種鏈是可擴展的和安全的(基于上面的定義),但不是去中心化的。
多鏈生態系統——這指的是“橫向擴展”的一般概念,即讓不同的應用運行在不同的鏈上,并使用跨鏈通信協議使它們之間進行通信。這種生態系統是去中心化和可擴展的,但不安全,因為攻擊者只需要控制了這些鏈中的其中一條鏈的多數共識節點(通常是整個生態系統的<1%節點),就能攻破這條鏈,而且可能引發連鎖反應,對其他鏈上的應用造成很大的損害。
分片是一種讓你擁有所有這三大屬性的技術。一條使用分片技術的區塊鏈是:
可擴展的:它能夠處理比單個節點多得多的事務;
去中心化的:它能夠完全依靠消費型筆記本電腦來生存下去,而不依賴任何“超級節點”;
安全的:攻擊者無法用少量的資源攻擊系統的一小部分;而只能試圖控制和攻擊整條鏈。
V神:NFT的發展讓我吃驚:金色財經報道,以太坊創始人V神在推特中做你問我答節目,在回答以太坊核心開發者、MyCrypto創始人兼首席執行官Taylor Monahan像V神提問:“以太坊哪個應用最讓你吃驚?”V神表示,NFT。[2021/9/2 22:54:12]
本文的其余部分將描述分片區塊鏈如何做到這一點。
通過隨機抽樣進行分片
最容易理解的分片版本是通過隨機抽樣(randomsampling)進行分片。與我們正在以太坊(2.0)生態系統中構建的分片形式相比,通過隨機抽樣進行分片具有更弱的信任屬性,但它使用的技術更簡單。
其核心理念如下:假設有一條擁有很大數量(比如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神:ETH2.0初期罰款降至Medalla的1/3到1/4:以太坊創始人Vitalik發推特表示,ETH2.0初期罰款降至Medalla水平的1/3到1/4,如果有524,288個以太坊參與其中,那么獎勵約為25%的年化收益率。因此,即使年化收益率在大約3周之后就被大幅削減,質押仍將會帶來凈利潤。[2020/11/11 12:19:05]
隨機抽樣防止了攻擊者將他們的能力集中在某一個分片上。在一個有著100條多鏈的多鏈生態系統中,攻擊者只需要控制stake(質押金)總量的0.5%就可以造成破壞:他們可以集中對單條鏈發起51%攻擊;相比之下,在一個分片區塊鏈系統中,攻擊者必須控制近30-40%的stake總量才可能做出同樣的事情(換句話說,整條鏈有著共享的安全性)。當然,攻擊者可以等待好運氣,即通過隨機的方式讓他獲得單個分片的51%的控制權,即使該攻擊者所控制的stake數量不到整條鏈的stake總量的50%。如果攻擊者的質押量少于整條鏈質押總量的30%,那上述這種情況幾乎不可能發生。
緊密耦合:即便某個分片出現了一個非法區塊(badblock),整條區塊鏈可以通過重組來拋棄該區塊。在實施分片的區塊鏈中,存在一個社會契約(在本文檔后面的章節中,我們將描述一些從技術上強制執行該契約的方法),也即,即便某個分片中存在一個非法區塊,那整條區塊鏈也是不會接受的,應該在發現該非法區塊時會立即將之驅逐出去。從區塊鏈內的應用程序的角度來說,這確保了完美的安全性:合約A可以信賴合約B,因為如果合約B由于鏈上發生攻擊而出現不當行為,那么整個歷史記錄將被逆轉恢復,包括由于合約B中的故障導致合約A中發生的不當交易。
這兩個差異確保分片為應用程序創建了這樣一個環境,該環境保留著一個單鏈環境所擁有的關鍵安全屬性,而這是多鏈生態系統根本無法做到的。
使用更好的安全模型改進分片
比特幣圈中一個常見的說法,也是我完全同意的一個說法是,像比特幣(或以太坊)這樣的區塊鏈并不完全依賴于「誠實大多數的假設」。如果對這樣的區塊鏈發起51%的攻擊,那么攻擊者可以做出一些令人討厭的事情,比如逆轉或審查交易,但他們不能添加無效的交易。而且,即使它們確實逆轉或審查交易,運行常規節點的用戶也可以很容易地檢測到這種行為,因此,如果社區希望通過一個削弱攻擊者算力的分叉來協調解決該攻擊,他們可以很快做到這一點。
缺乏這種額外的安全性正是那些更加中心化的高TPS區塊鏈的一個關鍵弱點。這樣的區塊鏈沒有,也不可能會有普通用戶運行節點的文化,因此其主要節點和生態參與者可以更容易地聚集起來,強制執行一項社區非常厭惡的協議更改。更糟糕的是,用戶的節點將默認接受這種更改。一段時間后,用戶會注意到這種更改,但到那時,這種強制的更改已經是一個既成事實:用戶將承擔拒絕這項更改帶來的協調負擔,他們將不得不做出痛苦的決定,逆轉每個人都認為已經被敲定的一天或更多的活動。
理想情況是,我們希望有一種分片形式,避免51%的信任假設,并保留傳統區塊鏈通過全網驗證獲得的強大安全保障。這正是我們在過去幾年里所做的研究。
1.可擴展的計算驗證
我們可以把防51%攻擊的、具有可擴展性的驗證分為兩種情況:
驗證計算:檢查某些計算是被否正確地完成,這假設你擁有計算的所有輸入(inputs);
V神:PoS中51%攻擊者只有一次機會:V神表示,在PoW的共識機制中,一名成功的攻擊者可以反復攻擊,除非干掉所有人的硬件否則沒有辦法干掉他的硬件,這是PoS優于PoW的一個特征,而且被低估了。在PoS中,一個實體進行51%攻擊不再致命。如果攻擊也只有一次機會,然后要么被砍掉要么被軟分叉,結果失去了幣也就不能再發動攻擊了。[2020/9/3]
驗證數據的可用性:檢查計算本身的輸入是否以某種形式被存儲,當你真的需要,你可以下載這些輸入;應該在無需實際下載整個輸入的情況下執行此檢查(因為數據可能太大,無法下載每個區塊)。
驗證區塊鏈中的某個區塊,涉及對「計算」和「數據可用性」同時進行檢查:你需要確信,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在概念上更簡單--它們只是用更便宜的證明驗證代替了計算--但其工作原理背后的數學運算要復雜得多。
當前,有一類半擴展(semi-scalable)的Layer2系統,它僅僅以可擴展的方式(即使用欺詐證明或者ZK-SNARKs)驗證計算,同時仍然要求每個節點對所有數據進行驗證。通過使用一套壓縮技巧可以非常有效地實現這一點。這就是rollups。
聲音 | V神:人們對Peter Schiff比特幣錢包被盜的評論,讓我感到悲哀:關于美國知名證券經紀人 Peter Schiff 比特幣錢包被盜并抨擊比特幣沒有價值的行為,不少人在 Twitter 上發表了評論,有人認為是 Peter 自己的問題,也有人認為是行業問題。
對此,以太坊創始人V神表示,有些評論說加密貨幣就是這樣的,用戶自己要記好自己私鑰,多備份幾次。看到這些評論很悲哀,我們應該打造一些更好用的錢包,而不是需要用戶自己增加安全性。[2020/1/20]
2.可擴展的數據可用性驗證要更加困難
欺詐證明不能用于驗證數據的可用性。計算的欺詐證明依賴于這樣一個事實,即計算的輸入在最初的證明被提交的那一刻就發布在鏈上,因此如果有人發起挑戰,那么挑戰的執行與最初證明的執行是完全發生在同一個“環境”中的。但在檢查數據可用性時,你不能這么做,因為問題恰恰在于,有太多的數據需要檢查,不能全部發布到鏈上。因此,針對數據可用性的欺詐證明方案遇到了一個關鍵問題:某人可以聲稱“數據X是可用的”而不公布該數據,等待被挑戰,然后才會在鏈上公布數據X,從而使發起挑戰者被網絡上的其它人視為不正確。
這在「漁夫的困境」中到了進一步的闡述:
「漁夫的困境」的核心概念是存在兩個“世界”:一個世界中,V1是個邪惡的數據發布者,V2是個誠實的挑戰者;另一個世界中,V1是個誠實的數據發布者,V2是個邪惡的挑戰者。對于當時沒有試圖下載這一特定數據的人來說,是無法對此進行區分的。當然,在一個可擴展的去中心化區塊鏈中,每個單獨的節點可以只下載一小部分數據,因此,除了存在分歧這一事實之外,只有一小部分節點可以看到發生了什么。
由于不可能區分誰對誰錯,因此不可能有一個有效的數據可用性欺詐證明方案。
常見問題:如果某些數據不可用怎么辦?通過ZK-SNARK,你就可以確定一切都是有效的,這還不夠嗎?
不幸的是,僅僅只有有效性是不足以確保正確運行區塊鏈的。這是因為,如果區塊鏈是有效的,但是所有的數據都是不可用的,那么用戶就沒有辦法更新他們所需的數據來生成用于驗證未來區塊的有效性的證明。如果一個攻擊者生成了一個有效但不可用的區塊,然后該攻擊者又消失了,那么他就可以有效地暫停這條鏈。某個人可能會劫持某個特定用戶的賬戶數據,直到該用戶支付贖金,所以這個問題并不純粹是區塊鏈活性問題。
有一些強有力的信息-理論觀點認為這個問題十分重大,沒有什么明智的方式來規避。詳情請參閱這篇文章:
https://eprint.iacr.org/2009/612.pdf
那么,如何在不下載的情況下檢查1MB數據是否可用呢?這聽起來不可能!
其中的關鍵是一種稱為數據可用性抽樣(dataavailabilitysampling)的技術。數據可用性抽樣的工作方式如下:
使用一種叫做糾刪碼(erasurecoding)的工具,將一段包含N個數據塊的數據擴展成一段包含2N個數據塊的數據,這樣,其中任意N個數據塊都可以恢復整個數據。
聲音 | V神:2019年以太坊發展速度已變快 經過磨練團隊已達到最高生產力水平:據區塊鏈大本營6月15日消息,近日,V神在接受其采訪時表示,2018年以太坊開發速度很慢,針對2018年以太坊生態發展,社區受到批評肯定有一定道理,但最近以太坊開發速度已變快,許多開發人員都在研究以太坊2.0技術規范以及 Plasma、狀態通道(State Channels)和 SNARKs/STARKs 等 Layer 2 擴容解決方案。2018年,以太坊基金會采取了許多措施來提高整體發展速度,在經歷了漫長的磨練后,如今各團隊都達到了最高的生產力水平。
同時V神表示,以太坊目前最大的挑戰在可擴展性和共識算法這兩個層面。目前可通過 PoS 共識算法和 Sharding(分片)重新設計平臺的安全性和可擴展性。針對PoW向PoS 遷移能否如期上線并避免分叉的問題,V神稱,正在采取一種緩慢過渡到PoS的方法,即最開始作為一個獨立的系統,一段時間后(階段2期間)再逐漸從PoW轉向PoS,但完全過渡到PoS仍需要一個硬分叉。當然希望PoS鏈的安全性風險會降低,但隨時間的推移,相信它會逐漸證明自己。[2019/6/15]
為了檢查數據的可用性,無需下載整個數據,用戶只是簡單地在該區塊中隨機選擇一個固定數量的位置(比如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的校審。
在過去一周,在以太坊的帶領下,各種山寨幣都出現了可觀的漲幅,沉寂許久的比特幣最終也迎來了價格上修。不過現貨市場的上漲沒能改變波動率的下降趨勢.
1900/1/1 0:00:00智能合約的概念最早由知名學者NickSzabo在上世紀90年代提出。他在公開發表的多篇文章中提到了智能合約的概念,將其定義為:“一個智能合約是一套以數字形式定義的承諾,包括合約參與方可以在上面執.
1900/1/1 0:00:00不得不說,比特礦業正在朝著一個全新的轉型發展方向全速前進,而這個方向就是——加密數字貨幣挖礦。多年以后,面對礦業格局,比特礦業將會回想起2021年4月5日所做出那個具有遠見的決定——收購蜜蜂礦機.
1900/1/1 0:00:00歷史性一刻,雙新高。 截至發稿,比特幣價格62965.88美元,以太坊報價2222.35美元,雙雙創下歷史最高紀錄.
1900/1/1 0:00:00了解DEX和AMM創新的三個主要領域及最有前途的實現。近日,知名加密研究機構Messari發布了一篇社區投稿,作者系加密貨幣對沖基金GammaPointCapital執行合伙人RahulRai,
1900/1/1 0:00:00近年來,世界各國高度重視央行數字貨幣的發展。本文概述了央行數字貨幣在數字經濟未來發展中的重要地位,并從全球化視角闡述了央行數字貨幣的設計思路和最佳實踐.
1900/1/1 0:00:00