區(qū)塊鏈分片設(shè)計框架

1. 概述

????????將網(wǎng)絡(luò)的整個狀態(tài)分割成一系列被稱為分片的分區(qū),其中包含自己獨立的狀態(tài)片及交易歷史記錄。

解決的問題:

(1) 網(wǎng)絡(luò)分片

????????利用隨機性將區(qū)塊鏈網(wǎng)絡(luò)中的各個節(jié)點分割成若干個小網(wǎng)絡(luò),每一個小網(wǎng)絡(luò)即是一個分片,這也是分片技術(shù)的第一步。

(2) 交易分片

????????在進(jìn)行網(wǎng)絡(luò)分片后,根據(jù)網(wǎng)絡(luò)內(nèi)的每一筆交易的獨特標(biāo)識(例如哈希值)來決定這筆交易由哪個分片來處理。

(3) 狀態(tài)分片

????????在一個狀態(tài)分片的區(qū)塊鏈網(wǎng)絡(luò)中,某一個特定的分片只會保留一部分交易數(shù)據(jù),而并非全網(wǎng)所有的交易數(shù)據(jù)。


2. 需要考慮的問題[2]

1.?????跨分片通信- 如何安全地增加跨分片通信。

2.? ? ?單分片接管攻擊- 在一個分片中攻擊者接管了大多數(shù)協(xié)調(diào)者

3.?????欺詐檢測-節(jié)點如何能夠得知一個無效的排序規(guī)則,以便它們可以驗證欺詐行為并且確認(rèn)是欺詐行為之后拒絕這個排序規(guī)則?

4.?????數(shù)據(jù)可用性問題- 由于某種特定的原因,一些特定的分片遭到了攻擊而導(dǎo)致其脫機。由于分片并沒有復(fù)制系統(tǒng)的全部狀態(tài),所以網(wǎng)絡(luò)不能再驗證那些依賴于脫機分片的交易。

????????解決此問題的方法是維護(hù)存檔或進(jìn)行節(jié)點備份,這樣就能幫助系統(tǒng)進(jìn)行故障修復(fù)以及恢復(fù)那些不可用的數(shù)據(jù)。但是,這樣就使得一些節(jié)點將不得不存儲系統(tǒng)的整個狀態(tài),同時這還會引發(fā)一些中心化的風(fēng)險。

5.?????火車旅館問題-? 假設(shè)用戶想要購買一張火車票預(yù)訂一家旅館,并且想要確保這個操作是原子的。如果兩者在不同的分片上,如何保證來自于跨分片的消息可以在固定的周期內(nèi)被包含在另外的分片中。

6.?????隨機數(shù)產(chǎn)生- A.確定性門限簽名方法是另一種不被少數(shù)群體聯(lián)盟利用的隨機數(shù)生成方式。B.使用區(qū)塊的哈希作為隨機種子。C. others

7.? ? ?用戶端保存狀態(tài)- 無狀態(tài)客戶端: 不存儲整個狀態(tài)樹,只存儲狀態(tài)樹根。

8.? ? ?分叉選擇規(guī)則- 發(fā)生分叉的選擇規(guī)則


3. 以太坊

3.1 共識機制

????????由于POW共識會導(dǎo)致算力分散,容易出現(xiàn)單分片接管。以太坊選擇了POS共識作為分片后的共識。但是POS存在兩個問題:

1.? ? ? 無利害攻擊問題

????????早期的Pos機制下,只考慮到獎勵,沒有對應(yīng)的懲罰機制,產(chǎn)塊者傾向于兩個分支都添加,因為它不用付出額外的代價,但是增加了收益概率。

2.? ? ? 遠(yuǎn)程攻擊問題

????????某個時刻,網(wǎng)絡(luò)中的大多數(shù)人從一個歷史久遠(yuǎn)的塊開始分叉。

????????基于上訴兩個問題,以太坊設(shè)計了Casper共識[4]。Casper是一種基于保證金的經(jīng)濟激勵共識協(xié)議,必須先繳納保證金才可以參與出塊和共識形成,一個驗證人作出了任何Casper認(rèn)為“無效”的事情,他的保證金將被罰沒,出塊和參與共識的權(quán)利也會被取消。

????????投注共識:驗證人對每一個高度上的每一個候選塊獨立下注,給每個塊指定一個勝出概率并公布。驗證人中的絕大多數(shù)以非常高的概率下注某個塊時,任何不包含這個塊的分叉都不可能勝出,此時我們說這個塊已最終確認(rèn)。

具體細(xì)節(jié)不展開


3.2??設(shè)計框架

以太坊分片架構(gòu)

1)? Main chain 主鏈

????????以太坊2.0的初始部署階段,是不需要對PoW鏈進(jìn)行共識更改的。相反的是,我們會向PoW鏈添加一個注冊合約,以存入ETH。這個注冊合約會通過beacon鏈發(fā)出一個帶有各種參數(shù)的日志。它不會進(jìn)行驗證,而是把注冊邏輯發(fā)送給beacon鏈。

