《硬核:本體如何更好的跨鏈、打造信任協作?》 介紹了本體的多鏈架構設計以及側鏈的生命週期,本篇將對比目前業界頗爲關注的跨鏈項目 Cosmos 與 Polkadot,看一下本體在解決區塊鏈互操作性問題如何在採取類似規則的同時,但因爲在協議和設計上的不同,使其在跨鏈的執行效率、安全性等方面產生若干創新之處。

跨鏈治理

Cosmos

根據 Cosmos 官方提供的資料,主網啓動之初,網絡狀態和安全性無法得到足夠的保障,在啓用通證轉賬之前,如果 Cosmos Hub 中存在錯誤或漏洞,有可能會出現狀態回滾或者重啓網絡。在主網足夠穩定安全之後,Cosmos Hub 中通證 ATOM 的持有者將會投票決定是否開啓 ATOM 鏈上轉移,這一部分也會通過區塊鏈上投票治理的方式實現。如果第二階段開啓後,用戶將可以轉移 ATOM,同時交易所也將可以對 ATOM 進行充提,更多的人可以購 買 ATOM,並參與到委託驗證人出塊的環節。

待 IBC (鏈間通訊)協議完成測試併發布後,ATOM 持有者同樣需要鏈上治理來進行投票是否將其整合到 Cosmos-SDK 中。目前,IBC 還沒有在 Cosmos 主網真正實施,有待進入第三階段實施。因此,IBC 現在還是一個驗證性的原型,還需要更多的優化,在測試網絡環境測試時,還需要認真嚴謹地對複雜的分佈式環境進行驗證,才能真正投入到主網上使用。

Polkadot

在 Polkadot 架構,主鏈叫做中繼鏈(Relaychain,相當於 Cosmos 生態裏 Hub 的地位),網絡中基於 Polkadot 發行的鏈,叫做平行鏈(Parachain),其安全和治理都是由 Polkadot 的中繼鏈來支持,而 Cosmos 各鏈都由自己獨立治理。

相比於大多數 PoS 公鏈中只有委託人與驗證者兩個角色,Polkadot 設置了“驗證人(validator)”、“提名人(nominator)”、“校對人(collator)” 和“漁夫(fishermen)”四種角色,新增的校對人與驗證人互相輔助,生成有效的平行鏈區塊。校對人還需對未封裝的塊進行零知識證明,並將其提供給一個或多個負責向中繼鏈提交平行鏈區塊的驗證人。漁夫則是賞金獵人,監督驗證人與校對人的作惡行爲,通過舉報尋求大筆獎勵。

Polkadot 的治理機制更爲複雜。除了全民公投以外,還引入了一個鏈上”委員會“的概念,這個委員會很可能從大約 6 人開始,並且在 9 個月內增加到 24 人(每兩週大約增加一個人)。所有成員都有固定任期(12 個月),每個成員都通過批准投票選出。

本體 Ontology

本體的多鏈設計採用雙層結構,Ontology 作爲當前的主鏈,負責側鏈的註冊以及資產抵押等事宜。側鏈既可以是與主鏈架構相同的同構鏈,也可以是異構鏈。側鏈需要向主鏈進行註冊,等待主鏈治理委員會審覈通過後即可激活與主鏈或者其它側鏈間的跨鏈交互。

本體側鏈在向主鏈註冊時,需要抵押一定量的 ONG 資產防止其作惡,並在註冊提交該側鏈的創世塊區塊頭等基本信息。從註冊伊始,直至側鏈需要從主鏈退出時,本體 Relayer 都會實時監聽側鏈的情況,若監聽到當前區塊頭的 StatesRoot 與實際運行的 StatesRoot 不符,可立即提交該證明到主鏈中,並獲得相應的激勵。

Ontology 主鏈、各條同構側鏈及異構側鏈形成本體整個鏈網體系,在這個鏈網體系中使用 ONG 作爲統一的燃料手續費和礦工費。

本體的跨鏈治理,與 Cosmos、Polkadot 有何不同?

側鏈註冊時抵押一定量的 ONG 資產:在側鏈初始化時,需要向主鏈發起註冊請求,並提交側鏈的區塊頭信息,該區塊頭信息中包含驗證人信息。若共識週期切換驗證人信息發生變更時,側鏈需要提交包含新驗證人集合的週期切換區塊頭信息去變更舊的驗證人信息。類似的,其他異構鏈的跨鏈也可以採用同步某些關鍵區塊的方式。側鏈在向主鏈註冊時需要抵押一定量的 ONG 資產防止其作惡。

Relayer 設計:本體的 Relayer 是一個狀態信息同步程序,持續監聽跨鏈合約的跨鏈請求和某些關鍵區塊,監聽到後進行跨鏈交易或者關鍵區塊頭的同步獲取礦工費。當信息狀態同步程序 Relayer 將新的共識週期的驗證人區塊頭提交到主鏈時,主鏈會驗證關係是否成立。若不成立,則該區塊頭同步將會被拒絕;反之,舊的側鏈驗證人抵押的 ONG 將會在兩次驗證人信息變更後被解鎖。

關鍵區塊頭同步:在本體主鏈的共識治理模型中,本體網絡每隔一定數量的區塊更換一次共識節點,即在一個共識週期內,驗證者集合保持不變。因此,如果側鏈是同構鏈,那麼鏈區塊頭同步過程不需要同步所有區塊,只需要同步關鍵區塊(即切換驗證者集合的週期切換區塊)和跨鏈交易發生的區塊即可。

