題記
區(qū)塊鏈作為一種分布式賬本技術,可以被應用在金融、健康醫(yī)療、供應鏈、資產(chǎn)管理等諸多領域,但是受吞吐量、網(wǎng)絡孤立性、伸縮性等因素的制約,目前的區(qū)塊鏈項目并不能很好的服務于商業(yè)應用。在區(qū)塊鏈所面臨的諸多問題中,網(wǎng)絡孤立性阻礙了不同區(qū)塊鏈之間的協(xié)同操作,極大程度的限制了區(qū)塊鏈的發(fā)揮空間。
引言
跨鏈技術是解決不同區(qū)塊鏈間協(xié)同操作、實現(xiàn)價值互聯(lián)網(wǎng)的關鍵。簡單來說,跨鏈就是實現(xiàn)一個鏈到另一個鏈的通信協(xié)議。目前,本體跨鏈方案已經(jīng)在測試網(wǎng)運行。本文就本體跨鏈設計進行初步分析。
其它跨鏈技術簡析
介紹本體跨鏈設計之前,我們先比較一下幾個熱門的跨鏈解決方案的特色,分析一下它們是如何實現(xiàn)跨鏈的。
Plasma:以太坊中熱議的鏈下擴容方案 Plasma,它通過把交易轉(zhuǎn)移到更快擁堵更少的側(cè)鏈來提高其可擴展性。該方案不需要修改區(qū)塊鏈底層協(xié)議,而是通過復雜的工作轉(zhuǎn)移到鏈下完成,并在需要時將鏈下的計算結(jié)果提交到主鏈上保證其安全性。
Cosmos:Cosmos 則是 Tendermint 團隊開發(fā)的一個支持跨鏈交互的異構(gòu)網(wǎng)絡。網(wǎng)絡中第一個區(qū)塊鏈是Cosmos Hub,也就是 Cosmos 主網(wǎng),其他的并行鏈稱為Zone,Zone 通過 IBC 協(xié)議與 Hub 進行跨鏈操作。在 IBC 協(xié)議設計里,兩個鏈建立連接之前需要進行彼此注冊,并保存對方鏈驗證者集合以及相關 Merkle 證明,以證明跨鏈消息的正確性。同時,不同的 Hub 連接下的 Zone 也可以通過 Hub 路由的方式進行交互。
Polkadot:這是由原以太坊主要核心開發(fā)者Gavin Wood 推出的可伸縮性的異構(gòu)多鏈系統(tǒng),主要解決區(qū)塊鏈拓展性問題。在 Polkadot 看來,其它區(qū)塊鏈都是平行鏈,Polkadot 通過中繼鏈技術能夠?qū)⒃墟溕系?token 轉(zhuǎn)入類似多重簽名控制的原鏈地址中,對其進行暫時鎖定,在中繼鏈上的交易結(jié)果將由這些簽名人投票決定其是否生效。它還引入了釣魚人角色對交易進行舉報監(jiān)督。通過 Polkadot 可以將比特幣、以太幣等都鏈接到 Polkadot 上,從而實現(xiàn)跨鏈通信。
本體跨鏈設計初探
為了解決區(qū)塊鏈的信息孤島問題,本體推出全新的輕量級、低耦合、安全可靠的多鏈體系和跨鏈解決方案。該解決方案以本體鏈為主鏈,同時支持同構(gòu)側(cè)鏈和異構(gòu)側(cè)鏈,并允許主鏈與側(cè)鏈、側(cè)鏈與側(cè)鏈之間的交互。當需要連接不同結(jié)構(gòu)的鏈時,dApp 可以通過調(diào)用跨鏈管理合約來完成跨鏈操作。
本體鏈網(wǎng)體系支持主鏈和側(cè)鏈之間、側(cè)鏈和側(cè)鏈之間的跨鏈交互,其跨鏈設計主要包括如下幾個模塊:
1. 多鏈管理合約
· 主要負責側(cè)鏈的注冊和管理,包括側(cè)鏈注冊和退出,側(cè)鏈狀態(tài)管理,側(cè)鏈 ONG 抵押管理,側(cè)鏈資金池管理,驗證人信息變更等;
· 側(cè)鏈需要在注冊時向主鏈的多鏈管理合約中提交該側(cè)鏈的創(chuàng)世塊區(qū)塊頭、共識切換周期等基本信息。同時,側(cè)鏈需要將主鏈的當前關鍵區(qū)塊頭信息初始化在自己的區(qū)塊頭同步合約中。另外,側(cè)鏈在向主鏈注冊時需要抵押一定量的 ONG 防止其作惡(若是可信側(cè)鏈,也可不抵押 ONG);
· 注冊后會為子鏈分配子鏈 ONGx 總發(fā)行量的資金池,每次向子鏈的資產(chǎn)轉(zhuǎn)移都會消耗資金池的容量,相反會釋放資金池的容量;
· 子鏈的退出需要有段時間的挑戰(zhàn)期,挑戰(zhàn)期內(nèi)用戶可以將 ONGx 換回 ONG,如發(fā)現(xiàn)無法換回,可以提交子鏈作惡的證據(jù)。挑戰(zhàn)期結(jié)束子鏈退出并贖回質(zhì)押。
2. 區(qū)塊頭同步合約
· 跨鏈交互需要跨鏈交易的相關合法性證明,跨鏈交易在跨鏈管理合約中被放入merkle tree中,同時 merkle root 被放入?yún)^(qū)塊頭中;
· 因此跨鏈交互過程中需要進行跨鏈區(qū)塊頭信息的同步,獲取 merkle root,以驗證跨鏈交易的合法性;
·為了驗證獲取到的跨鏈區(qū)塊頭的合法性,需要驗證對方鏈共識節(jié)點的簽名,而為了獲取對方鏈共識節(jié)點列表,需要同步對方鏈的關鍵區(qū)塊頭(也就是共識切換的區(qū)塊);
· 側(cè)鏈和側(cè)鏈的交互過程中,雙方將直接從主鏈上取得對方的關鍵區(qū)塊頭信息。
3. 跨鏈管理合約
· 所有跨鏈交易都由跨鏈管理合約來進行統(tǒng)一管理;
· 跨鏈管理合約負責為每一筆跨鏈交易分配一個自增 ID,并在完成時標記該 ID 已消費,還負責將跨鏈交易放入 Merkle Tree,而 Merkle Root 會被放入當前區(qū)塊的區(qū)塊頭中。同時,在發(fā)起跨鏈交易時,用戶需要將一部分 ONG 作為礦工費用銷毀或凍結(jié)。
4. ONG(x) 合約
· 系統(tǒng)資產(chǎn)合約,該資產(chǎn)可以實現(xiàn)跨鏈轉(zhuǎn)移,并可以作為交易手續(xù)費和跨鏈交易礦工費,資產(chǎn)錨定主鏈 ONG;
· 主鏈 ONG 合約添加了跨鏈資產(chǎn)鎖定,解鎖功能;
· 側(cè)鏈 ONGx 合約添加了跨鏈資產(chǎn)增發(fā),銷毀功能。
5. dApp 合約
· 任意本體開發(fā)者開發(fā)部署的 dApp 合約,此合約除了正常的業(yè)務邏輯,還調(diào)用了跨鏈管理合約的跨鏈方法來實現(xiàn)跨鏈。是跨鏈 dApp 生態(tài)中的鏈上部分。
· dApp 開發(fā)者無需關心具體的跨鏈實現(xiàn),只需調(diào)用跨鏈管理合約的統(tǒng)一方法即可實現(xiàn)跨鏈。
6. 信息狀態(tài)同步者 Relayer
· 一個狀態(tài)信息同步程序,持續(xù)監(jiān)聽跨鏈管理合約的跨鏈請求和某些關鍵區(qū)塊,監(jiān)聽到后進行跨鏈交易或者關鍵區(qū)塊頭的同步工作來獲取礦工費。
· 任何人都可以無需注冊加入網(wǎng)絡成為 Relayer,并賺取自己的礦工費。
后記
在以后的本體技術視點文章中,將給大家?guī)砀嚓P于本體跨鏈設計的具體細節(jié)。
目前,本體跨鏈測試網(wǎng)已經(jīng)上線,也提供了詳細的跨鏈使用教程和多鏈開發(fā)手冊,希望廣大技術愛好者來體驗本體跨鏈測試網(wǎng)絡。