您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“區(qū)塊鏈的Layer2擴(kuò)展概念是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“區(qū)塊鏈的Layer2擴(kuò)展概念是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。
如果我們現(xiàn)在來問一個(gè)區(qū)塊鏈愛好者或者從業(yè)者:你認(rèn)為目前比較成熟的公鏈,比如比特幣和以太坊在技術(shù)上面臨的最大的問題是什么?我想大多數(shù)人的回答應(yīng)該都是類似的:交易確認(rèn)時(shí)間長(一個(gè)交易從發(fā)出到最終確認(rèn)所經(jīng)過的時(shí)間)、網(wǎng)絡(luò)擁堵嚴(yán)重(如果同一個(gè)時(shí)間產(chǎn)生的交易太多,有些交易無法被馬上處理)等等。這也就是通常意義上講的所謂“性能”問題。
對(duì)于目前基于區(qū)塊鏈架構(gòu)的公鏈平臺(tái)的所謂“性能”的評(píng)估,應(yīng)該考慮兩個(gè)方面。
被討論最多的就是所謂的 TPS(Transactions Per Second),這個(gè)維度衡量的是區(qū)塊鏈在單位時(shí)間內(nèi)所能處理的交易數(shù)量;我們近幾年最常提到的所謂“擴(kuò)容”指的就是這個(gè)維度。
如果把以太坊比做“世界計(jì)算機(jī)”,那么目前,它只能用單核(單線程)來進(jìn)行計(jì)算(同一時(shí)間只能有一個(gè)礦工來記賬,或者說只有一個(gè)礦工記的賬會(huì)被接受);而所謂“擴(kuò)容”可以想象為把這個(gè)“世界計(jì)算機(jī)”擴(kuò)展為多核(多線程),使它在單位時(shí)間內(nèi)可以同時(shí)運(yùn)行多個(gè)任務(wù)(同時(shí)有多個(gè)礦工在記賬,他們記的賬都可以被接受),最終反映為 TPS 的提高。這也就是所謂的 Layer1 擴(kuò)容。在以太坊里,指的就是現(xiàn)在已經(jīng)合二為一的 Casper + Sharding(我之前曾發(fā)過一篇 技術(shù)翻譯稿 來講解 Sharding 的原理,有興趣的讀者可以自行參考,這里不再展開了)。
但是在實(shí)際應(yīng)用中還有一個(gè)衡量性能的維度是不能忽視的,那就是“平均處理時(shí)間”。基于剛剛的比喻,在以太坊中,這個(gè)維度就相當(dāng)于這臺(tái)“世界計(jì)算機(jī)”的單核(單線程)處理能力。
我們假設(shè)某個(gè)基于以太坊智能合約的業(yè)務(wù)流程需要 5 個(gè)步驟(交易)才能完成,也就是說,我大概有個(gè)智能合約,這個(gè)合約會(huì)有 6 個(gè)狀態(tài):初始狀態(tài),狀態(tài)1,...,狀態(tài)4,最終狀態(tài)。那么要完成整個(gè)流程,就至少需要 5 個(gè)區(qū)塊時(shí)間(從初始狀態(tài)變?yōu)闋顟B(tài) 1,需要交易 1 來完成,以次類推,則至少需要 5 個(gè)交易才能把狀態(tài)變?yōu)樽罱K狀態(tài))。
很顯然,在這個(gè)例子里,區(qū)塊鏈性能的瓶頸就變成了“區(qū)塊時(shí)間”。(這是因?yàn)橹悄芎霞s本質(zhì)上就是一個(gè)可定制的狀態(tài)機(jī),如果它有 6 個(gè)單向變化的狀態(tài),那么必須經(jīng)過 5 次變化才能達(dá)到最終狀態(tài),所以 5 個(gè)交易是必須的。)而區(qū)塊時(shí)間是由公鏈協(xié)議所規(guī)定的,比如在比特幣里是 10 分鐘,在以太坊里現(xiàn)在大概是 16 秒,這是無法簡單縮減的;整個(gè)流程的 5 個(gè)區(qū)塊時(shí)間是最樂觀的估計(jì),也就是性能上限。那么我們?nèi)绾慰s短這個(gè)流程的執(zhí)行時(shí)間、降低“平均處理時(shí)間”呢?
這就是所謂的區(qū)塊鏈 Layer2 擴(kuò)展要解決的問題。而答案就是—— off-chain(這個(gè)詞的譯法大概還沒有共識(shí),我這里姑且譯為“脫鏈”,也就是不在主鏈上處理的意思)。
這種 off-chain 解決方案的思路是:我們可以把計(jì)算、交易等業(yè)務(wù)處理拿到主鏈之外來執(zhí)行,只在主鏈上反映最終的結(jié)果,中間過程不在主鏈做記錄。
這樣,在上邊例子里,我們要在主鏈上保存的狀態(tài)就是初始狀態(tài)和最終狀態(tài),中間過程的 4 個(gè)狀態(tài)變動(dòng)我們可以不關(guān)心,那對(duì)應(yīng)的 4 個(gè)交易就可以拿到“鏈外”去執(zhí)行;因?yàn)?off-chain 方案通常處理性能會(huì)非常高(后文中我會(huì)具體解釋技術(shù)方案的原理),很有可能在主鏈的一個(gè)區(qū)塊時(shí)間內(nèi)就處理完這 4 個(gè)交易,并將結(jié)果發(fā)送回主鏈(即達(dá)到最終狀態(tài));于是從結(jié)果來看,整個(gè)處理過程只經(jīng)過了一個(gè)區(qū)塊時(shí)間(也就是最終狀態(tài)的確認(rèn)交易)就完成了。
很明顯,如果采用這樣的方案,越復(fù)雜的流程得到的性能提升越大;比如一些有高交互性能需求的應(yīng)用——游戲。另外對(duì)于支付的場(chǎng)景,因?yàn)橄鄬?duì)高昂的交易手續(xù)費(fèi),那些高頻的小額交易從經(jīng)濟(jì)上講也顯然成本過高。所以無論是支付還是合約的應(yīng)用場(chǎng)景中,都有對(duì) Layer2 擴(kuò)展的強(qiáng)烈需求。
Off-chain 方案的總體思路是類似的:首先需要把主鏈上的部分“狀態(tài)”拿到鏈外來,可以本地存儲(chǔ)(基于某種客戶端)或者臨時(shí)存儲(chǔ);然后在鏈外做具體的操作,比如轉(zhuǎn)賬或者其他會(huì)影響“狀態(tài)”的處理;當(dāng)處理完成或者到達(dá)需要同步“狀態(tài)”的時(shí)間點(diǎn)時(shí),再把最終狀態(tài)傳回主鏈保存。
目前已經(jīng)成體系的 off-chain 技術(shù)方案大概可以分為兩大類:
狀態(tài)通道(State Channel):以比特幣的 Lightning Network [1] 和以太坊的 Raiden Network [2] 為代表
側(cè)鏈(Side-Chain):以以太坊的 Plasma [3] 協(xié)議為代表
我們首先來看看“狀態(tài)通道”。
狀態(tài)通道是一個(gè)臨時(shí)的點(diǎn)對(duì)點(diǎn)(交易的兩個(gè)參與者間)價(jià)值轉(zhuǎn)移通道:在開啟時(shí),通常會(huì)在主鏈上分別鎖定一定的余額,并設(shè)定一個(gè)有效時(shí)間,并可以由任意參與方主動(dòng)關(guān)閉,也就是參與方之間會(huì)基于特定的技術(shù)協(xié)議進(jìn)行數(shù)據(jù)交互、價(jià)值轉(zhuǎn)移(數(shù)字資產(chǎn)轉(zhuǎn)移);然后當(dāng)可以接入網(wǎng)絡(luò)、到達(dá)某個(gè)約定的時(shí)間點(diǎn)或者某方主動(dòng)向主鏈同步數(shù)據(jù)時(shí),會(huì)將最終結(jié)果提交到主鏈。
狀態(tài)通道主要解決的是前邊提到的高頻、小額支付這樣的場(chǎng)景中手續(xù)費(fèi)過高的問題,但它的局限也很明顯:
首先,它是一個(gè)臨時(shí)的通路,數(shù)據(jù)并不是永久存儲(chǔ)的,而是由參與雙方自己本地保存;如果某個(gè)參與者使用的設(shè)備出現(xiàn)故障,損失基本上無法避免(雖然絕對(duì)的經(jīng)濟(jì)損失大概并不會(huì)太高)。
其次,一個(gè)狀態(tài)通道僅能支持兩個(gè)用戶之間的價(jià)值轉(zhuǎn)移;當(dāng)系統(tǒng)中同時(shí)存在大量用戶間的狀態(tài)通道時(shí),實(shí)際上就構(gòu)成一個(gè)通道網(wǎng)絡(luò):網(wǎng)絡(luò)中的兩個(gè)用戶有交易需求的時(shí)候,并不是簡單地在他們兩點(diǎn)間創(chuàng)建新的通道,而是通過特定的路由(routing)算法來查找是否有可用路徑,而后再?zèng)Q定如何創(chuàng)建他們之間的數(shù)據(jù)通道;但這本身也增加了實(shí)現(xiàn)的難度和相應(yīng)的技術(shù)風(fēng)險(xiǎn)。
狀態(tài)通道網(wǎng)絡(luò)示意圖(取自 Raiden Network 網(wǎng)站)
上圖是一個(gè)狀態(tài)通道網(wǎng)絡(luò)示意圖。我們可以看到,如果 A 要向 C 進(jìn)行轉(zhuǎn)賬,可以通過 A -> B -> C 的路徑完成的(通過 A -> B -> E -> D -> C 的路徑也可以完成,但這通常會(huì)需要更多的網(wǎng)絡(luò)傳輸,所以并不是首選);而如果 D 要向 F 轉(zhuǎn)賬,則可以通過 D -> E -> B -> A -> F 或 D -> C -> B -> A -> F 的路徑完成。所以理論上說,如果某個(gè)節(jié)點(diǎn)與狀態(tài)通道網(wǎng)絡(luò)中的任意一個(gè)節(jié)點(diǎn)之間有通道,那么就不需要再創(chuàng)建新的通道,而可以通過路由算法找到對(duì)應(yīng)的路徑完成價(jià)值轉(zhuǎn)移。
當(dāng)然,狀態(tài)通道本身就是用來處理小額支付場(chǎng)景的,所以這些局限是可以接受的;即使出現(xiàn)不可恢復(fù)的故障,實(shí)際經(jīng)濟(jì)損失也不會(huì)過大。但這種技術(shù)本身顯然限制了擴(kuò)展的通用性和數(shù)據(jù)容量。
所以,可以進(jìn)行永久存儲(chǔ)、可以容納更多交易、可以擁有獨(dú)立的地址空間的所謂“側(cè)鏈(side-chain)”方案就應(yīng)運(yùn)而生了。
側(cè)鏈可以認(rèn)為是主鏈的分支,是可以獨(dú)立記賬、獨(dú)立增長的子區(qū)塊鏈,所以其中同樣會(huì)有記賬人(礦工)、有永久存儲(chǔ)機(jī)制和共識(shí)算法(因?yàn)閰⑴c側(cè)鏈記賬的通常會(huì)是實(shí)現(xiàn)了側(cè)鏈協(xié)議的多個(gè)節(jié)點(diǎn))。
下面我將基于以太坊的 Plasma 協(xié)議的思路來簡單介紹側(cè)鏈的實(shí)現(xiàn)方案。
對(duì)于側(cè)鏈來講,我們可以把它與主鏈的交互抽象為若干的“狀態(tài)遷移(State Transition)”:在側(cè)鏈產(chǎn)生時(shí),需要把若干“狀態(tài)”轉(zhuǎn)移到側(cè)鏈的“創(chuàng)世區(qū)塊”中,作為側(cè)鏈的“初始狀態(tài)”;在側(cè)鏈自己演進(jìn)的過程中,需要定期把側(cè)鏈的狀態(tài)變動(dòng)在主鏈進(jìn)行記錄,以便在發(fā)生爭議或者有用戶想“退出”側(cè)鏈時(shí)可以恢復(fù)相應(yīng)的狀態(tài)。
從應(yīng)用角度看,側(cè)鏈要解決的主要技術(shù)問題就是用戶如何“進(jìn)入”側(cè)鏈以及如何“退出”側(cè)鏈。
由于側(cè)鏈本身就是個(gè)區(qū)塊鏈,所以側(cè)鏈也可以擁有自己的地址空間;當(dāng)主鏈用戶“進(jìn)入”側(cè)鏈時(shí)就可以通過簡單的“地址映射”,將主鏈用戶的“狀態(tài)”——比如賬戶余額或者持有的數(shù)字資產(chǎn)(ERC20 或者 ERC721 Token)——全部或者部分轉(zhuǎn)移到側(cè)鏈地址上。
復(fù)雜的,當(dāng)然是“退出”機(jī)制。
當(dāng)一個(gè)用戶 A 想從側(cè)鏈“退出”的時(shí)候,他應(yīng)該要提出一個(gè)申請(qǐng),將自己在側(cè)鏈中的“狀態(tài)”變動(dòng)映射回主鏈。但因?yàn)橛脩粼趥?cè)鏈中的狀態(tài)變動(dòng)必然是因?yàn)榕c其他用戶進(jìn)行了交互(交易)才會(huì)發(fā)生的,所以這也將會(huì)影響其他用戶的“狀態(tài)”。因而,這需要一個(gè)爭議期,在這個(gè)期間內(nèi),如果側(cè)鏈的其他用戶對(duì)用戶 A 的退出狀態(tài)有異議,他們可以發(fā)起一個(gè)“爭議(dispute)“,提交他們自己所留存的“狀態(tài)”數(shù)據(jù),并提交“技術(shù)證明”(或者請(qǐng)求側(cè)鏈上的無利益沖突的第三方證明人提供“技術(shù)證明”,比如某個(gè)礦工或全節(jié)點(diǎn)提供的數(shù)據(jù)狀態(tài)證明);主鏈上的所謂“仲裁合約”就可以根據(jù)“技術(shù)證明”來自動(dòng)化地判斷誰的狀態(tài)變動(dòng)才是“合法”的,從而進(jìn)行最終在主鏈上的狀態(tài)更改。
這里只是一個(gè)極簡的描述,實(shí)際的技術(shù)方案比較復(fù)雜,限于文章篇幅,就不再展開了。
有興趣的讀者可以自行閱讀參考資料 [3]。 Plasma 協(xié)議定義了一套子鏈(側(cè)鏈)的實(shí)現(xiàn)協(xié)議,其中包括 5 個(gè)核心組件:
為了從經(jīng)濟(jì)上激勵(lì)側(cè)鏈本身的永久性存儲(chǔ)而設(shè)計(jì)的一個(gè)激勵(lì)層合約
為了最大化降低交易和結(jié)算成本而設(shè)計(jì)的樹狀結(jié)構(gòu)交易數(shù)據(jù)
與上述兩個(gè)組件相配合的基于 MapReduce 計(jì)算框架的狀態(tài)轉(zhuǎn)移欺詐驗(yàn)證機(jī)制
依賴于主鏈的某種側(cè)鏈內(nèi)部的共識(shí)算法
為最小化用戶退出成本而設(shè)計(jì)的一個(gè)用于狀態(tài)轉(zhuǎn)移的 bitmap-UTXO 技術(shù)證明機(jī)制
顯然,因?yàn)閭?cè)鏈本身是一個(gè)有永久性存儲(chǔ)的子區(qū)塊鏈,里邊同樣需要礦工來記賬,所以與普通公鏈類似的經(jīng)濟(jì)激勵(lì)機(jī)制、共識(shí)算法以及數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)就都是必然要考慮的東西。在側(cè)鏈中,通常為了達(dá)到更高的處理性能,會(huì)采用 PoS、DPoS 或者其他改進(jìn)算法,而不會(huì)采用 PoW 算法。同時(shí)還會(huì)在側(cè)鏈自己的經(jīng)濟(jì)模型中考慮對(duì)有欺詐行為的礦工的懲罰機(jī)制。
此外,因?yàn)閭?cè)鏈本身也是一個(gè)區(qū)塊鏈,所以在側(cè)鏈之上再創(chuàng)建側(cè)鏈,理論上也是可行的。這就相當(dāng)于提供了一種多層的、幾乎無限的擴(kuò)展方案。
看起來這是種“完美”的方案;但事實(shí)上并沒有“完美”的方案,Plasma 中也還有很多需要解決的問題。(可以在參考資料 [3] 的第 11 章找到相關(guān)論述,這里也不再展開了。)這也是社區(qū)和相關(guān)項(xiàng)目在努力研究的方向。
既然側(cè)鏈可以提供很高的“性能”,那么在側(cè)鏈上運(yùn)行智能合約自然就是一件極具吸引力的事了。
這里必須要提一個(gè)項(xiàng)目——Loom。Loom 是一個(gè)參考了 Minimal Viable Plasma [4] 構(gòu)建的側(cè)鏈開發(fā)框架,已經(jīng)在今年 6 月發(fā)布了其 SDK,使用它的 SDK 我們可以快速地創(chuàng)建自己的側(cè)鏈作為我們自己的 Dapp 的后端支撐。盡管這個(gè)框架目前來講功能還比較弱,但已經(jīng)是一個(gè)可用的選擇了。因?yàn)樗彩情_源的,所以對(duì)側(cè)鏈的具體實(shí)現(xiàn)也有很高的參考價(jià)值。此外就是 Celer 項(xiàng)目,這是一個(gè)通用的區(qū)塊鏈 Layer2 擴(kuò)展框架,有非常宏大的愿景;在狀態(tài)通道網(wǎng)絡(luò)的實(shí)現(xiàn)方案上也有自己的創(chuàng)新。不過我個(gè)人比較關(guān)心的還是它對(duì)側(cè)鏈的支持,這也還需要等待后續(xù)的工程進(jìn)展。
在 Plasma 中,為了簡化“狀態(tài)轉(zhuǎn)換”的驗(yàn)證,側(cè)鏈的數(shù)據(jù)模型使用了 UTXO 模型,而對(duì)賬戶余額變動(dòng)的驗(yàn)證則很自然地采用了所謂的“Merklized Proof”。但這樣的設(shè)計(jì)也對(duì)側(cè)鏈上的智能合約執(zhí)行框架提出了挑戰(zhàn)。
我們知道,智能合約本質(zhì)上是一個(gè)“狀態(tài)機(jī)”,所以,必須有永久性的存儲(chǔ)來保存其狀態(tài)數(shù)據(jù),也就是類似于以太坊中的“存儲(chǔ)樹(Storage Trie)”這樣的設(shè)計(jì)。所以如果在側(cè)鏈上運(yùn)行智能合約,也就同樣需要某種用來保存合約狀態(tài)的機(jī)制。
以太坊當(dāng)初選擇賬戶模型而不是 UTXO 模型的主要原因就是實(shí)現(xiàn)狀態(tài)機(jī)的難度問題;顯然,基于賬戶模型的狀態(tài)機(jī)更容易實(shí)現(xiàn),范式也更清晰。所以如何在基于 UTXO 模型的側(cè)鏈上實(shí)現(xiàn)智能合約運(yùn)行環(huán)境就有了很多可以研究和討論的東西。我們可以基于 UTXO 模型構(gòu)建狀態(tài)驗(yàn)證機(jī)制,問題是這個(gè)賬戶狀態(tài)(余額)變動(dòng)如果不是通過交易直接產(chǎn)生的,而是通過合約代碼產(chǎn)生的,那么如何證明這個(gè)改動(dòng)是“合法”的就成了側(cè)鏈在與主鏈間進(jìn)行狀態(tài)轉(zhuǎn)移時(shí)的驗(yàn)證機(jī)制的關(guān)鍵。
我們當(dāng)然希望有更多的項(xiàng)目能在這方面拿出可行的、可驗(yàn)證的方案,因?yàn)檫@將對(duì)側(cè)鏈技術(shù)的繼續(xù)發(fā)展產(chǎn)生深遠(yuǎn)的影響。
讀到這里,這篇“區(qū)塊鏈的Layer2擴(kuò)展概念是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。