Naming Protocol 一種針對跨鏈定址協議的跨鏈標準

買賣虛擬貨幣
編者按:2019年9月5日,全球最大的專業技術組織、有著130餘年歷史的IEEE(電氣和電子工程師學會)設立IEEE計算機協會區塊鏈和分散式記賬委員會(IEEE Computer Society Blockchain and Distributed Ledgers Committee,IEEE C/BDL),旨在推動區塊鏈與分散式記賬技術的標準化及其應用實踐。2020年3月,IEEE C/BDL聯合國內外的專家成立了相關的技術委員會、顧問委員會和執行委員會。組建委員會之後,IEEE C/BDL向IEEE申請了13項區塊鏈標準。為更好向外界展示委員會區塊鏈標準化研究成果,IEEE C/BDL聯合巴位元,邀請區塊鏈標準的牽頭單位撰寫系列文章。本篇文章作者是百度區塊鏈系統部技術負責人荊博,為我們介紹了跨鏈技術在設計中面臨的原子性、有效性和資源定址的三方面的挑戰,並針對定址協議,立項了IEEE標準Standard for Blockchain Interoperability – Naming Protocol。
研究跨鏈技術標準的背景近年來,隨著區塊鏈行業的蓬勃發展,各家科技公司都在發展自己的區塊鏈業務。由於區塊鏈行業還處於早期發展階段,各大公司都試圖主導行業標準,因此產生了很多的區塊鏈框架,例如在國外有IBM主導的Fabric,Intel主導的Sawtooth,Facebook主導的Libra,國內有百度主導的XuperChain等。這些框架底層協議各不相同,並且隨著區塊鏈被被納入新基建的範疇,鼓勵開發國產自研的底層區塊鏈框架, 如火如荼的區塊鏈底層技術研發更加活躍,由此形成了一個個新的資料孤島。無論這些孤島是基於相同的底層系統還是不同的底層系統,其資料互通都非常困難,因此,迫切需要一個解決方案能夠系統地解決多鏈資料融合的問題,從而實現不同鏈之間的價值互通。
因此,國內幾個主要的區塊鏈技術公司在電子標準院的協助下,組織起人馬,成立了多個標準工作組,針對跨鏈技術展開了深入研究,並提出了一系列的標準草案。其中,IEEE標準Standard for Blockchain Interoperability - Naming Protocol 已經立項,我作為該標準工作組主席,將針對該標準進行一些介紹,希望對大家有所幫助。什麼是跨鏈技術跨鏈(Cross-Chain),簡單來說就是透過一定的技術措施實現相對獨立的不同區塊鏈系統之間資料和資產的連結互通。可以將跨鏈理解為在不同的資訊孤島間搭建起一座座橋樑,使得資訊能夠便捷的流動,為價值網際網路奠定基礎。常見的跨鏈解決方案一般是針對資產類,實現不同鏈之間任意資料的跨鏈互通難度會更高。我們這些標準工作組應難而上,試圖解決的就是後者。跨鏈技術常見的挑戰跨鏈技術方案在設計中往往會遇到一些挑戰。舉幾個例子:
1)原子性。可以透過雜湊時間鎖的方案來實現。交易互為錨點,任意一方未生效,另一方可以及時回滾。2)有效性。驗證錨點交易的有效性。可以透過SPV證明來實現。3)資源定址。如何快速跨鏈定位並獲取到相關的資源。這就需要設計一套完整的定址協議。針對第三項跨鏈定址協議,我們立項了IEEE標準Standard for Blockchain Interoperability - Naming Protocol。 本篇文章,會對該標準進行一個介紹。解決思路區塊鏈互操作的命名協議
跨鏈涉及到不同鏈的資源的互操作,但是由於不同鏈的協議各不相同,對不同鏈的資源進行統一定義描述是很非常困難的。首先,我們需要一個標準協議,來為每一個區塊鏈網路上的資源分配一個地址。這個協議可以被稱為跨鏈定址協議。跨鏈定址協議,也可以被更學術的定義為:區塊鏈互操作的命名協議,英文叫Naming Protocol for Blockchain Interoperability。 該協議可以使得任意一個區塊鏈網路能透過標準化地址定位所要訪問的其他區塊鏈網路的資源。例如,我們可以定義一個這樣的協議:[:][//][//][?]所有的區塊鏈網路都可以使用這個協議來為自己區塊鏈網路上的資源來生成一個地址。
我們來繼續舉個例子來說明這一點:首先,我們假定有一個區塊鏈網路名字叫hello_chain,完全遵循我們在之前定義的它使用名為Xuper的底層框架搭建,這個網路下面跨鏈定址協議。有一條子鏈/側鏈/平行鏈叫child_chain。在這個child_chain上有一個使用wasm(webassembly)合約虛擬機器才能執行的智慧合約,合約名叫counter。顧名思義,這個合約其實是一個簡單的計數器。該合約提供了2個方法,1個叫increase,1個叫getNumber。呼叫increase方法,會使得每次將數值加1。而呼叫getNumber方法,會返回當前的數值。接著,假設我們現在正處於另一個區塊鏈網路world_chain上,希望跨鏈訪問hello_chain網路上的子鏈child_chain上的名為counter的計數器智慧合約,並獲取當前的數值。
我們需要先按照之前定義的跨鏈定址協議來生成訪問地址,舉個例子,我們可以這樣寫:xuper://hello_chain/child_chain? module=wasm&contract_name=counter&method_name=getNumber其中,xuper: Xuper hello_chain: hello_chain child_chain: xuper//child_chain module=wasm: wasm contract_name=counter: counter method_name=getNumbergetNumber實現命名協議解析的背書節點按照我們上面所舉的例子,hello_chain需要遵循我們在之前定義的跨鏈定址協議。
那麼,hello_chain還需要對外暴露出一些特殊的全節點,也可以被稱作是背書節點,來負責解析命名協議,並處理來自於其他區塊鏈網路的跨鏈訪問請求,獲得結果後附帶上簽名,併為結果的正確性進行背書。也就是說說,其他的區塊鏈網路如果要訪問hello_chain上的資源,就必須透過hello_chain網路上對外提供信任背書服務的全節點來進行訪問。這些節點會用自己的信用來為結果背書,所以叫做背書節點。訪問者可以自由選擇他們信任的背書節點,甚至可以選擇為此支付一定的手續費來對誠實的背書節點進行經濟激勵。用於處理跨鏈的智慧合約為了實現跨鏈請求,我們已經定義了2個重要內容:1)各個區塊鏈網路都需要遵守的鏈名跨鏈定址協議。 
2)在目標鏈上存在的實現命名協議解析的背書節點。但這些還是是不夠的。在跨鏈發起的原鏈上還需要部署一個用於查詢目標鏈可用背書節點,並負責向背書節點發起跨鏈請求的智慧合約。結合該跨鏈合約,便可以實現對跨鏈合約所有協議鏈的統一資源定址。該智慧合約應該實現以下功能:1)註冊一個區塊鏈網路,並登記該網路上可用的背書節點。 2)更新一個區塊鏈網路,並更新該網路上可用的背書節點。 
3)查詢一個區塊鏈網路上的可用的背書節點。 4)解析跨鏈訪問請求,並根據背書策略,訪問目標區塊鏈網路的若干個背書節點,並獲得跨鏈結果。結論假設原鏈是A鏈,目標鏈是B鏈,為了實現A鏈到B鏈的跨鏈,需要經歷以下步驟:1)A鏈和B鏈需要遵守並支援“區塊鏈互操作的命名協議”。 2)B鏈需要開放一些背書節點,用於處理來源於其它區塊鏈網路的跨鏈請求。 
3)A鏈實現並部署用於跨鏈的智慧合約。 4)當A鏈需要訪問B鏈的資源時,先根據 透過訪問A鏈的用於跨鏈的 “區塊鏈互操作的命名協議”來生成跨鏈訪問地址。再 智慧合約,來獲得B鏈的可用背書節點資訊。 5)A鏈將需要跨鏈訪問的資源地址傳送給B鏈的背書節點,並獲得返回值。本文連結:https://www.8btc.com/article/606347

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;