2)? Beacon chain 信標(biāo)鏈

Beacon鏈?zhǔn)荘oS系統(tǒng)的“主鏈”,beacon鏈的主要職責(zé)是:

1. 存儲并維護(hù)活躍、列隊等待以及退出驗證者的集合;

2. 處理交聯(lián)(交聯(lián)是beacon鏈“了解”分片鏈更新狀態(tài)的主要手段);

3. 處理逐塊一致性,以及finality gadget;

4. 為每個分片指定所選的區(qū)塊提議者;

5. 組織驗證者進(jìn)入委員會,對擬議的區(qū)塊進(jìn)行投票;

6. 用共識規(guī)則對驗證者實施獎勵和處罰;

7. 作為一個錨點,其中分片會注冊它們的狀態(tài),以促進(jìn)跨分片交易;

????????成為驗證者的唯一機制,是往以太坊PoW主鏈發(fā)送一筆包含32 ETH 的交易至一個注冊合約。

????????在注冊器合約內(nèi)質(zhì)押的是 PoW 以太,獲得的收據(jù)可以“創(chuàng)造”出PoS 以太。因為注冊器合約無法撤銷,所以 PoS 以太不能轉(zhuǎn)回 PoW 以太,并且只有在驗證者退出系統(tǒng)之時才能被退回到一個分片地址,而且 PoS 以太(在初期階段)是不能交易的。雙生以太并行的狀況不會持續(xù)太久,除非發(fā)生以下情況[3]:

1. 狀態(tài)轉(zhuǎn)換即將實現(xiàn),參與者可以選擇撤銷注冊器合約,PoS 以太可以轉(zhuǎn)換成等價值的 PoW 以太。

2. PoW 鏈變成一個分片或者存儲合約,PoW 以太會被逐漸淘汰,并在匹配地址上自動轉(zhuǎn)換為 PoS 以太(向后兼容)。

3)? Shard chain 分片鏈

????????分片鏈只有一小部分的證明必須記錄在主鏈上。 分片鏈上的交易處于自己獨立的空間中,分片驗證人只需要驗證他們所關(guān)注的分片。 分片鏈也通過 POS 機制依附于主鏈,以獲得更高層次的共識(higher level ofconsensus)。

????????跨分片通信。利用 UTXO 模型,并通過在主鏈上進(jìn)行交易和創(chuàng)建一個receipt,用戶可以將以太存入一個指定分片。分片鏈上的用戶可以給定 receipt ID 創(chuàng)建一個消費 receipt的交易,來花費該 receipt。


3.1 細(xì)節(jié)補充

1) 節(jié)點類型:

A. Proposer

????????Proposer是交易池的維護(hù)者。負(fù)責(zé)為proposal(collation

header)做準(zhǔn)備而收集交易,并負(fù)責(zé)廣播collation body。任何人都可以成為proposer。

B. Collator

????????Collator是由為隨機函數(shù)選出的合法collator,其身份的合法性只在指定時間段和指定分片內(nèi)有效。它的主要作用就是collates the proposal以建立collation。Collator從所有分片的collator pool中選出。

C. Executor

????????Executor執(zhí)行狀態(tài)交易函數(shù)。其實proposer也應(yīng)該是executor,都是擁有獲取交易所花費gas和選擇高手續(xù)費的交易等能力的身份。

?

2) 交易的執(zhí)行流程

交易執(zhí)行流程

? ? ? ? 以太坊主鏈每個時間段新生成的區(qū)塊,都會將在此時間點之前的五個區(qū)塊打包在內(nèi)。這也被成為“LookAhead”。每個validator都會借由LookAhead來確認(rèn)在未來他們將負(fù)責(zé)驗證的是哪個分片。也就是驗證者是先得知會被劃分到哪個分片的。在指定時間段內(nèi),每個區(qū)塊的驗證者都會面臨新一輪的隨機選擇(共5個區(qū)塊,共五個validator)。當(dāng)?shù)竭_(dá)主鏈出塊時間,所有validator都會將已校驗的交易發(fā)送到交易池中。檢驗發(fā)起者需要向交驗者支付激勵。交驗者下載潛在的分片提案。驗證者驗證數(shù)據(jù)的有效性,并挑選當(dāng)前分片中最新區(qū)塊,然后將collation header提交給主鏈。由礦工負(fù)責(zé)挖礦生成新的主鏈的區(qū)塊。


SMC框架

????????可以簡單地這么認(rèn)為,分片中的交易都會被裝入“校對塊” (collation)。 與側(cè)鏈類似,校對器(collator)只有一小部分會被記錄到主鏈

