區塊鏈技術在海洋數據共享平台應用技術研究_風聞
Science_北京-不惧过往,不畏将来!2019-06-21 17:23
海洋大數據是實施海洋強國戰略、開發海洋資源、拉動海洋經濟、維護國家海洋權益的重要基礎。龐大的時空數據雖極大地豐富了海洋研究的數據源,但較之普通的三維空間數據處理、分析與展示覆雜度大大增加。且隨着地理信息技術的快速發展、應用領域的不斷擴大,以及計算機信息技術的飛速發展,對海洋大數據的處理、分析和展示提出了更高的要求。如何利用大數據相關技術,結合海洋應用特點,對海量、多源、異構的海洋觀測和模擬數據進行快速、及時地分析和處理,開發和挖掘海洋大數據的應用服務,是海洋大數據平台建設的核心問題。通過把大數據與區塊鏈相結合,能讓區塊鏈中的數據更有價值,也能讓大數據的預測分析落實為行動,它們都將是數字經濟時代的基石。
一****區塊鏈技術數據共享解決方案
1)區塊鏈技術與數據存儲
a)基於區塊鏈技術的數據存儲
在沒有區塊鏈技術以前,人們達成共識(技術上共識是指在數據層面沒分歧、雙方數據一樣),也就是保證交易參與方數據都一樣的方式是依賴中心化系統,中心化系統替交易各方進行數據記賬。因為交易各方都相信中心化系統,所以中心化系統可以通過記總賬的方式保證各方交易數據一致。但中心化系統並不是完全可靠的,中心化系統也有可能出現違約、作假,也就是數據被篡改。而且通過中心化系統記賬的成本也比較高,非常典型的例子就是匯款,如果要往海外匯一筆錢,不但手續費高昂而且時間成本也很高。
而區塊鏈是一個多方共識的機制,這個共識的算法是建立在整個技術信任的基礎上的,它不依賴於人和機構的信任,而是一種相對民主的機制。在這種機制的約束下,數據的真實有效以及持續性得到保障,是建立這種多方聯合並且多方相互監督的這種聯盟業務的信任基礎。
b)IPFS:“星際區塊鏈網絡”
由於區塊鏈技術的多中心、開放性、自治性、信息不可篡改和匿名性,使得將區塊鏈技術可以很好的運用於數據存儲之中。下面以IPFS為典型案例分析區塊鏈技術與數據存儲。
IPFS是Inter-Planetary File System 的簡稱,由Protocol Lab提出,是一個P2P的分佈式文件系統。與現有Web不同的是,對於一個存放在IPFS網絡的文件資源,通過這個文件資源的內容生成的唯一編碼去訪問。IPFS設定的目標是替代HTTP。
IPFS 可以將數據分片存儲到分佈式的存儲節點,與 BitTorrent 類似,在訪問時,不需要關心存儲在哪裏,可以從多個存儲節點分片獲取。IPFS 也集成了 git 版本管理的技術,從而可以適應內容的升級變化。為了實現真實性、不可篡改性,IPFS 維護一個分佈式的哈希表,實現一種 Merkle DAG的數據結構,還結合了一個自我證明的名字空間。
Protocol Lab 提出了與 IPFS 相輔相成的 Filecoin,這是一個公有的區塊鏈,是 IPFS 的經濟激勵系統,Filecoin Token 就是這個公有鏈的代幣,承載着 IPFS 價值的傳遞,維繫着 IPFS生態的發展。
IPFS具有如下特性:
(1)互聯網信息永久存儲
IPFS像是一個分佈式存儲網絡(類似於SIA),任何存儲在系統裏的資源,包括文字、圖片、聲音、視頻,以及網站代碼,通過IPFS進行哈希運算後,都會生成唯一的地址。今後,你只要通過這個地址就可以打開它們。並且這個地址是可以被分享的。
而由於加密算法的保護,該地址具備了不可篡改和刪除的特性(在某種意義上,如果破解密碼還是有可能被篡改或刪除,但概率極低)。所以,一旦數據存儲在IPFS中,它就會是永久性的。比如我們經常會遇到的某個資源刪除無法訪問的問題,這種情況,在IPFS上就不會發生。即便是把該站點撤銷,只要存儲該站點信息的網絡依然存在,該網頁就可以被正常訪問。存儲站點的分佈式網絡越多,它的可靠性也就越強。
與SIA不同的是,IPFS存儲的一般是公共信息,普通大眾都可以獲得的。有一種説法認為,如果IPFS完全取代HTTP,那麼此後,人類歷史將會被永久保存,且不會被篡改。
(2)解決“過度冗餘”問題
如果你喜歡某部電影,又擔心電影資源丟失,通常的做法是,你會把這部電影下載在自己的電腦上。那麼一個無法避免的問題是:同樣的一部電影被反覆儲存,造成了內存資源極大浪費,這就是HTTP協議的弊端。同樣的資源備份的次數過多,就會造成過度冗餘的問題。
而IPFS的出現可以很好地解決這個問題。IPFS會把存儲文件,做一次哈希計算,隻字不差的兩個文件哈希值相同。所以,用户只需要使用相同的哈希值,就可以訪問那個文件,這個哈希值就是文件的地址。只要獲取這個地址,就可以共享資源了。基於上面的永久存儲特性,你再也不用擔心某個電影找不到,也不用備份,因為全球電腦上只要有那麼幾個人存儲着,你就能拿到它,而不是重複存儲幾十萬份。
c)區塊鏈技術運用於海洋數據存儲
區塊鏈技術運用到海洋數據存儲方面具有如下特點。
一是多方參與協作記賬,天然的實現了冗餘的多存儲災備。
區塊鏈基於密碼學技術,通過特定的算法,依靠一定的共識機制,點對點交易可以快速得到確認,信息存儲在各節點,無需信任單箇中心。每個節點通過保存一套完整歷史數據庫的副本,參與維護信息的安全性和準確性。簡而言之,區塊鏈技術是通過“去中心化”和去信任的方式,集體維護一個可靠數據庫的技術,不再依賴第三方。區塊鏈這種去中心化分佈式數據記賬系統,如圖1所示,比多數據災備中心模式具有更高的可用性,因為區塊鏈系統的維護者分佈在全球,抗災能力空前強大,通過全球合作,區塊鏈系統也獲得了跨時區連續運行的能力。這樣的特性對於金融、軍事等很多行業機構,無疑極具吸引力。
圖1:區塊鏈的去中心化記賬模式
二是密碼學機制保障存儲邏輯和時間邏輯,通過多方比對實現數據不可篡改、不可抵賴、不可刪除。也就是説,區塊鏈可以實現數據的永久、真實、安全的保存。之所以説區塊鏈上的數據具有不可篡改性,是由於採用了時間有序不可篡改的密碼學賬本結構,如圖2所示,區塊鏈上的數據被篡改幾乎是不可能的。具體來説,人們把一段時間內生成的信息(包括數據或代碼)打包成一個區塊,蓋上時間戳,與上一個區塊銜接在一起,每下一個區塊的頁首都包含了上一個區塊的索引數據,然後再在本頁中寫入新的信息,從而形成新的區塊,首尾相連,最終形成了區塊鏈。這個結構的神奇之處在於區塊(完整歷史)+ 鏈(完全驗證)=時間戳“區塊+鏈”的結構為我們提供了一個數據庫的完整歷史。從第一個區塊開始,到最新產生的區塊為止,區塊鏈上存儲了系統全部的歷史數據。區塊鏈為我們提供了數據庫內每一筆數據的查找功能。區塊鏈上的每一條交易數據,都可以通過“區塊鏈”的結構追本溯源,一筆一筆進行驗證。從某個角度講,區塊+鏈=時間戳,這是區塊鏈數據庫的最大創新點。區塊鏈數據庫讓全網的記錄者在每一個區塊中都蓋上一個時間戳來記賬,表示這個信息是這個時間寫入的,形成了一個不可篡改、不可偽造的數據庫。同時,區塊鏈內存儲的信息都是經過harsh壓縮後的亂碼,由於單向性是可驗證但不會被還原的,所以區塊鏈還起到了一定程度的信息保密作用。
圖2:區塊鏈數據的不可篡改性
2) 區塊鏈技術與資產管理
a)基於區塊鏈技術的資產管理
傳統的資產管理業務是指資產管理人根據資產管理合同約定的方式、條件、要求及限制,對客户資產進行經營運作,為客户提供證券、基金及其他金融產品,並收取費用的行為。資產管理可以定義為機構投資者所收集的資產被投資於資本市場的實際過程。雖然概念上這兩方面經常糾纏在一起,但事實上從法律觀點來看,資產管理者可以是、也可以不是機構投資者的一部分。實際上,資產管理可以是機構自己的內部事務,也可以是外部的。
互聯網金融通過十幾年的發展,雖然業務規模尚不能與傳統金融相提並論,但是在未來金融科技和其它技術的推動下,必然成為新金融環境中不可或缺的一分子。
資金是金融行業賴以生存的根基,一切金融手段的終極目的,都是將資金高效地運用,哪家金融機構能夠更有效率地運用資金,哪家機構就會獲得資金的青睞,進而進一步積累財富,提升自身在金融行業的地位。互聯網金融正在逐步滲入資產管理的殿堂之中。
應用區塊鏈中的智能合約技術,能夠有效解決資產託管業務中的操作風險。具體來看,可以從以下幾個方面優化資產託管的業務流程:一是實現了全流程的自動化,將業務指令判斷和執行規則封裝到智能合約中,利用智能執行合約和提供風險提示;二是提升了流程效率,資產委託方、管理方、託管方、代銷方在資產變動、交易明細等信息的實時共享,免去反覆校驗、確權的過程;三是保證了履約的安全性和交易的真實性,通過設置密鑰保證參與方信息正式、賬本信息的有限可見性及交易的可驗證性;四是確保了信息的不可篡改,將投資計劃的合規校驗要求放在區塊鏈上,確保每筆交易都在形成共識的基礎上完成。
b)基於區塊鏈技術的資產管理應用
資產管理的本質還是記錄資產的收入和支出,因此區塊鏈在這方面的應用也逐漸發展。澳大利亞聯邦銀行新興技術團隊和惠普拆分公司Hewlett Packard Enterprise之前通過使用Corda分佈式賬本技術進行了一項試驗,這項試驗允許CFS消除基金管理以及為期三天的產品交付過程中的繁瑣紙質應用流程。Corda可以通過允許資產交換和交易進行即時結算,從而消除了中介機構帶來的對手方風險。同時還能跨地域地看清每一個對手方的狀況。通過消除發行方違約或者投資者未能結算的風險,銀行將可以降低覆蓋這些風險所需要的監管資本數額。澳大利亞聯邦銀行資產管理部門主管Annable Spring曾在悉尼APAC區塊鏈會議上説,“如果區塊鏈能夠獲得局部、區域或全球的採用,那麼資產管理行業需要保管的資本數量就能大幅度降低。對於我們行業來説,我們可以具有更加高效的資金流動,通過消除風險來釋放資本要求,為監管機構提供最新的市場看法,降低對手方風險。如果區塊鏈獲得廣泛應用,那麼將會降低整體金融經濟體系風險。”減少資產資本可以增加股本回報率——這是一個推動銀行股票價格的關鍵因素。為了推動通過手機購買或出售產品的試驗,澳大利亞聯邦銀行已經創建了一種數字貨幣(目前尚未公開上線)。
區塊鏈在資產管理行業的潛力已經顯現,因為目前用户基金買賣體驗非常複雜和繁瑣,區塊鏈技術可以在後台流程中發揮全部的潛力。目前來説,儘管力求精簡,但流程眾多,有很多的對手方通過該系統多次移動資金,進行多次對賬,同時還要保護客户隱私。康聯首域集團(CFS)每天要估價超過20000種金融市場資產,每月記錄和協調超過100000筆來自各種經理的交易。CFS每天都要接到大約4000次客户來電以及超過1000封來信。從體量而言,該企業每月處理超過50萬筆交易,每天通過金融系統轉移超過5億美元。基金購買的初始流程可能會需要3天時間才能完成,用户需要通過金融顧問填寫數十份紙質文件,然後發送給CFS,再交給數個小組進行文件核查。這都極大地增加了該流程的成本。此外,客户委託購買資產涉及到資金和數據通過金融顧問流入到CFS,一旦獲得確認,基金經理就會購買資產。一般通過經紀商,所有的交易都會被各種註冊商、託管商、經紀商和中央清算中心所記錄,這些流程可能需要幾天的時間才能獲得確認。綜上,區塊鏈技術在資產管理方面具有很好的發展應用前景。
3)將區塊鏈技術應用於海洋數據共享平台
以區塊鏈技術的特點與優勢為基礎,結合區塊鏈技術在數據存儲與資產管理方面的成功案例,可以將之延伸應用於海洋數據開放共享與增值流通領域。
二****海洋數據共享平台與不同類別區塊鏈的結合
1) 數據共享平台與聯盟鏈的結合
a) 典型聯盟鏈分析
聯盟鏈是指其共識過程受到預選節點控制的區塊鏈,典型的聯盟鏈有Hyperledger(超級賬本)。
Hyperledger中針對區塊鏈技術的開放標準都是模塊化的。其所建立的標準,能夠在未來允許開發人員按照自己的意願替換不同版本的各種區塊鏈組件。模塊化使外部開發更容易。
Hyperledger擁有足夠靈活的API,使得不使用Hyperledger核心組件構建的應用案例也能很容易地與核心的Hyperledger組件和區塊鏈實現互動。
Hyperledger的設計標準是儘量模塊化和可擴展。除此之外,Hyperledger的模塊化能讓儘可能多的人圍繞Hyperledger工作。這種模塊化的方式允許發明或開發新的區塊鏈技術,將這些技術很容易與Hyperledger一起使用或融合。
任何區塊鏈結構都有一個基本需求,那就是網絡中任何一方的身份和行為模式必須不能被未授權方通過檢查賬本就能查明。Hyperledger也允許區塊鏈用户確認業務邏輯和/或交易機密的其他參數,這使得他們對正在轉移的合約或資產的利益相關者之外的任何人都是不可訪問的。
Hyperledger為在其核心協議之上實現的各類豐富應用提供支持。其支持各種交易語義、密碼算法、協商機制和數據庫存儲協議。例如,以加密為例的Hyperledger應該包括所有的加密、簽名和更高級的功能密碼,從簡單的、快速的對稱加密到複雜的功能加密和基於屬性的簽名。這些基本的技術原理應通過配置來支持重要的商業交易,例如不同程度的授權交易的不可改變性和可審計性。
總的來説,Hyperledger是一個易用、非常有用和健壯的平台,對於構建區塊鏈軟件的機構和個人都可以把它作為自己的底層架構。Hyperledger針對每個潛在用户和應用案例可能缺乏某種理想的功能,但Hyperledger儘可能使其可以接近這種理想的狀態。
b)數據共享平台搭建在聯盟鏈的研究分析
以Hyperledger為代表的聯盟鏈為實現各個涉海的相關管理部門自有數據資產的處置,各個單位部門之間的協作配合,數據的供應鏈管理,以及最終形成共享經濟市場的美好前景提供了潛在的解決方案。
Hyperledger聯盟鏈可以很方便地使得各部門和單位自有的數據資產在區塊鏈網絡上實現去中心化,這樣就使得數據資產相關方不需要通過中間環節,就可以直接訪問每個資產,進而發起交易和獲取相關信息。交易可以在各部門和單位之間商定的時間期限內解決,交易和實現實時結算,數據資產相關者都可以實時掌握資產情況。數據資產相關方可以增加業務規則,這樣也能通過自動化邏輯的應用來進一步降低成本。創建資產的人必須像用例保證的那樣,實現資產和相關交易規則保密或者公開。
其還可以使得公司各部門和單位的協作變得更為簡單,例如A單位發起一個協作的事件請求,無論這個過程中涉及多少中間環節(數據的來源信息鏈條),公司A都需要將邀請的完整細節信息實時發送給交易的相關方。一旦交易相關方作出交易決策,這個決策也可以被實時處理完成。
聯盟鏈的框架也滿足在各個涉海的相關管理部門形成的供應鏈,其中每一位參與者的如下需求:錄入並追蹤原數據的來源;記錄數據生產的遙測數據;數據的跟蹤;保證包括數據生產、儲存、交易及後續事宜在內的所有數據都不被篡改可以得到滿足,其保證了能夠在過去的層層交易中追溯所需記錄,為數據共享平台中數據的真實性提供了保證。
通過利用聯盟鏈對數字資產的確認,參與人員的協作,與交易數據的溯源方面的優勢可以使得共享經濟在各個涉海的相關管理部門中產生。
2) 數據共享平台與公有鏈的結合
a)典型公有鏈分析
公共區塊鏈是指全世界任何人都可讀取的、任何人都能發送交易且交易能獲得有效確認的、任何人都能參與其中共識過程的區塊鏈,其的共識過程決定哪個區塊可被添加到區塊鏈中和明確當前狀態。以太坊是一條典型的底層公有鏈,以太坊通過建立抽象的基礎層,內置圖靈完備編程語言,使得任何人都能夠創建合約和去中心化應用,並在其中設立他們自由定義的所有權規則、交易方式和狀態轉換函數。以太坊系統主要由以下幾部分組成:
(1)以太坊賬户;
(2)消息和交易;
(3)以太坊狀態轉換函數;
(4)代碼執行;
(5)區塊鏈和挖礦。
b) 數據共享平台搭建在公有鏈的研究分析
公有鏈是面向大眾的、任何人都可讀取的、且可以發送交易並能獲得有效確認,所以在各個涉海的相關管理部門得到的相關數據可以方便地對大眾有償地開放。
區塊鏈允許基於多重簽名的交易合約,例如,5把私鑰裏集齊3把就可以使用資金。以太坊可以做得更細化,例如,5把私鑰裏集齊4把可以花全部資金,如果只3把則每天最多花10%的資金,只有2把就只能每天花0.5%的資金。
另外,區塊鏈裏的多重簽名是支持異步的,雙方可以在不同時間在區塊鏈上註冊簽名,最後一個簽名到位後就會自動發送交易。這樣就可以使得大眾瞭解到數據的具體來源,提高數據的權威性,進而可以構建一個以身份和信譽系統為基礎的去中心化的市場。
c)使用區塊鏈打造數據共享平台的意義
區塊鏈主要解決的是交易的信任和安全問題,它提出了四個技術創新來保證交易的信任和安全的解決:
第一個叫分佈式賬本,就是交易記賬由分佈在不同地方的多個節點共同完成,而且每一個節點都記錄的是完整的賬目,因此它們都可以參與監督交易合法性,同時也可以共同為其作證。
跟傳統的分佈式存儲有所不同,區塊鏈的分佈式存儲的獨特性主要體現在兩個方面:一是區塊鏈每個節點都按照塊鏈式結構存儲完整的數據,傳統分佈式存儲一般是將數據按照一定的規則分成多份進行存儲。二是區塊鏈每個節點存儲都是獨立的、地位等同的,依靠共識機制保證存儲的一致性,而傳統分佈式存儲一般是通過中心節點往其他備份節點同步數據。
沒有任何一個節點可以單獨記錄賬本數據,從而避免了單一記賬人被控制或者被賄賂而記假賬的可能性。也由於記賬節點足夠多,理論上講除非所有的節點被破壞,否則賬目就不會丟失,從而保證了賬目數據的安全性。
第二個叫做非對稱加密和授權技術,存儲在區塊鏈上的交易信息是公開的,但是賬户身份信息是高度加密的,只有在數據擁有者授權的情況下才能訪問到,從而保證了數據的安全和個人的隱私。
第三個叫做共識機制,就是所有記賬節點之間怎麼達成共識,去認定一個記錄的有效性,這既是認定的手段,也是防止篡改的手段。以比特幣為例,採用的是工作量證明,只有在控制了全網超過51%的記賬節點的情況下,才有可能偽造出一條不存在的記錄。當加入區塊鏈的節點足夠多的時候,這基本上不可能,從而杜絕了造假的可能。
最後一個技術特點叫智能合約,智能合約是基於這些可信的不可篡改的數據,可以自動化的執行一些預先定義好的規則和條款。
這四個技術特性使得區塊鏈具有方便進行點對點交易的金融屬性與冗餘存儲,密碼學保證的安全屬性,這兩點與數據共享平台的建設目標恰恰不謀而合。
數據共享平台需要有促使涉海單位具有打破“數據孤島”動力的金融屬性,還要有保證涉海單位分享的數據不被隨意竊取,修改的安全屬性。而區塊鏈天然就是這兩個屬性的擁有者,將區塊鏈技術應用在海洋數據共享領域將會給涉海單位帶來低成本的信任方式、安全的、高效的數據協作方式與可信的、權威的數據交易市場。
三海洋數據共享平台應用模型
1)平台整體架構
以志願船這一“智慧海洋”工程中的典型應用為代表,針對海洋數據資源跨部門開放共享、所有權保護、數據有償使用等問題,設計以下區塊鏈平台。
基於區塊鏈的跨部門海洋數據共享平台架構如圖3所示,以涉海管理部門、科研單位、相關企業為目標用户與網絡節點,通過該平台初步構建出海洋數據聯盟區塊鏈,使得海洋數據資源跨實現部門的開放共享。
基於區塊鏈的跨部門海洋數據共享平台主要由基礎設施層、區塊鏈數據層、區塊鏈共識層、智能合約層、服務層和應用層組成。
圖3:基於區塊鏈的跨部門海洋數據共享平台架構圖
其中,在基礎設施層內,系統使用了包括專用設備、路由器以及服務器等硬件設施,這些硬件設施為它提供了基礎的數據存儲、轉發與計算能力。
區塊鏈數據層是這個系統中非常重要的中心環節,它使用了鏈式結構、時間戳、哈希函數、Merkle樹與非對稱加密等技術使得包括區塊鏈管理節點、區塊鏈認證節點以及涉海管理部門、科研單位、相關企業等節點可以運行在一個公平、公開、可信與可溯源的系統環境中。這其中的鏈式結構是指在區塊鏈系統中取得記賬權的節點會將當前區塊鏈接到前一區塊,形成最新的區塊主鏈。各個區塊依次環環相接,形成從創世區塊到當前區塊的一條最長主鏈,從而記錄了區塊鏈數據的完整歷史。這種做法能夠提供區塊鏈數據的溯源和定位功能,任意數據都可以通過此鏈式結構順藤摸瓜、追本溯源。區塊鏈系統中並不會直接保存原始數據或交易記錄,而是保存其的哈希函數值,即將原始數據編碼為特定長度的由數字和字母組成的字符串後記入區塊鏈,這種做法增加了區塊鏈系統的安全性。哈希函數具有諸多優良特點,因而特別適合用於存儲區塊鏈數據。例如,通過哈希輸出幾乎不能反推輸入值,不同長度輸入的哈希過程消耗大約相同的時間且產生固定長度的輸出,即使輸入僅相差一個字節也會產生顯著不同的輸出值等。比如比特幣中通常採用的是雙SHA256哈希函數,即將任意長度的原始數據經過兩次SHA256哈希運算後轉換為長度為256位的二進制數字來統一存儲和識別。除上述特點外,SHA256算法還具有巨大的散列空間和抗碰撞等特性,這可以使得區塊鏈系統中任何相關標記的需要不會出現衝突。
智能合約層由合約部署、合約測試、日誌管理、實例管理和合約接口組成,智能合約確保區塊鏈數據的透明,便於用户的監管。從用户角度來講,智能合約通常被認為是一個自動擔保賬户。例如,當特定的條件滿足時,程序就會釋放和轉移資金。從技術角度來講,智能合約被認為是網絡服務器,只是這些服務器並不是使用IP地址架設在互聯網上,而是架設在區塊鏈上。從而可以在其上面運行特定的合約程序。代碼的執行是自動的,要麼成功執行,或者所有的狀態變化都撤消(包括從當前失敗的合約中已經送或接收的信息。)這一特性非常重要,因為它避免了合約的部分執行的情況,保證了合約的執行具有原子性。
服務層與應用層通過與智能合約進行交互來實現信息中心管理系統、業務中心繫統與區塊鏈底層系統的連接,進而提供信息存證、信息驗證、信息查驗、歷史追溯、監管等服務。實現信息的交換和共享並向用户查詢檢索等的通用功能。
2)平台基本模型
涉海單位間的區塊鏈網絡主要採用聯盟鏈網絡模型,即各個組織擁有一個區塊鏈節點,沒有中心節點。組織是指有能力在服務器上運行一個及以上區塊鏈節點的一個或幾個單位的集合。基於區塊鏈的跨部門海洋數據共享平台模型如圖4所示。
圖4:基於區塊鏈的跨部門海洋數據共享平台模型圖
a)海洋部門內處理流程
志願船靠岸為例介紹在某一海洋部門內,將採集數據存儲於基於區塊鏈的跨部門海洋數據共享平台之上的過程。
志願船在登陸靠岸之後,當前已採集到了新增數據,要將其存儲於該共享平台之上。首先,通過登錄終端,將觀測的數據上傳到本組織的服務器記錄;其次,本組織對數據進行人工或者自動審核;最後,區塊鏈節點將數據塊的概要(例如地點、時間、版權信息等)和數據詳情的數字摘要等存入區塊鏈賬本,區塊鏈返回這個數據塊記錄在鏈上的唯一標誌。由此產生了一條數據流轉記錄,若干條數據流轉記錄交織就形成了如圖5所示的基於區塊鏈的跨部門海洋數據共享平台模型圖。
b)跨部門間海洋數據共享流通
基於區塊鏈可以實現數據的跨部門間共享流通。首先,網絡中各方可以瀏覽各個數據塊的數據概要。如果有人需要某個數據塊的詳情,可以向數據所有方發起索取請求,數據所有方同意後,將數據塊發送給索取方,然後雙方進行代幣的轉移。最後,根據代幣的數額,每隔一段時間各方進行結算。
c)權限控制與監管
由於海洋數據事關敏感,不是任何人都可以對數據進行操作的,所以必須要進行准入控制和權限管理。准入控制分為兩級:
(1)終端節點向數據存儲節點上傳數據的權限,數據存儲節點向區塊鏈節點上傳數據塊的權限。
(2)區塊鏈節點加入區塊鏈網絡的權限,這需要數字證書和數字證書分發中心的支持。
d)跨鏈數據共享
數據共享平台的目標就是要徹底解決涉海部門之間存在的“數據孤島”問題,所以數據共享平台中數據的互聯互通的解決就包含着兩個層面的含義:
(1)以海洋數據的流動為導向來為涉海相關部門打造多條相關的聯盟鏈
(2)以海洋數據的價值為導向來實現涉海相關部門聯盟鏈之間的相互連接
如此一來,涉海部門之間存在的“數據孤島”問題就會得到根本性的解決,而這其中的關鍵性技術就是如何實現數據共享平台中的跨鏈技術。
針對涉海部門之間的區塊鏈跨鏈數據共享、交易的需求,擬通過對區塊鏈跨鏈交易技術的深入研究,提出一種全新的區塊鏈跨鏈交易架構——互聯鏈,其包括互聯鏈體系結構、互聯鏈共識機制與傳輸協議和互聯鏈隱私保護機制這四個部分。將藉助互聯鏈來實現任意獨立區塊鏈之間的互聯互通,並保障跨鏈交易的有效性和用户隱私數據的安全性。研究框架如圖5所示:
圖5:研究框架
跨鏈數據共享研究內容及擬解決的關鍵問題:
研究工作包括了三個層層遞進的研究內容。首先,對實現跨鏈交易的中間網絡進行需求分析,在此基礎上構建一個能滿足不同區塊鏈互聯互通需求的互聯鏈網絡,實現其與平行區塊鏈網絡的連接,並設計互聯鏈的區塊結構;其次在此基礎上進一步提出互聯鏈的共識機制及傳輸協議,從而保證整個互聯鏈的通用性與交易的安全性;最後提出互聯鏈的隱私保護機制,保證跨鏈交易的隱私性。
3)海洋數據共享中的跨鏈技術
a)跨鏈數據共享項目的研究方案
通過對互聯鏈體系結構、互聯鏈共識機制,傳輸協議與互聯鏈隱私保護機制這四部分的研究來完成跨鏈海洋數據共享項目方案的實現。
(1)互聯鏈體系結構的研究
互聯鏈網絡結構
構建互聯鏈網絡的目的是為了建立一個平行區塊鏈之間的交互網絡。如果把單一的區塊鏈比喻為局域網,互聯鏈的作用則相當於互聯網,其結構如圖6所示。我們的基本思路可以通過互聯鏈網絡的幾種特殊角色以及他們位置的描述得以體現:
區塊鏈節點:運行着區塊鏈客户端程序的節點。
互聯鏈節點:運行着互聯鏈程序的節點。包含數據收發節點、驗證節點、監管節點,其中數據收發節點既是區塊鏈節點又是互聯鏈節點。
數據收發節點:數據收發節點既屬於平行區塊鏈內部,即區塊鏈節點,又屬於互聯鏈節點。其主要功能是負責收集平行區塊鏈內部的交易數據並將其傳輸到驗證節點進行驗證。因為數據收發節點角色具備雙重性,所以數據收發節點可以接收平行區塊鏈的交易,並與平行區塊鏈進行互動。一個平行區塊鏈可以有多個數據收發節點,一個數據收發節點只能對應一個平行區塊鏈。
驗證節點:驗證節點只在互聯鏈內部,不屬於平行區塊鏈的一部分。其主要功能包括從平行區塊鏈中取得交易數據以及驗證交易有效性,並在互聯鏈網絡內同步、共識交易。同一時間,一個驗證節點只可以負責一個平行區塊鏈交易的驗證工作。然而驗證節點不同於數據收發節點,一個驗證節點可以在不同時間內負責多個平行區塊鏈網絡,即輪換。這也就導致在不同時間,一個驗證節點可以和多個平行區塊鏈中的多個不同的數據收發節點,或數據收發節點的集合進行交易傳輸。
監管節點:監管節點也只是在互聯鏈內部。其主要負責監管驗證節點的交易驗證功能,並在發現有驗證節點不正確的行為時對驗證節點進行懲罰。一個監管節點可以監管一個集合(>=1)的驗證節點。
圖6:互聯鏈網絡結構圖
平行區塊鏈與互聯鏈的連接
將平行區塊鏈網絡接入互聯鏈網絡的研究思路是設計一種動態接入方案。該方案擬通過平行區塊鏈網絡中的某些節點運行互聯鏈客户端,向客户端裏預設的某些節點請求得到互聯鏈網絡中活躍的驗證節點信息,並向這些驗證節點發起接入請求;互聯鏈網絡中接收到接入請求的驗證節點查詢自己維護的平行區塊鏈網絡管理表判斷該平行區塊鏈網絡是否已經接入互聯鏈網絡——如果這是初次請求,則在互聯鏈網絡中發起一個全網參與的投票處理該接入請求,從而決定是否允許該平行區塊鏈網絡接入互聯鏈網絡。這個投票算法可以是內部算法,也可以是一個依賴於外部的算法,比如基於Proof-of-Stake的算法。如果投票通過,則發起投票的驗證節點為平行區塊鏈網絡以及發起請求的節點生成特定的識別信息並廣播該識別信息,該驗證節點以及其他收到識別信息的驗證節點都將識別信息存儲在自己維護的平行區塊鏈網絡管理表中。如果這不是初次請求,即平行區塊鏈網絡管理表中存在該平行區塊鏈以及其他相關節點信息,則該驗證節點僅為發起請求的節點——即數據收發節點生成特定的識別信息並廣播,隨後也將該識別信息存入平行區塊鏈網絡管理表中。
平行區塊鏈網絡的識別信息包括靜態信息和動態信息。靜態信息包括一個平行區塊鏈的序列號,驗證該平行區塊鏈的驗證協議信息,以及一個不依賴於平台的驗證協議。由於區塊鏈之間的交易需要路由,所以動態信息包括該新加入平行區塊鏈的一個全局識別的路由標識符,可用於互聯鏈網絡來進行數據的轉移傳遞操作。數據收發節點的標識信息包括數據收發節點的序列號、數據收發節點的地址信息。
互聯鏈網絡中的所有驗證節點都擁有接入的平行區塊鏈網絡及所有相關的數據收發節點信息,而平行區塊鏈網絡中有多個節點與互聯鏈網絡建立了聯繫,因此上述設計可以解決平行區塊鏈網絡與互聯鏈網絡連接的穩定性問題。
在平行區塊鏈與互聯鏈進行接入之後就需要考慮平行區塊鏈與互聯鏈進行交互的問題。
互聯鏈的區塊結構
互聯鏈連接了其他參與的平行區塊鏈。平行區塊鏈中的交易會被存儲在當前平行區塊鏈的區塊中。在互聯鏈的設計中,交易的存儲形式將是重點考慮的問題。本部分將重點闡述互聯鏈中的區塊頭和區塊體的設計思路,其中包括區塊頭以及區塊體的組成部分,以及如此設計的原因。
區塊頭擬包含以下三個字段:
上一個區塊的哈希值:區塊頭將包含上一個區塊的哈希值,這個設計採用現在普遍的區塊鏈的設計,為了滿足區塊鏈權威性,後一個區塊將包含前一個區塊的哈希值來防止篡改,從而形成一個可驗證的區塊鏈。
區塊序列號:為了表明區塊所處的位置,以方便其他函數指向該區塊。
Merkle樹根哈希值:分為通過互聯鏈交易計算生成的哈希值和平行區塊鏈跨鏈交易及有效性證據計算生成的哈希值。前者Merkle樹的樹根是要被存放並加以驗證的;後者使用Trie樹與Merkle的混合樹結構,一方面方便查找賬户,另一方面方便校驗交易是否存在。除此之外,樹中還包含時間戳和驗證者簽名。
區塊體包含交易內容。具體來説,區塊體將會包含平行區塊鏈跨鏈交易及其有效性證據。因為互聯鏈上存儲的信息包含平行區塊鏈之間的跨鏈交易和驗證信息,所以跨鏈交易的內容將會存放在互聯鏈的區塊體中。由於交易涉及平行區塊鏈雙方,互聯鏈區塊體中還會包含平行區塊鏈區塊頭。互聯鏈內部交易也會被存放在互聯鏈區塊體裏,具體結構如圖7所示:
圖7:互聯鏈的區塊結構圖
(2)互聯鏈共識機制的研究
跨鏈交易共識機制
互聯鏈作為一種區塊鏈,自身也需要一種共識機制作為運行基礎。當前主流的區塊鏈共識機制,主要包括PoW及其變種和BFT共識機制。PoW機制的主要問題在於,為了降低分叉的可能性,其區塊生成頻率不能過快,這直接影響了區塊鏈的交易處理速度。例如,比特幣每秒僅能將7筆交易寫入區塊鏈。在BFT共識中,區塊等信息僅由“主節點”發佈,其他節點通過廣播確認消息的方式,對主節點發布的信息達成共識。因而,較快的區塊生成頻率不會產生分叉。所以,BFT共識可以保證較高的交易處理速度。
本研究中,多種不同的平行鏈均能接入互聯鏈。某些平行鏈可能會具備較高的跨鏈交易生成頻率。因而,互聯鏈必須具備極高的交易處理速度,才能夠與高交易生成頻率的平行鏈相匹配,從而及時轉發來自各條平行鏈的交易。基於此,本研究考慮採用BFT算法作為互聯鏈的共識機制,互聯鏈的共識過程如圖8所示。
圖8: 互聯鏈的共識過程
BFT機制的主要問題在於,當網絡中擁有n個節點時,各節點產生的消息數量的複雜度為O(n2),在節點數量增多時,會不成比例地佔用過多的網絡帶寬,使得交易處理速度急劇下降。互聯鏈作為一種能夠接入所有平行鏈的架構,網絡中會存在較多的驗證節點。針對此問題,研究思路是,借鑑PoS中保證金的概念,在節點間引入選舉機制,先從眾多驗證節點中選舉出一部分節點,只允許選出的節點參與共識過程,從而減少每輪共識中驗證節點的數量。具體方法是,每一個驗證節點首先根據其提交的保證金數量和在線的時間長度進行第一輪選舉;進入第二輪選舉的節點,全網根據其過往的歷史表現情況進行投票;最後將候選節點的得分存儲在一個優先隊列中,根據系統需要選取前N個節點作為新的驗證節點參與共識。我們將深入研究和全面評估採用BFT機制和借鑑PoS中保證金概念的可行性和有效性。
在後續的研究過程中,擬設計出得分計算公式,合理分配保證金數量、在線時間長度、過往歷史表現等主要考量因素的權重,從而保證共識機制的流暢運行。
BFT機制的另一個問題,當一條平行區塊鏈長期由固定的驗證節點負責完成共識時,可能會造成一定的安全隱患。例如,一組驗證節點可能會共謀,干擾平行區塊鏈發往互聯鏈的交易。因此,本方案考慮定期輪換每條平行區塊鏈對應的驗證節點,並設計相應的輪換算法。
在多中心化的條件下,為了排除某些驗證節點在輪換中作弊,長期負責某一特定的平行區塊鏈,必須保證分配過程是隨機且可驗證的。本機制擬採取的措施是,借鑑PoW的思路,預先給定一個目標值tg。在第i次輪換時,選擇高度為i的互聯鏈區塊,找到其區塊頭的哈希值hi。如果這一驗證節點的賬户地址為addr,那麼該驗證節點需要找到一個整數nonce,使其滿足以下不等式:
假設當前共有M個區塊接入互聯鏈,給每條平行區塊鏈賦予一個編號,則計算
隨後,在選舉出的節點間廣播。這一節點將在接下來的一段時間裏負責平行區塊鏈p的交易驗證。由於哈希函數具備單向性特點,預先給定目標值,無法推測出哈希函數的輸入。因而,這一方式可以保證某一節點無法事先指定負責的平行區塊鏈。此外,任何節點都可以依據廣播的消息,驗證分配結果的有效性。
我們現在考慮僅僅在固定的時間段之後完成PoW過程,而不是在每輪共識中均進行運算。這樣,其消耗的電能資源相對較小。
在獲得平行區塊鏈之後,互聯鏈中的各驗證節點就可以完成共識機制。與傳統的區塊鏈共識機制不同,在互聯鏈中,同一時刻對於某條特定的區塊鏈p,只有一部分節點Vp負責驗證來自p的交易。因此,本方案需要經過組內和全局兩輪共識。
在組內共識中,Vp內的節點先要驗證來自p的交易的有效性。最精確的驗證方式是,Vp內的驗證節點均存儲p的完整區塊鏈副本。但是,這會加重驗證節點的存儲負擔。基於此問題,研究思路是借鑑簡易支付驗證(Simplified Payment Verification, SPV)的思想,在驗證節點中保存各條平行區塊鏈的區塊頭,依靠區塊鏈的Merkle樹機制完成交易驗證。
每條平行區塊鏈在生成一個新區塊時,均要通過數據收發節點把區塊頭髮送至對應的驗證節點,驗證節點再將此區塊頭廣播到互聯鏈網絡。這樣,區塊頭最終被包含到互聯鏈區塊鏈中。通過這種方式,各驗證節點都包含了所有平行區塊鏈的區塊頭。因為每個區塊頭相對較小(例如,比特幣的區塊頭大小僅為80字節),所以,相對於保存完整的平行區塊鏈副本而言,採用這一方式能夠顯著減輕驗證節點的存儲負擔。
現有的區塊鏈在生成區塊時,都會利用區塊中包含的全部交易,構造一棵Merkle樹,並將Merkle根存儲於區塊頭中。因而,可以利用Merkle樹驗證交易的有效性。數據收發節點在向驗證節點發送交易時,需要指明此交易所在區塊的區塊頭。
此外,驗證節點還需要獲取Merkle樹中必要的分枝。
圖9中,為了驗證交易A(TxA)的有效性,驗證節點需要從各個數據收發節點獲取HB、HCD兩個節點的值(圖中以虛線表示),然後計算HAB和Merkle根,以此判斷交易A是否已經包含在指定的區塊中。對於採用PoW共識的平行區塊鏈而言,還需要在收到跨鏈交易所在的區塊頭之後,接收到足夠多的區塊頭(例如,比特幣為6個),才能夠確認這筆交易的有效性。
Vp中的驗證節點在確認交易有效性後,使用BFT機制對其有效性達成“組內共識”。隨後,Vp中的驗證節點將交易簽名後,廣播至互聯鏈網絡。與此同時,Merkle樹分枝上的各個節點也被一起發送。通過這種方式,全網中任何一個驗證節點都可以驗證跨鏈交易的有效性。
接下來,互聯鏈中的所有驗證節點檢查交易是否包含了足夠多的簽名,並運用BFT機制,對Vp內的節點發布的交易達成“全局共識”。最終,交易會被記錄在由BFT“主節點”發佈的區塊中,並被包含在互聯鏈的區塊鏈內。通過這種方式,跨鏈交易在互聯鏈中形成了一整套難以篡改的記錄,從而成為各條平行區塊鏈進行交易的存證。
圖9:Merkle樹實例
跨鏈交易傳輸協議的研究
在平行區塊鏈與互聯鏈進行連接之後就需要考慮平行區塊鏈與互聯鏈進行交互的問題。此部分擬提出針對該問題的一個初步的解決方案。
互聯鏈維護着一種基於Merkle Tree的隊列結構,用來進行多個平行區塊鏈之間的數據傳遞。具體來説,每個平行區塊鏈包含一個輸入/出隊列。互聯鏈會把一個交易發起者平行區塊鏈的輸出隊列上的交易放到目的地址平行區塊鏈的輸入隊列上。
這個過程是異步進行的,並且沒有返回路徑。因此而帶來的交易傳輸錯誤需要其他的交易恢復機制來修復。
出隊列和入隊列的設計如下:
出隊列:這是平行區塊鏈用於發送交易的一個隊列集合。這個隊列集合在這個平行區塊鏈所指定的數據收發節點上維護。隊列集合中的隊列分別對應其他所有已加入的平行區塊鏈的路由標識符,即每一個隊列對應該平行區塊鏈向另外一個隊列發送的交易的一棵Merkle Tree。
入隊列:不同於出隊列,入隊列是一個單一隊列(一個Merkle Tree)。上面存儲着所有發往該平行區塊鏈的交易區塊頭。由於交易區塊頭中包含一個源地址,所以數據收發節點可以識別一筆交易的發起方,如圖10所示:
圖10: 平行區塊鏈與互聯鏈之間的通信接口
每筆交易發起的時候交易區塊頭都將放到數據收發節點的隊列中存證。假如不是一筆跨鏈交易,交易不發送,區塊頭仍然是由數據收發節點發送給驗證節點。這個時候交易所對應區塊的區塊頭就會被放入數據收發節點上的出隊列。假如是一筆跨鏈交易,交易也發送,區塊頭和上述處理一致。
在進行共識的同時,互聯鏈可以利用交易在節點間的廣播機制,完成交易傳輸。
互聯鏈中,每條平行區塊鏈都被賦予一個地址。在每筆跨鏈交易中,都包含源平行區塊鏈和目的平行區塊鏈地址,以及平行區塊鏈中發送方和接收方的地址。由於不同的區塊鏈,採用不同的交易結構,所以,交易在發送到互聯鏈網絡時,需要被封裝為統一的形式。當交易被傳輸至目的平行區塊鏈後,數據收發節點再依據跨鏈交易中的內容,創建符合目的平行區塊鏈格式的新交易,繼而將這筆新交易記錄在目的平行區塊鏈中。因而,我們需要為跨鏈交易的傳輸設計一種專用的交易格式。
圖11展示了在互聯鏈系統中,一筆交易從源平行區塊鏈(鏈A)發送至目的平行區塊鏈(鏈B)的過程。
圖11: 跨鏈交易傳輸過程
鏈A中的交易發起者創建一筆跨鏈交易,在鏈A的網絡內部,跨鏈交易先被髮送至本地數據收發節點。在鏈A的全網達成共識後,本地數據收發節點把跨鏈交易暫存在出隊列中,然後從出隊列中取出交易,將其封裝為互聯鏈通用的交易格式,隨後,發往負責鏈A的驗證節點。鏈A的各個驗證節點在驗證這筆交易的有效性,並達成組內共識之後,就可以向互聯鏈網絡中的所有驗證節點廣播這筆交易。
各驗證節點接收到跨鏈交易後,都會檢查相應交易的目的平行區塊鏈是否為自身對應的平行區塊鏈。如果是,就把這筆交易發送至目的平行區塊鏈(鏈C)中數據收發節點的入隊列裏。數據收發節點以一定頻率從入隊列中取出交易,並依據交易信息,構造符合鏈C格式的新交易,隨後在鏈C網絡中發佈這筆新交易。
這裏,數據收發節點起到了交易在鏈內和鏈間的“轉換器”作用。在以太坊等區塊鏈平台中,數據收發節點可以採用“智能合約”實現。在智能合約上,部署着跨鏈交易的數據收發程序。當一筆跨鏈交易被髮送至智能合約的賬户時,就會觸發程序的運行。但是,以比特幣為代表的區塊鏈平台,並未提供圖靈完備的智能合約。所以,本項目將進一步研究如何為各條區塊鏈設計一種通用的“數據收發節點”機制。
(3)互聯鏈隱私保護機制的研究
與達世幣、門羅幣採用的隱私保護機制相比,零幣採用的zkSNARK零知識證明算法是現有隱私保護技術中最成熟、可行的一種,其匿名性更好,無需信任中心節點,也不需要網絡中其他用户的參與,用户通過與匿名貨幣交互即可實現匿名交易,從而有效地保護了用户隱私。故本方案選用zkSNARK算法來實現跨鏈交易中的隱私保護。
互聯鏈zkSNARK算法公共參數構建
zkSNARK算法能夠被應用到經典NP問題裏的所有問題,目前還沒有研究表明zkSNARK算法適用於NP以外的問題。區塊鏈中的交易驗證規則屬於NP問題,因此zkSNARK算法可以解決交易有效性驗證問題。然而,zkSNARK算法並不能直接應用到交易有效性驗證中,需要將交易驗證規則轉換成zkSNARK算法能夠操作的特定形式,稱為“二次算術程序”(QAP)。
為了將交易驗證規則轉換成QAP形式,首先需要將交易驗證規則函數轉換成NP完全語言R1CS形式:首先,將交易驗證規則抽象成複雜多項式形式,然後將複雜多項式分解成兩種形式:與
,op可以是加減乘除等操作符,y和z可以是變量、數字和子表達式;其次,將分解好的表達式轉換成一系列三元向量(a,b,c)形式。最後根據拉格朗日插值法將R1CS形式轉換為QAP形式。QAP形式如下:
由於互聯鏈的交易驗證規則包括驗證簽名、計算Merkle樹根哈希值等複雜多項式操作,所以由其構建的QAP形式包含大量哈希運算函數,直接計算QAP形式中的線性組合會消耗大量計算資源以及時間。為了避免上述情況,需要將QAP形式中包含的多項式轉換成在某一安全隨機變量rn處的取值,此時上述QAP等式仍然成立。
為了避免直接將多項式在安全隨機變量處的取值公佈在公共參數中,基於橢圓曲線生成點將數值轉換為橢圓曲線上的點:
其中P是橢圓曲線上的點。在現有研究體系下,基於橢圓曲線的離散對數問題是很難解決的,即由P和G得到n是極其困難的。因此,將數值轉換過後的點公佈在公共參數中。
為了使互聯鏈網絡中的驗證節點在不知曉交易相關隱私信息如交易雙方、交易金額的情況下能夠驗證交易的有效性,需要使用橢圓曲線對函數,該函數需要滿足的條件如下:
其中P、Q、R是橢圓曲線上的點,為了驗證互聯鏈交易規則轉換的QAP等式,只需驗證:
其中:
除QAP等式中多項式的係數隨着交易的發送方、接收方、轉移金額有所不同之外,基於互聯鏈交易驗證規則構造的QAP等式是固定的。通過特定的公共參數,節點可以在不透露交易隱私信息的情況下證明生成交易有效的證據;相應地,通過特定的公共參數,驗證節點可以驗證交易附帶證據的有效性,從而做出接收或者拒絕該交易的操作。
互聯鏈中跨鏈匿名交易驗證及實現
互聯鏈作為轉發、驗證跨鏈匿名交易的載體,需要能夠驗證跨鏈匿名交易的有效性。跨鏈交易分為跨鏈透明交易、跨鏈匿名交易兩種類型。跨鏈透明交易提供交易本身內容以及相關Merkle分支證據,互聯鏈網絡中的驗證節點可以按照平行區塊鏈註冊的驗證規則驗證該筆交易的有效性。而跨鏈匿名交易不會透露除該交易有效之外的任何信息,互聯鏈網絡中的驗證節點需要知道每一種平行區塊鏈網絡啓動階段生成的公共參數,並利用這些公共參數驗證來自平行區塊鏈的跨鏈匿名交易的有效性,零知識證明算法保證互聯鏈網絡中的驗證節點無法知道除該跨鏈交易有效之外的任何信息。
一筆跨鏈交易包括源平行區塊鏈標識、目的平行區塊鏈標識、交易數據、交易有效性證據,其中交易數據根據跨鏈操作的類型來確定。互聯鏈網絡中的驗證節點接收到一筆跨鏈交易時,基於源平行區塊鏈標識,根據其註冊的交易有效性驗證規則,驗證交易有效性證據是否正確;基於目的平行區塊鏈標識,在互聯鏈的同步過程中,路由到目的平行區塊鏈。
由於跨鏈交易包含的交易數據以及交易有效性證據會泄露交易雙方地址、操作類型等關鍵隱私信息,因此跨鏈匿名交易的設計原則是在不透露用户關鍵隱私的前提下,向互聯鏈網絡中的驗證節點提供一種可以驗證其有效性的方法,同時保證目的平行區塊鏈能夠解析跨鏈數據,從而觸發相關操作。
為了使目的平行區塊鏈能夠解析跨鏈數據,源平行區塊鏈與目的平行區塊鏈使用基於橢圓曲線的Diffie-Hellman密鑰交換協議生成所需的對稱密鑰,源平行區塊鏈使用該對稱密鑰加密跨鏈數據,將密文放入跨鏈匿名交易中。
互聯鏈網絡中的驗證節點基於區塊鏈輕客户端原理來驗證跨鏈交易的有效性,一般來説,輕客户端原理包括但不限於使用Merkle樹根哈希值以及相關Merkle分支來驗證交易是否發生、使用序列號來防止交易重放攻擊。跨鏈透明交易可以簡單通過UTXO模型或Account模型中隨機數的方法來防止交易重放攻擊,與跨鏈透明交易不同,跨鏈匿名交易由於隱藏了關鍵信息,驗證節點無法通過已有的信息來判斷跨鏈匿名交易是否進行了重放攻擊,因此需要設計一種基於跨鏈匿名交易的序列號機制。我們擬使用用户私鑰與隨機數通過偽隨機函數生成序列號,同時將隨機數作為生成的零知識證明的一部分,將序列號綁定到跨鏈匿名交易使用的匿名資產上,因此跨鏈匿名交易顯示地包括了序列號信息,從而可以防止交易重放攻擊問題。
基於zkSNARK算法,將跨鏈匿名交易Merkle樹根哈希值、序列號、及其它信息作為首要輸入,將交易信息、Merkle分支、交易發起方公私鑰隱私信息、接收方公鑰信息、相關隨機數作為輔助輸入,使用公共參數提供的證明密鑰生成零知識證明。
互聯鏈網絡中的驗證節點接收跨鏈匿名交易時,根據源平行區塊鏈標識,驗證其包含的Merkle樹根哈希值是否存在於源平行區塊鏈的區塊頭構成的鏈中,如果驗證通過,則驗證其包含的序列號是否存在於源平行區塊鏈已看到的序列號集合中,若存在,證明該交易會導致重放攻擊,若不存在,將序列號加入源平行區塊鏈的序列號集合中。然後使用平行區塊鏈註冊的交易驗證規則及zkSNARK算法啓動階段構造的公共參數,驗證跨鏈匿名交易附帶的零知識證明的有效性。如果跨鏈匿名交易包含的零知識證明通過驗證,則代表該交易確實在源平行區塊鏈中存在且有效。
目的平行區塊鏈接收到由互聯鏈路由的跨鏈匿名交易時,使用基於橢圓曲線的Diffie-Hellman密鑰交換協議生成的對稱密鑰解密跨鏈數據的密文,根據得到的明文觸發相關操作。
上述跨鏈匿名交易驗證機制可以使互聯鏈網絡中的驗證節點在不知曉交易雙方隱私信息的前提下,驗證其有效性,並且目的平行區塊鏈能夠解析跨鏈匿名交易,從而安全地執行相應的跨鏈操作。
(4)跨鏈海洋數據共享的特色與創新
着眼於區塊鏈技術的實際需求和發展趨勢,提出一種全新的區塊鏈跨鏈交易架構--互聯鏈,以支持互相獨立的平行區塊鏈之間的跨鏈交易,並將其運用於跨部門海洋數據共享。該架構的主要特色和創新之處體現在以下幾個方面:
a)一種能保證可擴展性和安全性的互聯鏈體系結構。該結構創新地使用互聯鏈網絡連接相互獨立的平行區塊鏈網絡,可以支持眾多區塊鏈網絡的接入,具有良好的可擴展性;所有的跨鏈交易將會被寫入互聯鏈的區塊鏈賬本中,從而實現跨鏈交易的可溯源。在該結構中,跨鏈交易的雙方公開跨鏈交易驗證信息,使得交易雙方無需基於信任也可以進行安全交易。
b)一種PoS和BFT相結合的共識機制及傳輸協議。針對互聯鏈對於交易處理速度的要求,同時為了保證在節點較多的情況下仍能維持較高的性能,本研究創新性地將PoS和BFT兩類共識機制相結合,通過PoS選舉出參與每輪共識的驗證節點,通過驗證節點輪換機制來實現不同區塊鏈之間的共識,並且在共識的過程中就可以實現跨鏈交易的傳輸,從而實現鏈與鏈之間的無縫對接,能很好地保證跨鏈操作的安全性和通用性。
c)一種基於zkSNARK零知識證明算法的互聯鏈隱私保護機制。本研究根據平行鏈網絡、互聯鏈網絡的交易驗證規則確定zkSNARK算法啓動階段的公共參數。通過公共參數的證明密鑰,節點可以生成交易相關隱私信息的零知識證明;通過公共參數的驗證密鑰,驗證節點可以在不知曉跨鏈隱私信息的情況下驗證該零知識證明的有效性。從而在完成跨鏈交易的情況下,保證跨鏈交易的隱私性。
4)平台整體流程圖
基於區塊鏈的智能合約構建和執行可分為三步,首先是多方用户共同參與制定一份合約,然後通過P2P網絡擴散並存入區塊鏈,最後區塊鏈的智能合約自動執行檢查、驗證、保存等過程。根據區塊鏈技術路徑,基於區塊鏈的海洋數據共享流通的流程如圖12所示。
a)生成智能合約
海洋數據資源部門參與到區塊鏈,每個部門都掌握一對公鑰和私鑰,保障其在區塊鏈內的權限。各部門根據需要共同商定一份承諾,承諾規定了雙方的權利和義務,然後承諾以電子化形式編程,轉變為機器語言,各部門用各自掌握的私鑰進行簽名以確保合約的有效性。通過各部門的共同認可,選擇某部門作為區塊鏈的共識節點,由它代為執行把智能合約傳入區塊鏈網絡中。
b)共享業務創建
當機構A進行業務處理時,比如數據的增加(例如志願船靠岸後,通過登錄終端,將觀測的數據上傳到本組織的服務器記錄)、刪除時,首先對其身份證明、信用狀況等基本信息進行核實,然後利用私鑰進行數字簽名,製成共享表單並將數據塊的概要(例如地點、時間、版權信息等)和數據詳情的數字摘要存入區塊鏈賬本,區塊鏈返回這個數據塊記錄在鏈上的唯一標誌,並通過P2P網絡擴散到整個區塊鏈上的相關業務機構。
c)全網共識
當共享表單傳播至全網,每個機構都將收到的表單暫時緩存到區塊中,只要有一個部門查詢到以前該信息的共享表單,就把所有加蓋時間戳的該區塊記錄的表單傳播給全網,並由全網其他機構核對,最後生成共享總表單。
d)結果反饋
通過區塊鏈上的機構信息驗證後,通過數字簽名反饋給請求機構,對已有信息進行提醒,避免重錄信息、反饋殘缺信息、揭發有誤信息,從而使請求部門作出合理的決策。
e)帶有激勵機制的數據共享
網絡中各方可以瀏覽區塊鏈上各個數據塊的數