主鏈與側鏈的跨鏈交互:當 dApp 來處理主鏈與側鏈的跨鏈交互時, dApp 合約先處理其在源鏈上的邏輯,需要跨鏈時調用跨鏈管理合約的跨鏈接口。Relayer 將狀態信息的證明同步給目標鏈(的跨鏈管理合約)後,dApp 將繼續處理其在目標鏈上的邏輯。

本體的跨鏈治理,與 Cosmos、Polkadot 有何不同?

舉個例子,若 A 鏈發起了一筆跨鏈交易到 B 鏈,則用戶需要鎖定一定的 ONGx 作爲礦工費在 A 鏈的跨鏈管理合約中,Relayer 在完成跨鏈操作後,就可拿到 B 鏈的成功的跨鏈記錄。

本體的跨鏈治理,與 Cosmos、Polkadot 有何不同?

保證金方式、交易過程中的監聽程序 Relayer 、側鏈退出時設立挑戰期,其實和我們在網上通過第三方平臺購物的規則類似:交易前押金、交易中監控、交易後驗證。本體這些設計,是目前 Cosmos、Polkadot 方案所沒有的。由此可見,本體在跨鏈交易上的安全性,做了更多的考慮。

如何防止側鏈作惡?

跨鏈交互中涉及一個重要安全問題,就是如何防止側鏈驗證人集體作惡,即”側鏈作惡“。在 Cosmos 中側鏈是各鏈自治,側鏈驗證人的選舉由側鏈自己決定;而在 Polkadot 中,側鏈驗證人的管理由 Polkadot 主鏈”中繼鏈“決定。無論驗證人選舉還是自治的還是統一的,都會面臨一個根本性的挑戰:這些側鏈驗證人都不一定可靠,若跨鏈交互的資產實際價值大於驗證人抵押的實際價值,驗證人會有足夠的動力去作惡。

例如,某個 dApp 的開發者同時在主鏈和側鏈上部署了智能合約,希望進行跨鏈的資金交互。當該 dApp 的用戶將一部分資產轉移到側鏈後,側鏈驗證人可以直接將這部分資產轉移到自己的名下,然後轉移到主鏈上去,並在交易所賣掉這部分資產。當然,側鏈驗證人在主鏈抵押的保證金會賠付給用戶。但是如果側鏈驗證人抵押的保證金小於轉移的這部分資產的實際價值,側鏈驗證人很有可能會採取集體作惡的方式來獲得這部分的額外收益。

作惡方式

現有的跨鏈方案大都採用梅克爾樹證明的方式:即側鏈在每一個區塊中生成當前區塊中所有交易產生狀態的 States Root,側鏈驗證人會對該 States Root 進行簽名。當有跨鏈交易發生時,通過驗證該 States Root 即可驗證跨鏈狀態的合法性。如果此時側鏈驗證人發現用戶跨鏈交互的資產實際價值大於這些驗證人抵押資產的實際價值,那麼側鏈驗證人可以基於當前區塊僞造一個 States Root,即無視當前區塊的執行結果,強行構造一個對自己有利的 States Root,從而竊取用戶鎖定在主鏈上的資產。

那麼,是否可以實現,即使側鏈被惡意礦工或節點控制,用戶依舊可以利用主鏈的安全機制來保證自身的安全性呢?

如何解決作惡

驗證人作惡是通過集體在當前區塊構造虛假的 States Root,區塊中的交易因爲無法僞造用戶簽名並不能被改變。

我們可以看到,在 Cosmos 中,Hub 的礦工不對 Zone 的安全負責,或者說不對整個系統的安全負責。這樣就會導致一個問題,如果跨鏈交互的過程兩條鏈交互的資產價值大於某一條鏈抵押的價值,會發生驗證人集體作惡而偷取資產的情況發生。所以,Cosmos 可能更適合可信的公鏈間的信息交流。

而在 Polkadot 中,有“驗證人”、“提名人”、“校對人” 和“漁夫”四種不同的角色在維持網絡安全。在其一個可能實現裏,“驗證人”有可能會被拆分成”基礎驗證人“和”可用保證人(guarantor)“,各分片的驗證人由主鏈統一分配,各分片的驗證人需要有所有分片的全量賬本,數據的存儲量會比較大。另外,如果跨分片交互的過程兩個分片交互的資產價值大於該分片的驗證人在主鏈上抵押的價值,還是會發生驗證人集體作惡而偷取資產的情況。

針對驗證人作惡的情況,本體提出一個解決問題的設想:即可以設置一個挑戰期。在挑戰期內,若發現某一筆交易作惡,Relayer 可以提交該交易狀態的上一個狀態、當前區塊的交易、合約源碼去虛擬機中運行,並比較運行結果的 States Root 與 區塊中包含的 States Root,驗證該 States Root 是否合法。同時,不管是否有跨鏈交易的發生,Relayer 都會實時實時監聽側鏈的情況,若監聽到當前區塊頭的 StatesRoot 與實際運行 StatesRoot 的的不符,可立即提交該證明到主鏈中,並獲得相應的激勵。

可以看到,該方案的驗證過程較複雜,特別是對於異構鏈而言,且挑戰期對用戶體驗也不是足夠的友好,本體表示會在這一設想的基礎上繼續研究更爲可行高效的解決方案。

最後,雖然在防止側鏈作惡這一問題還未找到完美的解決方案,但本體提出的設計對於整個區塊鏈世界探索如何搭建並實現輕量級、低耦合、安全可靠的多鏈體系和跨鏈解決方案還是具有十分重要的意義。