
本文來自:CSDN本文來自:liuchengxu區塊鏈可擴展性問題
原文鏈接:
原文鏈接:https://medium.com/@icebearhww/ethereum-sharding-and-finality-65248951f649
區塊鏈可擴展性問題sharding doc .
區塊鏈可擴展性問題
區塊鏈可擴展性問題
區塊鏈可擴展性問題
區塊鏈可擴展性問題
不斷增長的交易。EIP 648 — Easy parallelizability
並行不足。首先,現有的EVM 按先後順序依次處理交易。其次,出於安全和去中心化的考慮,每個全節點會執行每一筆交易,並存儲整個(或修剪後)的狀態樹。
首先,讓我們來看一下在主鏈(你可以理解為現在的Mainnet chain)和分片鏈(shard chain)上不同層次的對象區別:
圖片描述
可以簡單地這麼認為,交易都會被裝入“collation”。與區塊類似,一個collation 也會指向它在鏈(指的是分片鏈)上的parent collation。成為一個“collator”,就意味著你有資格在POS 分片鏈上提名一個新的collation。
圖片描述
基本的二次分片
基本的二次分片
基本的二次分片
分片鏈的共識依賴於主鏈
分片鏈的共識依賴於主鏈
分片鏈上的交易處於自己獨立的空間中,分片驗證人(shard validator)只需要驗證他們所關注的分片。
分片鏈也通過POS 機制依附於主鏈,以獲得更高層次的共識(higher level of consensus)。
驗證人管理員合約(Validator Manager Contract, VMC)
驗證人管理員合約(Validator Manager Contract, VMC)
為了將分片鏈加入到主鏈中,在主鏈上需要有一個叫做驗證人管理員合約(VMC)的特殊合約。 VMC 是這個分片機制的核心。 VMC 的目的可以概括如下:
權益證明系統。如果驗證者表現不端,其權益將會被剝削。
偽隨機採樣。通過將當前塊哈希作為種子,採樣出合格的collator。基本上,驗證者將它們的保證金(stake)存入VMC,然後他們的驗證代碼地址(validation code address)將會被記錄在一個VMC 內部的全局驗證人列表(a global validators pool list)。系統將會從驗證人列表中採樣出一個分片鏈的驗證人,並將其指定為指定“時期(period,下面會解釋什麼是period)”內,指定分片的驗證人。這種方式使得驗證者無法提前預測他們何時會成為驗證者,也無法預測會成為哪個分片的驗證人。
跨分片通信(cross-shard communication)。利用UTXO 模型,並通過在主鏈上進行交易和創建一個receipt(帶有receipt ID),用戶可以將以太存入一個指定分片。分片鏈上的用戶可以給定receipt ID 創建一個消費receipt(receipt-consuming)的交易,來花費該receipt。
鏈上治理(on-chain governance)。將VMC 作為議會,使得驗證人可以在鏈上進行投票。
“時期(period)”被定義為一個區塊時間的準備窗口(a bounding a window of block times),比如PERIOD_LENGTH = 5 意味著每個週期有5 個塊。這表明在每個週期內,對於每個分片只有不超過1 個有效的collation。
圖片描述
一旦驗證人被採樣為合格的collator 來提案一個新的collation,collator 必須對最近的collation 進行驗證,並發送一筆交易來調用addHeader 函數。注意,如果collator 週期10 被採樣到提交一個新的collation,這意味著addHeader 交易必須被包含在周期10 裡面,也就是說,交易必須在區塊號10 * PERIOD_LENGTH 到區塊號(10 + 1) * PERIOD_LENGTH - 1 之間.
圖片描述
圖片描述
-圖片2(b). 對於一個片來說,一個period只有一個collation;一個區塊可以包含不同片的多個addHeader 交易-
collation header hash 必須被記錄在VMC 上,以證明它的header 全局有效。此外,分片的所有其他驗證人必須時刻檢測VMC 以獲得最新狀態,然後驗證交易是否也有效。
Figure 3(a) 中有個例子,主鏈上有兩個分叉,在下圖中第二條鍊是最長有效主鏈。因為block B3 是head block,很容易看出collation C3 是head collation。
圖片描述
然後Figure 3(b) 中block B3' 到了。假設block B3 的得分(score)高於block B3',那麼上面的鏈仍然是最長主鏈:
圖片描述
最後Figure 3(c) 到了block 4。注意到,對於這個分片,雖然collation C3 的得分比collation C2 更高,但是下方的鍊是最長有效主鏈,所有現在collation C2 是head collation:
圖片描述
更多內容:另一個設計-- Vlad Zamfir 的sharded fork choice rule
圖片描述
圖片描述
圖片描述
— Blockchain Trilemma in Sharding FAQ
-一個精巧的設計,保證區塊鏈可以在它們被最終化(finalized)之前原子化-3可擴展性與安全性之權衡
對於去中心化,可擴展性和安全性這三個屬性,區塊鏈系統最多只能三選其二。
出於對系統安全的保證導致了可擴展性受限
。當為了提高TPS(每秒交易數)將交易分配到各分片的同時,我們隨之也減少了每筆交易的計算資源。
如果驗證人能夠預測,或是任意選擇他們想要參與的分片,那麼不誠實的驗證人既可以相互共謀,展開一個適應性攻擊(adaptive attack)。控制分片.
-圖片4. 傳統的多數攻擊(51%攻擊)-
圖片描述
圖片描述
-圖片5. 分片上的1%攻擊-
分片的區塊鏈顯式最終確定性
隱式最終確定性vs 顯式最終確定性隱式最終確定性vs 顯式最終確定性首先,我必須聲明,分片機制應該同時能夠應用於POW 與POS 的鏈。即使如此,顯式最終確定性這個小物件也跟Casper 一樣,可以使得分片更加健壯。Casper the Friendly Finality Gadget (“FFG”)在一般的POW 鏈中,最終確定性是概率性,
隱式的
加密經濟機制應用於POS ,顯式地在協議內(in-protocol)強制保證對我們來說,是否是最終確定(we-can-check-if-its-finalized-for-us)。
[來自Vlad] 協議內顯式最終確定性閾值有個經濟風險:它在2/3 + 1 和1/3 + 1 之間創造了一個理想的卡特爾大小(cartel size)。相應地,任何不在2/3 + 1 同盟節點(coalition),其最終確定性的邊際貢獻就將為0。
主鏈最終確定性依賴
主鏈最終確定性依賴
對於分片驗證人,我們希望分片,區塊鏈容量在階段1 擴容100 倍,因此這100 個分片的所有驗證人,都將需要監測VMC 狀態來獲得正確有效的head collation。對於驗證人來說,重要的一點是,要盡快確信他們是否是collator。對於普通用戶而言,如果我們在階段2 應用跨分片交易,普通用戶也將需要在VMC 上檢索他們的保證金信息(receipt ID)。
顯式最終確定性,將會有助於緩解主鏈與大量分片鏈之間同步的不確定性。顯式最終確定性有助於無狀態客戶端 。
一旦完成驗證人採樣並再混洗(reshuffle),就會立刻觸發同步。有了無狀態客戶端機制,再混洗(也就是改變驗證者檢測的分片,並同步分片鏈)的成本低至(接近)0,因為它們只需要驗證最新的collation(也就是有著最高得分的collation)來同步分片。
圖片描述
圖片描述
圖片描述after about 2.5 “epoch times”-圖片6. 無狀態客戶端模型Figure 6. Stateless client model-因為同步過程可能非常快,無狀態客戶端模型就可能在每個collation 之間再混洗成。這不僅會減輕存儲壓力和開銷,也會使系統更安全,因為頻繁採樣能夠獲得適應性攻擊的抵抗能力。結束語
結束語
結束語
希望我已經對當前以太坊的分片設計概念作出了簡單介紹,以及顯式最終確定性如何有益於分片機制。如果想要深入了解協議設計,請訪問ETHResear.ch和sharding doc。
和
和