分片(Sharding)是以太坊擴容的未來,它將是幫助以太坊生態系統支持每秒成千上萬筆交易的關鍵,并允許世界上大部分人以負擔得起的成本定期地使用該平臺。然而,分片也是以太坊生態系統和更廣泛的區塊鏈生態系統中更容易被誤解的概念之一。它指的是一組非常具體的具有特定屬性的想法,但它經常與那些具有非常不同且通常更弱的安全性屬性的技術混為一談。本文的目的是解釋分片提供了哪些特定的屬性,它與其他非分片技術的區別,以及分片系統為了實現這些屬性需要做出哪些權衡。
上圖:以太坊分片版本的一個描述。初始結構圖來自Hsiao-weiWang,由Quantstamp設計。
擴容的三難困境
描述分片的最佳方式,可以從形成和激發分片解決方案的問題開始:擴容的三難困境。
擴容的三難困境指出,區塊鏈嘗試擁有三個屬性,如果你堅持使用“簡單”的技術,你只能獲得這三個屬性中的兩個。這三個屬性分別是:
可擴展性:整個區塊鏈能夠處理的事務(transactions,也譯作“交易”)比單個普通節點(比如一臺消費型筆記本電腦)能夠驗證的事務要多。
去中心化:區塊鏈可以在不依賴于一小群大型中心化參與者的情況下運行。這通常理解為不應該對一組你無法通過一臺消費級電腦加入其中的節點有任何信任(或者甚至不應該假設多數節點將保持誠實);
安全性:區塊鏈能夠抵抗大量試圖攻擊它的參與節點。
現在我們來看看三種“簡單的解決方案”,這些解決方案只獲得了上述三個屬性中的兩個:
傳統區塊鏈——包括比特幣、PoS/分片之前的以太坊、萊特幣和其他類似的區塊鏈。這些區塊鏈依賴于每個參與者運行一個完整的節點來驗證每個事務(交易),因此這些區塊鏈具有去中心化和安全性,但沒有可擴展性。
高TPS的區塊鏈——包括DPoS家族,但也有許多其他的鏈。這些區塊鏈依賴于少量的節點(通常是10-100個)來維持節點之間的共識,用戶不得不信任這些節點中的大多數。這種鏈是可擴展的和安全的(基于上面的定義),但不是去中心化的。
多鏈生態系統——這指的是“橫向擴展”的一般概念,即讓不同的應用運行在不同的鏈上,并使用跨鏈通信協議使它們之間進行通信。這種生態系統是去中心化和可擴展的,但不安全,因為攻擊者只需要控制了這些鏈中的其中一條鏈的多數共識節點(通常是整個生態系統的<1%節點),就能攻破這條鏈,而且可能引發連鎖反應,對其他鏈上的應用造成很大的損害。
分片是一種讓你擁有所有這三大屬性的技術。一條使用分片技術的區塊鏈是:
可擴展的:它能夠處理比單個節點多得多的事務;
去中心化的:它能夠完全依靠消費型筆記本電腦來生存下去,而不依賴任何“超級節點”;
安全的:攻擊者無法用少量的資源攻擊系統的一小部分;而只能試圖控制和攻擊整條鏈。
V神:Medalla測試網時鐘Bug風險被夸大了:9月24日,V神發推與ETH Gas Station創始人互動時表示,以太坊2.0測試網Medalla時鐘Bug的風險被夸大了。ETH Gas Station創始人表示其運行了Medalla測試網的節點,也經歷了測試網的時鐘bug。在經歷時鐘bug前后幾個星期里,其Medalla驗證器一直在運行,沒有受到任何干擾或出現任何問題。與此同時他還表示,Medalla測試網對漏洞響應非常快,除了發生在測試網上以外,實際只會造成少量收入損失。而由于沒有真正的價值,驗證器們幾乎沒有動力更新和重啟。對此,V神回應稱,如果Medalla使用了為早期階段0設計的更新懲罰參數,那么他的Medalla節點現在已經恢復正常了。所以確實認為這些風險被夸大了。與此同時,此前8月消息,在時鐘bug發生后,Prysmatic Labs聯合創始人也曾表示,Medalla測試網“失敗”事件被嚴重夸大了,此次事件不會影響以太坊2.0主網發布時間。[2020/9/24]
本文的其余部分將描述分片區塊鏈如何做到這一點。
通過隨機抽樣進行分片
最容易理解的分片版本是通過隨機抽樣(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),且這種效果是我們認為從長遠來看,分片是擴展區塊鏈的最佳方式的關鍵原因。
V神:以太坊2.0需要很長時間 各方批評激發了改善工作:8月12日消息,推特網友Sabin P提問稱,可擴展性非常重要,這就是人們在ETH中等待多年的原因。今天的技術最終將成為絕對的未來,但是你不認為2.0會花費很多時間嗎?V神回復稱,是的,2.0需要很長時間。這就是為什么我很高興我們終于有了測試網,并且同時擁有其他擴展技術如rollups。此外他還稱,對以太坊肯定有批評,但我敢肯定,以太坊的人也知道其中絕大部分,這些批評激發了大家為改善局面所做的工作。[2020/8/12]
常見問題:分成100個委員會和分成100條獨立的鏈有什么不同?
有兩個關鍵區別:
隨機抽樣防止了攻擊者將他們的能力集中在某一個分片上。在一個有著100條多鏈的多鏈生態系統中,攻擊者只需要控制stake(質押金)總量的0.5%就可以造成破壞:他們可以集中對單條鏈發起51%攻擊;相比之下,在一個分片區塊鏈系統中,攻擊者必須控制近30-40%的stake總量才可能做出同樣的事情(換句話說,整條鏈有著共享的安全性)。當然,攻擊者可以等待好運氣,即通過隨機的方式讓他獲得單個分片的51%的控制權,即使該攻擊者所控制的stake數量不到整條鏈的stake總量的50%。如果攻擊者的質押量少于整條鏈質押總量的30%,那上述這種情況幾乎不可能發生。
緊密耦合:即便某個分片出現了一個非法區塊(badblock),整條區塊鏈可以通過重組來拋棄該區塊。在實施分片的區塊鏈中,存在一個社會契約(在本文檔后面的章節中,我們將描述一些從技術上強制執行該契約的方法),也即,即便某個分片中存在一個非法區塊,那整條區塊鏈也是不會接受的,應該在發現該非法區塊時會立即將之驅逐出去。從區塊鏈內的應用程序的角度來說,這確保了完美的安全性:合約A可以信賴合約B,因為如果合約B由于鏈上發生攻擊而出現不當行為,那么整個歷史記錄將被逆轉恢復,包括由于合約B中的故障導致合約A中發生的不當交易。
這兩個差異確保分片為應用程序創建了這樣一個環境,該環境保留著一個單鏈環境所擁有的關鍵安全屬性,而這是多鏈生態系統根本無法做到的。
使用更好的安全模型改進分片
比特幣圈中一個常見的說法,也是我完全同意的一個說法是,像比特幣(或以太坊)這樣的區塊鏈并不完全依賴于「誠實大多數的假設」。如果對這樣的區塊鏈發起51%的攻擊,那么攻擊者可以做出一些令人討厭的事情,比如逆轉或審查交易,但他們不能添加無效的交易。而且,即使它們確實逆轉或審查交易,運行常規節點的用戶也可以很容易地檢測到這種行為,因此,如果社區希望通過一個削弱攻擊者算力的分叉來協調解決該攻擊,他們可以很快做到這一點。
缺乏這種額外的安全性正是那些更加中心化的高TPS區塊鏈的一個關鍵弱點。這樣的區塊鏈沒有,也不可能會有普通用戶運行節點的文化,因此其主要節點和生態參與者可以更容易地聚集起來,強制執行一項社區非常厭惡的協議更改。更糟糕的是,用戶的節點將默認接受這種更改。一段時間后,用戶會注意到這種更改,但到那時,這種強制的更改已經是一個既成事實:用戶將承擔拒絕這項更改帶來的協調負擔,他們將不得不做出痛苦的決定,逆轉每個人都認為已經被敲定的一天或更多的活動。
理想情況是,我們希望有一種分片形式,避免51%的信任假設,并保留傳統區塊鏈通過全網驗證獲得的強大安全保障。這正是我們在過去幾年里所做的研究。
V神:分叉期貨合約或為市場帶來不良影響:今日,推特用戶Benjamin Dean Mahala發推稱,“Defi的價格波動并不連續(也許更糟糕的是,無法確定的價格)。從這個方面來看,Defi從根本上來說是弱者,但沒有扎實的證據說明,價格不穩定一定是分叉引發的。如果可以事先對分叉進行廣告宣傳,人們就可以交易分叉期貨合約,并且可以在協議內部知道不同分叉期貨,分叉X /分叉Y的價格。人們可以主動響應,并且看到價格變化,提前平倉。”對此,V神回應:“我不認為分叉期貨市場是個好主意。一般而言,這是一種多重均衡機制,每個人都認為X有可能贏,然后X贏了,這滋養了歪曲、撒謊、嘩眾取眾等動機;不會為市場帶來良好的影響和動能。有些機制在設置上明顯更具有這種影響(為市場留有負面的影響),而分叉期貨合約明顯更具有這類影響力。”[2020/3/1]
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
聲音 | V神:可從獨立第三方的角度判斷區塊鏈項目是否是去中心化的:V神在推特中表示,看一個區塊鏈項目是否是去中心化的,一個簡單的點是看一個獨立的第三方能否成為其客戶,做任何“官方客戶”能做的事。[2018/7/22]
基于欺詐證明的計算是可擴展的,因為“在正常情況下”,你可以通過驗證單個簽名來代替運行復雜的計算。也有例外的情況,即由于有人發起了挑戰,你必須在鏈上驗證計算,但這種例外情況非常罕見,因為觸發這種情況的成本非常昂貴(最初的證明者或者發起挑戰者,其中一方將損失一大筆存款)。
ZK-SNAKRs在概念上更簡單--它們只是用更便宜的證明驗證代替了計算--但其工作原理背后的數學運算要復雜得多。
當前,有一類半擴展(semi-scalable)的Layer2系統,它僅僅以可擴展的方式(即使用欺詐證明或者ZK-SNARKs)驗證計算,同時仍然要求每個節點對所有數據進行驗證。通過使用一套壓縮技巧可以非常有效地實現這一點。這就是rollups。
2.可擴展的數據可用性驗證要更加困難
欺詐證明不能用于驗證數據的可用性。計算的欺詐證明依賴于這樣一個事實,即計算的輸入在最初的證明被提交的那一刻就發布在鏈上,因此如果有人發起挑戰,那么挑戰的執行與最初證明的執行是完全發生在同一個“環境”中的。但在檢查數據可用性時,你不能這么做,因為問題恰恰在于,有太多的數據需要檢查,不能全部發布到鏈上。因此,針對數據可用性的欺詐證明方案遇到了一個關鍵問題:某人可以聲稱“數據X是可用的”而不公布該數據,等待被挑戰,然后才會在鏈上公布數據X,從而使發起挑戰者被網絡上的其它人視為不正確。
這在「漁夫的困境」中到了進一步的闡述:
「漁夫的困境」的核心概念是存在兩個“世界”:一個世界中,V1是個邪惡的數據發布者,V2是個誠實的挑戰者;另一個世界中,V1是個誠實的數據發布者,V2是個邪惡的挑戰者。對于當時沒有試圖下載這一特定數據的人來說,是無法對此進行區分的。當然,在一個可擴展的去中心化區塊鏈中,每個單獨的節點可以只下載一小部分數據,因此,除了存在分歧這一事實之外,只有一小部分節點可以看到發生了什么。
由于不可能區分誰對誰錯,因此不可能有一個有效的數據可用性欺詐證明方案。
常見問題:如果某些數據不可用怎么辦?通過ZK-SNARK,你就可以確定一切都是有效的,這還不夠嗎?
不幸的是,僅僅只有有效性是不足以確保正確運行區塊鏈的。這是因為,如果區塊鏈是有效的,但是所有的數據都是不可用的,那么用戶就沒有辦法更新他們所需的數據來生成用于驗證未來區塊的有效性的證明。如果一個攻擊者生成了一個有效但不可用的區塊,然后該攻擊者又消失了,那么他就可以有效地暫停這條鏈。某個人可能會劫持某個特定用戶的賬戶數據,直到該用戶支付贖金,所以這個問題并不純粹是區塊鏈活性問題。
有一些強有力的信息-理論觀點認為這個問題十分重大,沒有什么明智的方式來規避。詳情請參閱這篇文章:
https://eprint.iacr.org/2009/612.pdf
V神:對區塊鏈支持的在線投票是“謹慎”而非“謹慎支持”:據V神最新消息,他指責一篇文章誤解了他對于區塊支持的在線投票技術的態度,他的態度是“謹慎”而非“謹慎支持”,并稱非常重要的是這種投票方式不能用于政府選舉。他6月6日發推稱,在線投票需要特別的私密性、安全性以及特殊的技術來實現,將這種投票機制強行與公共賬本結合只會適得其反。而一篇文章引用他的推特后,稱V神對于區塊鏈在線投票是持“謹慎支持”的態度。[2018/6/7]
那么,如何在不下載的情況下檢查1MB數據是否可用呢?這聽起來不可能!
其中的關鍵是一種稱為數據可用性抽樣(dataavailabilitysampling)的技術。數據可用性抽樣的工作方式如下:
使用一種叫做糾刪碼(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的校審。
頭條 ▌GalaxyDigital在美國提交比特幣ETF申請金色財經報道,加密投資公司GalaxyDigital今天在美國提交了比特幣ETF的申請,希望獲得美國證券交易委員會的批準.
1900/1/1 0:00:004月6日消息,資產管理公司CoinShares在瑞士SIX交易所推出一款萊特幣交易產品ETP。根據周二的公告,該ETP的上市代碼為LITE,每個單位的ETP將以0.20個LTC作為支持,該產品的.
1900/1/1 0:00:00有讀者問,隨著機構越來越多入場,比特幣、以太坊的價格越來越穩定、波動率越來越小,是否數字貨幣的牛市會變為慢牛?當我們談到波動率時.
1900/1/1 0:00:00平行鏈是Kusama和Polkadot可擴展多鏈架構的關鍵。Kusama作為Polkadot的先行測試網將率先推出平行鏈拍賣,以進行測試和優化,提前暴露問題,確保平行鏈上Polkadot主網的時.
1900/1/1 0:00:00在體育圈,用于收藏的紙質球星卡片賣出天價并不稀罕。曾開發過著名鏈游“加密貓”的公司DapperLabs將這套玩法搬上Flow公鏈,打造出NBATopShot平臺.
1900/1/1 0:00:00前兩天與?個MakerDAO早期?持者喝酒,?佬解答了我?個?直沒想明?的問題,?融機構的能?應該是創造信?,優化資?配置,但像MakerDAO這種超額質押,更接近于典當鋪的形式.
1900/1/1 0:00:00