????????以太坊2.0將以太網(wǎng)絡(luò)分為兩層,上層為現(xiàn)有的以太坊(也叫主鏈),基本保持不變;下層為各個分片,他們相互獨立,擁有不同的賬戶空間。各個分片延生屬于自己的鏈,并將最新區(qū)塊頭發(fā)給主鏈。主鏈?zhǔn)占鱾€分片的區(qū)塊頭,然后生成主鏈區(qū)塊。值得注意的是,在主鏈上只保存各個分片的區(qū)塊頭,具體交易并不在主鏈上保存。


分片鏈與主鏈

4. Zilliqa[5]

????????Zilliqa通過Pow算法完成網(wǎng)絡(luò)節(jié)點的劃分過程:選出1個Boss分片和多個工作分片,每個分片有不低于600個節(jié)點。其設(shè)計思想來源于谷歌提出的Map-reduce編程模型的思想。

????????1) Map:網(wǎng)絡(luò)上的每一筆交易會根據(jù)發(fā)送者的地址被映射到工作分片中,工作分片通過pBFT共識算法在各自的分片當(dāng)中驗證交易,最終形成當(dāng)前工作分片中的子區(qū)塊。

????????2)Reduce(Merge):工作分片將子區(qū)塊發(fā)送到Boss分片,Boss分片將多個子區(qū)塊進(jìn)行驗證、打包,合并生成最終區(qū)塊,保存在各個節(jié)點當(dāng)中。

????????在Zilliqa的設(shè)計中,每600-800個節(jié)點就會被分配為一個網(wǎng)絡(luò)分片,而由多個分片形成的并行網(wǎng)絡(luò)就是分片網(wǎng)絡(luò)。通過多重簽名協(xié)議讓PBTF共識更高效,理論上在pBTF共識下,只有分片數(shù)量小于50個節(jié)點的時候,它的效率才能達(dá)到最佳。通過多重簽名優(yōu)化和壓縮通信的次數(shù)和數(shù)據(jù)的大小,而從達(dá)到優(yōu)化通信成本的目的。

????????節(jié)點通過pow驗證的方式才準(zhǔn)許其節(jié)點進(jìn)入網(wǎng)絡(luò),PoW來防止女巫節(jié)點攻擊、確認(rèn)節(jié)點身份并隨機進(jìn)行分片。參與共識協(xié)議的每個礦工都可以獲得對應(yīng)的獎勵。每個節(jié)點依然保持所有歷史記錄,并沒有解決存儲空間的擴展性問題。

5.?QuarkChain

????????QuarkChain由兩層區(qū)塊鏈結(jié)構(gòu)組成,第一層為分片層(可以理解為子鏈層),用于交易記賬;第二層為一條根鏈,用于確認(rèn)分片中的交易。在不影響根鏈的情況下,分片層的分片數(shù)量可以動態(tài)增加,從而來提高系統(tǒng)的整體吞吐量。


????????QuarkChain的分片技術(shù)沒有采取任何的隨機機制來合理分配分片上的節(jié)點,因此安全性方面存在潛在的隱患。跨分片交易過多,或者網(wǎng)絡(luò)中存在大量的跨分片交易,QuarkChain 網(wǎng)絡(luò)中的吞吐量也會下降。

QuarkChain中跨分片交易的流程分為三步:

????????① 發(fā)送方所屬分片內(nèi)記錄交易信息,分片內(nèi)打包成小塊,10秒一個區(qū)塊

????????② 發(fā)送方所屬分片提交區(qū)塊信息到根鏈,60秒一個區(qū)塊。

????????③ 根鏈確認(rèn)之后接收方分片進(jìn)行同步信息,10秒一個區(qū)塊。

????????QuarkChain上采用了分片和根鏈層的協(xié)同挖礦,協(xié)同挖礦的目標(biāo)是通過激勵機制和難度算法使得算力能均勻的分配到網(wǎng)絡(luò)上。在實際的區(qū)塊鏈網(wǎng)絡(luò)和pow共識機制中,僅靠難度算法和激勵機制并不能完全杜絕礦工聯(lián)合作惡的問題,而QuarkChain在此問題上沒有提供更好的解決方案。

????????QuarkChain提供了一個簡單的賬戶管理系統(tǒng)。用戶只需要一個帳戶即可管理所有分片上的地址。在QuarkChain的設(shè)計中,每個分片中都會存在著一個賬戶的地址,其中一個擁有私鑰的帳戶可以在任何分片上執(zhí)行交易。實質(zhì)上當(dāng)一個用戶在沒有余額的分片上進(jìn)行交易時,首先需要由擁有余額的分片賬戶轉(zhuǎn)到目標(biāo)賬戶,然后用戶才能進(jìn)一步進(jìn)行操作。根本的結(jié)構(gòu)上還是需要對不同分片上的地址進(jìn)行跨分片交易才能做到金額調(diào)動。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容