以太坊擴(kuò)容問(wèn)題與分片(sharding)解決方案區(qū)塊鏈
以太坊擴(kuò)容問(wèn)題與分片(sharding)解決方案
區(qū)塊鏈擴(kuò)容所面臨的問(wèn)題有很多:
1. 交易數(shù)量陡增。例如一些獨(dú)角獸和以太貓。
2. 現(xiàn)在產(chǎn)生區(qū)塊的過(guò)程,擴(kuò)容性受到限制。區(qū)塊中的gas limit,使得區(qū)塊的計(jì)算能夠受到限制。但是提高gas limit或者過(guò)多地減少區(qū)塊時(shí)間,都會(huì)導(dǎo)致過(guò)高的等待時(shí)間,并且降低網(wǎng)絡(luò)抵抗攻擊的能力。
3. 缺乏并行性(parallelizability)。首先,現(xiàn)有的以太坊虛擬機(jī)是線性處理交易。其次,每個(gè)全節(jié)點(diǎn)都要處理每個(gè)轉(zhuǎn)賬,然后把整個(gè)狀態(tài)樹(shù)都存儲(chǔ),從而確保安全性和去中心化。
為了解決擴(kuò)容問(wèn)題,分片技術(shù)通過(guò)進(jìn)行鏈上狀態(tài)分區(qū),可以獲得更高的吞吐量。
技術(shù)方法
首先,我們需要了解區(qū)分主鏈和分片鏈上的一些專業(yè)術(shù)語(yǔ):
你可以很容易地看出,轉(zhuǎn)賬應(yīng)該都整合在一組“校對(duì)”里面;就和一個(gè)區(qū)塊類似,這組校對(duì)也指向它鏈上的主校對(duì),這就是我們要談?wù)摰姆制?。成為“校?duì)器”意味著有資格來(lái)在權(quán)益證明的分片鏈上提出新的校對(duì)。
基礎(chǔ)二次分片
分片鏈的共識(shí)取決于主鏈
和側(cè)鏈技術(shù)類似,只有很少部分的驗(yàn)證需要記錄在主鏈上,這也是我們想要擴(kuò)容區(qū)塊鏈的基本方案:(i)分片鏈有他們自己的轉(zhuǎn)賬方式,分片的驗(yàn)證者只需要驗(yàn)證他們?cè)谟^察的分片;(ii)分片鏈仍然追蹤主鏈,來(lái)通過(guò)權(quán)益證明機(jī)制來(lái)獲得更高層次的共識(shí)。
驗(yàn)證者管理合約(VMC)
為了加入主鏈上的分片鏈,就需要在主鏈上增加特殊的合約,被稱為驗(yàn)證者管理合約(VMC)。VMC是這個(gè)分片機(jī)制的核心; VMC的目標(biāo)可以看作如下:
1. 權(quán)益證明系統(tǒng)。如果驗(yàn)證者做出欺詐,他們的抵押就會(huì)被沒(méi)收。
2. 偽隨機(jī)抽樣。通過(guò)將最近的區(qū)塊哈希值作為起源,來(lái)選擇合適的校驗(yàn)者?;旧蟻?lái)說(shuō),驗(yàn)證者會(huì)將他們的權(quán)益抵押放入VMC,然后他們的驗(yàn)證代碼地址就會(huì)在VMC內(nèi)部的通用驗(yàn)證者池列表中記錄。一個(gè)分片鏈的驗(yàn)證者會(huì)從驗(yàn)證者池列表中被抽樣,然后成為特定時(shí)間段(正如下面解釋的那樣),特定分片的校驗(yàn)者。這個(gè)想法是為了讓驗(yàn)證者不能預(yù)測(cè)他們何時(shí)會(huì)成為校驗(yàn)者,以及他們會(huì)成為哪些分片的驗(yàn)證者。
3. 校驗(yàn)頭部驗(yàn)證。VMC包含addHeader(bytes collationHeader) 函數(shù),用來(lái)驗(yàn)證校驗(yàn)頭部,同時(shí)也為有效的校驗(yàn)頭部哈希寫下記錄。這個(gè)函數(shù)會(huì)立刻提供鏈上驗(yàn)證。
4. 跨分片通信。通過(guò)使用UTXO模型,用戶可以將以太幣通過(guò)轉(zhuǎn)賬調(diào)用存入特定的分片,并且在主鏈上創(chuàng)建回執(zhí)(帶有回執(zhí)ID)。分片鏈的用戶可以通過(guò)給定的回執(zhí)ID創(chuàng)建消耗回執(zhí)的轉(zhuǎn)賬,從而發(fā)出這個(gè)回執(zhí)。
5. 鏈上治理。通過(guò)讓VMC作為國(guó)會(huì)。它能讓驗(yàn)證者在鏈上進(jìn)行投票。
如何在分片中提出校驗(yàn)?
VMC會(huì)維護(hù)100個(gè)分片(SHARD_COUNT = 100)。每個(gè)分片都會(huì)同步處理轉(zhuǎn)賬,而且分片i的客戶端只需要驗(yàn)證分片i上的轉(zhuǎn)賬?!皶r(shí)間段”是通過(guò)區(qū)塊時(shí)間窗口來(lái)定義的,例如PERIOD_LENGTH = 5 表示這個(gè)時(shí)間段有5個(gè)區(qū)塊產(chǎn)生。這會(huì)在每個(gè)時(shí)間段進(jìn)行說(shuō)明,對(duì)于每個(gè)分片,只能少于或等于1個(gè)有效校正。
一旦驗(yàn)證者選出來(lái)成為校驗(yàn)者,并且提出新的校驗(yàn),那么這個(gè)校驗(yàn)者就必須要驗(yàn)證近期的校驗(yàn),同時(shí)發(fā)出轉(zhuǎn)賬,調(diào)用addHeader 函數(shù)。需要注意地是,如果校驗(yàn)者在第10階段被選出來(lái)進(jìn)行新的校驗(yàn),這意味著addHeader 轉(zhuǎn)賬就必須要包含在階段10,也就是說(shuō),區(qū)塊數(shù)10 * PERIOD_LENGTH to block number (10 1) * PERIOD_LENGTH?—?1.
校驗(yàn)的頭部哈希必須要記錄在VMC上,從而證明它的頭部是有效的。而且,分片的其他驗(yàn)證者必須要時(shí)刻地觀察VMC,從而獲得最新的狀態(tài)。然后驗(yàn)證是否這些轉(zhuǎn)賬是有效的。
分片鏈的分叉原則
在基本的分片技術(shù)中,分叉選擇準(zhǔn)則取決于最長(zhǎng)的主鏈。給定分片的有效頭部并不是簡(jiǎn)單地“最長(zhǎng)有效分片鏈”的頭部校驗(yàn),而是“所有最長(zhǎng)有效主鏈中的最長(zhǎng)有效分片鏈”。
下圖的例子中,主鏈有兩次硬分叉,而且第二個(gè)鏈在下圖中是最長(zhǎng)的有效主鏈。因?yàn)?block B3是頭部區(qū)塊,很容易就可以看到審查C3是頭部審核。
然后block B3′就會(huì)到下圖中的流程。假設(shè)現(xiàn)在block B3 的得分是比 block B3′的分?jǐn)?shù)高,所以上面的鏈仍然是最長(zhǎng)的主鏈:
最后,block 4 就會(huì)到下圖的流程。需要注意地是,在這個(gè)分片中,collation C3就比collation C2的分?jǐn)?shù)更高,但是下面的鏈?zhǔn)亲铋L(zhǎng)的有效主鏈,所以collation C2 就是現(xiàn)在的頭部審核:
在擴(kuò)容性和安全性之間找到平衡
區(qū)塊鏈系統(tǒng)只能至多有以下3個(gè)特性中的2個(gè):去中心化,擴(kuò)容性和安全性。
分片其中一個(gè)重要的機(jī)制,就是如何在鏈上產(chǎn)生隨機(jī)性。
-被選為審核者的概率應(yīng)該只是相對(duì)的,并且和驗(yàn)證者的資金存入成正比。
-如果驗(yàn)證者可以預(yù)測(cè)或者選擇他們要參加的分片,那么最不誠(chéng)信的驗(yàn)證者就可以和其他人串通,并且開(kāi)始惡意攻擊。
如果抽樣過(guò)程不能有很高的隨機(jī)性,那么攻擊者就能開(kāi)始在分片中開(kāi)始1%的攻擊:如果有100個(gè)分片,攻擊者就可以專注于攻擊某個(gè)特定的分片,他們只需要1%的哈希力(PoW)/抵押(PoS)就可以控制整個(gè)分片。
區(qū)塊鏈分片的顯性最終確定性
顯性最終確定性vs 隱性最終確定性
首先,我必須要澄清分片機(jī)制應(yīng)該能夠應(yīng)用在工作量證明和權(quán)益證明的鏈上;盡管如此,例如Casper的顯性終結(jié)性會(huì)讓分片變的更強(qiáng)。
在通用的工作量證明鏈上,終結(jié)性是有概率的和隱性的;換句話說(shuō),盡管區(qū)塊已經(jīng)有了上千次確認(rèn),還是有可能去重寫這個(gè)鏈。相反地,使用權(quán)益證明的Casper FFG數(shù)字經(jīng)濟(jì)機(jī)制就會(huì)有顯性的終結(jié)性,也就是說(shuō)我們可以檢查在這個(gè)協(xié)議中,是否已經(jīng)是最后的結(jié)果。
對(duì)于協(xié)議內(nèi)的顯性終結(jié)性,其中也有一個(gè)經(jīng)濟(jì)風(fēng)險(xiǎn)。在2/3 1 and 1/3 1的時(shí)候,它會(huì)創(chuàng)造最理想的尺寸。相應(yīng)地,任何不在2/3 1 處進(jìn)行審查的節(jié)點(diǎn),就會(huì)變?yōu)?。
取決于主鏈的最終確定性
在普通的分片技術(shù)中,分片鏈和主鏈掛鉤。對(duì)于分片驗(yàn)證者而言,我們希望分片技術(shù),區(qū)塊鏈性能可以是單個(gè)鏈的100倍,因此這些100個(gè)分片的所有驗(yàn)證者都需要觀察VMC的狀態(tài),從而獲得正確有效的頭部審查。對(duì)于驗(yàn)證者來(lái)說(shuō),清楚地知道他們是審查者,這點(diǎn)很重要;對(duì)于普通用戶,如果我們應(yīng)用第2部分的跨分片轉(zhuǎn)賬,普通的用戶也需要取回在VMC上的存款信息(回執(zhí)ID)。顯性的結(jié)果會(huì)幫助降低主鏈和眾多分片鏈之間的不確定性。
顯性最終確定性可以幫助無(wú)狀態(tài)客戶端
無(wú)狀態(tài)客戶端是指不存儲(chǔ)整個(gè)狀態(tài)樹(shù)的客戶端,他們只存儲(chǔ)狀態(tài)樹(shù)根部的狀態(tài)。歸檔客戶端存儲(chǔ)全部的狀態(tài)樹(shù),并且提供審查所需要的Merkle樹(shù)分支。通過(guò)這些Merkle樹(shù)分支,無(wú)狀態(tài)客戶端能夠打造部分狀態(tài)樹(shù),而且驗(yàn)證審查。
一旦驗(yàn)證者被選出,整個(gè)過(guò)程就會(huì)開(kāi)始同步,并且開(kāi)始洗牌(也就是說(shuō),改變驗(yàn)證者觀察的分片,并且同步分片鏈)。通過(guò)無(wú)狀態(tài)客戶端機(jī)制,洗牌的花費(fèi)幾乎降為零,因?yàn)樗麄冎恍枰?yàn)證最近的審查(也就是說(shuō),那些分?jǐn)?shù)高的審查)來(lái)同步分片。
由于同步過(guò)程會(huì)快很多,無(wú)狀態(tài)客戶端模型會(huì)可以在每個(gè)審查之間進(jìn)行混洗。它不僅會(huì)減少存儲(chǔ)負(fù)擔(dān)和開(kāi)銷,而且也會(huì)讓這個(gè)系統(tǒng)更加安全,因?yàn)轭l繁采樣能夠獲得適應(yīng)性攻擊的抵抗能力。
雖然同步的費(fèi)用變得非常低,但是在某個(gè)時(shí)間段,無(wú)狀態(tài)的驗(yàn)證者仍然需要驗(yàn)證盡可能多的審查(collation),來(lái)確定他們會(huì)獲得最高分?jǐn)?shù)的有效審查(collation)。
Casper FFG 將會(huì)提供顯式最終確定性閾值after about 2.5 “epoch times”,也就是說(shuō),125 個(gè)區(qū)塊時(shí)間 。如果在再混洗期間,驗(yàn)證人能夠驗(yàn)證超過(guò) 125 / PERIOD_LENGTH = 25 collation,分片系統(tǒng)能夠從顯式最終確定性中受益,確信從現(xiàn)在起的前 25 個(gè) collation 可以最終確定。當(dāng)然了,如果在同步時(shí)有更多 collation 得到驗(yàn)證,就會(huì)更加安全。
結(jié)論
希望此文可以給大家一個(gè)關(guān)于目前以太坊分片設(shè)計(jì)的初步介紹,以及顯性的最終確定性是如何能夠讓分片機(jī)制獲得好處。
1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會(huì)明確標(biāo)注作者和來(lái)源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請(qǐng)轉(zhuǎn)載時(shí)務(wù)必注明文章作者和"來(lái)源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會(huì)經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。