王 姝 孫善鵬 樊景超 劉 佳 郭志斌 王麗娟 李成贊 周國民 周園春*
(1.中國科學(xué)院計算機網(wǎng)絡(luò)信息中心,北京 100190;2.國家農(nóng)業(yè)科學(xué)數(shù)據(jù)中心,北京 100081;3.中國農(nóng)業(yè)科學(xué)院科技管理局,北京 100081;4.中國農(nóng)業(yè)科學(xué)院農(nóng)業(yè)信息研究所,北京 100081)
近幾年農(nóng)業(yè)科學(xué)技術(shù)呈現(xiàn)快速發(fā)展的趨勢,同時農(nóng)業(yè)科學(xué)數(shù)據(jù)的快速增長為科研人員獲取信息和研究成果帶來更多機遇,同時農(nóng)業(yè)科學(xué)數(shù)據(jù)的開放共享也帶來了巨大的挑戰(zhàn)。
在大數(shù)據(jù)背景下,農(nóng)業(yè)科學(xué)數(shù)據(jù)成為重要的數(shù)字資產(chǎn)。農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源涉及科學(xué)數(shù)據(jù)生成、處理、發(fā)布等一系列環(huán)節(jié)[1]。傳統(tǒng)的數(shù)據(jù)溯源系統(tǒng)一般采用集中方式存儲數(shù)據(jù),存在單點故障、易受攻擊等安全問題。農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源目的是為了實現(xiàn)農(nóng)業(yè)科學(xué)數(shù)據(jù)生成、處理、發(fā)布等環(huán)節(jié)的追溯,而區(qū)塊鏈具備數(shù)據(jù)的防篡改、可溯源等特性,兩者的結(jié)合對于農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源具有重要作用。同時,如果科學(xué)數(shù)據(jù)沒有標(biāo)識,數(shù)據(jù)溯源信息無法互聯(lián)互通及共享,導(dǎo)致溯源信息難以實現(xiàn)全環(huán)節(jié)覆蓋,給數(shù)據(jù)全生命周期的跟蹤與溯源造成阻礙。科學(xué)數(shù)據(jù)標(biāo)識技術(shù)將在Internet環(huán)境中提供對科學(xué)數(shù)據(jù)的便捷訪問,從而可以更有效地對各種科學(xué)數(shù)據(jù)進行唯一標(biāo)識、引用、關(guān)聯(lián)、數(shù)據(jù)溯源、版本管理和重用等。
本文針對目前農(nóng)業(yè)科學(xué)數(shù)據(jù)工作中對數(shù)據(jù)標(biāo)識和數(shù)據(jù)溯源的問題,提出了一種基于區(qū)塊鏈技術(shù)的解決方案,解決農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源中存在的問題。通過區(qū)塊鏈和標(biāo)識技術(shù)記錄數(shù)據(jù)集的變化和演變過程,實現(xiàn)驗證數(shù)據(jù)集真實性、完整性并保證科學(xué)數(shù)據(jù)的可追溯性。
科學(xué)數(shù)據(jù)是人們通過觀測、實驗、測量、調(diào)查和計算等方式進行數(shù)據(jù)采集,形成對自然、社會等客觀現(xiàn)象描述的實體。目前農(nóng)業(yè)科學(xué)數(shù)據(jù)快速增長,對數(shù)據(jù)標(biāo)識的需求越來越大。利用標(biāo)識技術(shù)實現(xiàn)不同編碼體系之間的數(shù)據(jù)的互聯(lián)互通,對農(nóng)業(yè)科學(xué)數(shù)據(jù)的開放共享具有重要的推動作用。通過對農(nóng)業(yè)科學(xué)數(shù)據(jù)分配唯一標(biāo)識,使用標(biāo)識解析服務(wù)實現(xiàn)農(nóng)業(yè)科學(xué)數(shù)據(jù)的定位、查詢、尋址訪問等,從而實現(xiàn)科學(xué)數(shù)據(jù)層面的開放共享[2]。
目前,國際上主要科學(xué)數(shù)據(jù)標(biāo)識體系包括Han‐dle、OID(Object Identifier)[3]、CSTR(China Science and Technology Resource)[4]等,其中Handle 標(biāo)識體系中主要面向科學(xué)數(shù)據(jù)應(yīng)用的DOI(Digital Object Iden‐tifier)[5‐6]和PID(Persistent Identifier)[7]。通過表1 分析對比了目前主要的科學(xué)標(biāo)識體系的編碼格式、應(yīng)用領(lǐng)域、優(yōu)缺點等方面內(nèi)容。
為了在推動農(nóng)業(yè)科學(xué)數(shù)據(jù)廣泛的開放共享,同時在保證安全性的前提下自主可控地開放科學(xué)數(shù)據(jù),將區(qū)塊鏈技術(shù)應(yīng)用于科學(xué)數(shù)據(jù)溯源應(yīng)用將極大促進數(shù)據(jù)的開放共享,同時支持國際多種標(biāo)識體系和國家標(biāo)識標(biāo)準(zhǔn)的兼容互通。
2008 年比特幣白皮書中提出了“區(qū)塊鏈”的概念,區(qū)塊鏈技術(shù)逐漸引起全球范圍廣泛的關(guān)注,區(qū)塊鏈技術(shù)是由多方參與共同維護全網(wǎng)一致的分布式賬本,通過使用密碼機制確保傳輸數(shù)據(jù)和訪問數(shù)據(jù)安全性的技術(shù)體系。隨著區(qū)塊鏈技術(shù)的發(fā)展,“區(qū)塊鏈+”行業(yè)應(yīng)用模式在各行各業(yè)積極探索[8‐10]。
根據(jù)區(qū)塊鏈的開放程度,可以分為公有鏈和聯(lián)盟鏈,公有鏈沒有準(zhǔn)入要求,是一種完全去中心化的區(qū)塊鏈,而聯(lián)盟鏈只對聯(lián)盟成員開放,參與用戶需要事先經(jīng)過審核,聯(lián)盟成員共同維護公共賬簿,聯(lián)盟鏈能夠更好地解決數(shù)據(jù)權(quán)限、開放共享、數(shù)據(jù)安全、隱私保護等方面的問題[11]。
Fabric 是一個模塊化且可擴展的開源系統(tǒng),用于部署和操作許可的區(qū)塊鏈,也是Linux 基金會(www.hyperledger.org)托管的Hyperledger 項目之一。Fab‐ric 是用于運行分布式應(yīng)用程序的第一個真正可擴展的區(qū)塊鏈系統(tǒng)。Fabric 和以太坊有些相似,企業(yè)級區(qū)塊鏈可以基于Fabric構(gòu)建支撐平臺。
目前,許多國內(nèi)的互聯(lián)網(wǎng)公司還與Hyperledger Fabric 合作推出了BaaS 平臺,該平臺也用于貿(mào)易金融、數(shù)字出版、數(shù)據(jù)交易、產(chǎn)品追溯等應(yīng)用領(lǐng)域。為了虛擬和數(shù)字形式實現(xiàn)價值交換,通過采用分布式賬本技術(shù),實現(xiàn)安全可控的溯源和交易[12‐13]。
本文試驗驗證采用Fabric 聯(lián)盟鏈作為農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源聯(lián)盟鏈的技術(shù)基礎(chǔ),將區(qū)塊鏈、數(shù)據(jù)標(biāo)識和科學(xué)數(shù)據(jù)溯源集成到平臺中,技術(shù)架構(gòu)如圖1 所示,同時提供異地節(jié)點運行環(huán)境和科技云運行環(huán)境。節(jié)點管理包括創(chuàng)建物理鏈、異地節(jié)點加入等,智能合約管理包括智能合約部署、更新、日志管理、合約瀏覽等。開放區(qū)塊鏈API服務(wù)可以提供身份認(rèn)證、合約管理、節(jié)點管里、數(shù)據(jù)存儲等API為上層科研應(yīng)用提供服務(wù)[15]。
區(qū)塊鏈網(wǎng)絡(luò)中的成員共同創(chuàng)建區(qū)塊鏈網(wǎng)絡(luò)聯(lián)盟,這就是物理鏈,物理鏈中的成員需各自維護CA 節(jié)點和peer 節(jié)點,并通過共用order 節(jié)點進行共識。在Fabric 網(wǎng)絡(luò)中,CA 節(jié)點為物理鏈中的成員提供安全可靠的身份信息。Peer節(jié)點是記賬節(jié)點,負(fù)責(zé)維護狀態(tài)數(shù)據(jù)和賬本的副本。除了記賬之外peer 節(jié)點也可以是背書節(jié)點、記賬節(jié)點或主節(jié)點等。
為了保護區(qū)塊鏈成員之間數(shù)據(jù)交易范圍和機密性。通過構(gòu)建邏輯鏈子鏈,包括區(qū)塊鏈網(wǎng)絡(luò)中兩個或多個特定成員,邏輯鏈成員共同維護一個分布式賬本。邏輯鏈上的成員可以通過安裝鏈代碼來執(zhí)行簡單的交易指令。如圖2 所示展示了邏輯鏈的典型事務(wù)流程。
表1 不同標(biāo)識體系的特點Table 1 Characteristics of different identification systems
本文利用區(qū)塊鏈技術(shù)為農(nóng)業(yè)科學(xué)數(shù)據(jù)提供溯源方案,包括標(biāo)識平臺、科學(xué)數(shù)據(jù)中心等角色。標(biāo)識平臺為科學(xué)數(shù)據(jù)中心提供標(biāo)識注冊解析、標(biāo)識管理、關(guān)聯(lián)引用、元數(shù)據(jù)檢索、統(tǒng)計等服務(wù)??茖W(xué)數(shù)據(jù)中心是農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源聯(lián)盟鏈的使用者,利用區(qū)塊鏈技術(shù)的去中心化,不可篡改及可追溯的特征,基于聯(lián)盟鏈記錄和更新農(nóng)業(yè)科學(xué)數(shù)據(jù)從產(chǎn)生、處理,再到成果等各個環(huán)節(jié)的數(shù)據(jù)信息,保障農(nóng)業(yè)科學(xué)數(shù)據(jù)的高效利用。
農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源聯(lián)盟鏈業(yè)務(wù)流程包括創(chuàng)建物理鏈、創(chuàng)建邏輯鏈、合約安裝、上層應(yīng)用調(diào)用4 個步驟,具體如下:
(1)創(chuàng)建鏈物理
首先確定物理鏈的成員信息,確定主機節(jié)點,同時確定1 個或多個peer 節(jié)點。其次需要確定共識類型,同時確定加入本物理鏈的成員單位,如圖3 所示。成功創(chuàng)建物理鏈后,分別啟動標(biāo)識平臺和數(shù)據(jù)中心各自的CA 及peer 節(jié)點,等待創(chuàng)建邏輯鏈和安裝智能合約。
(2)創(chuàng)建邏輯鏈
具有相同需求的節(jié)點可以共同創(chuàng)建一條邏輯鏈,針對標(biāo)識及數(shù)據(jù)溯源信息的訪問需求,標(biāo)識平臺和數(shù)據(jù)中心之間可以共建一條邏輯鏈。成功創(chuàng)建邏輯鏈之后,成員和根據(jù)應(yīng)用需求創(chuàng)建智能合約,并進行區(qū)塊的寫入和訪問操作。
(3)編寫安裝合約及實例化
創(chuàng)建邏輯鏈之后,標(biāo)識平臺或數(shù)據(jù)中心可以通過授權(quán)登錄并進行智能合約的編寫操作,完成智能合約編寫后可以上傳到區(qū)塊鏈平臺。區(qū)塊鏈平臺的其他管理員根據(jù)對數(shù)據(jù)操作的需求,可以選擇合適的智能合約,并安裝運行在所屬節(jié)點上,作為背書候選節(jié)點,最后安裝了這個智能合約的成員,可以進行實例化合約操作,如圖4所示。
(4)調(diào)用合約
與區(qū)塊鏈賬本直接交互的一系列操作過程是通過調(diào)用智能合約實現(xiàn)。數(shù)據(jù)中心和標(biāo)識平臺需要開發(fā)相應(yīng)的應(yīng)用程序及SDK 來遠(yuǎn)程調(diào)用智能合約進行賬本的讀寫操作。
農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源是通過數(shù)據(jù)溯源記錄信息來實現(xiàn)追源的目的,但是記錄信息本身也是數(shù)據(jù),同樣存在安全問題,為了防止有人惡意篡改數(shù)據(jù)溯源記錄的相關(guān)信息,利用區(qū)塊鏈技術(shù)有效地防止惡意篡改聯(lián)盟鏈中的溯源記錄,對農(nóng)業(yè)科學(xué)數(shù)據(jù)對象在生命周期內(nèi)修改行為的記錄按時間先后組成溯源鏈,通過溯源鏈記錄數(shù)據(jù)上鏈、更新等數(shù)據(jù)全生命周期信息,數(shù)據(jù)溯源信息賬本寫入流程如圖5所示。
農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源上鏈步驟:
1.農(nóng)業(yè)科學(xué)數(shù)據(jù)上鏈數(shù)據(jù)準(zhǔn)備,上鏈數(shù)據(jù)包括:數(shù)據(jù)集標(biāo)識、版本信息、元數(shù)據(jù)、數(shù)據(jù)發(fā)布者信息、關(guān)聯(lián)標(biāo)識、關(guān)鍵字、數(shù)據(jù)集簽名等。
2.數(shù)據(jù)集標(biāo)識注冊,數(shù)據(jù)集標(biāo)識是科學(xué)數(shù)據(jù)的永久唯一標(biāo)識,可實現(xiàn)科學(xué)數(shù)據(jù)的定位、追溯、引用、統(tǒng)計與評價。數(shù)據(jù)中心向標(biāo)識平臺注冊數(shù)據(jù)集標(biāo)識,通過標(biāo)識解析可以獲取數(shù)據(jù)集的URL和標(biāo)識信息等。
3.數(shù)據(jù)集簽名,對數(shù)據(jù)集中每個文件內(nèi)容進行簽名,簽名算法包括:MD5、SHA‐256、SM3 等。更新數(shù)據(jù)集或數(shù)據(jù)集合時,將跟蹤所有上鏈數(shù)據(jù)的更改,包括該數(shù)據(jù)集合中每個文件的簽名,從而使用戶可以查看該數(shù)據(jù)集隨時間的詳細(xì)演變歷史。
4.調(diào)用智能合約寫入數(shù)據(jù),數(shù)據(jù)中心通過接口的方式調(diào)用智能合約,在驗證身份及權(quán)限信息之后,才能將準(zhǔn)備的上鏈數(shù)據(jù)寫入賬本。
本文是通過使用科學(xué)數(shù)據(jù)存儲庫(簡稱Sci‐enceDB)中數(shù)據(jù)集更新過程記錄來進行試驗驗證,ScienceDB 是一個公共的通用型科學(xué)數(shù)據(jù)存儲庫,主要面向科研人員、科研項目/團隊、科研期刊、科研機構(gòu)及高校等利益相關(guān)者,提供科學(xué)數(shù)據(jù)匯交、長期保存、出版、共享和獲取等服務(wù)。科學(xué)數(shù)據(jù)溯源上鏈?zhǔn)腔赟cienceDB 中數(shù)據(jù)集標(biāo)識信息、元數(shù)據(jù)、簽名信息的上鏈,當(dāng)數(shù)據(jù)集更新或版本變化時,也將這些更新記錄上鏈,最終完成整個科學(xué)數(shù)據(jù)溯源記錄上鏈。
農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源鏈可以使研究人員有效地驗證數(shù)據(jù)集的真實性,查看歷史數(shù)據(jù)并驗證所有權(quán)信息,跟蹤來源并安全存儲有關(guān)農(nóng)業(yè)科學(xué)數(shù)據(jù)的元數(shù)據(jù)和驗證信息,并以可驗證的方式跟蹤該數(shù)據(jù)的更改,以安全且可獨立驗證的方式促進數(shù)據(jù)重用,這對于農(nóng)業(yè)科學(xué)數(shù)據(jù)研究發(fā)展至關(guān)重要。
數(shù)據(jù)溯源驗證是檢驗數(shù)據(jù)集是否正確,數(shù)據(jù)中心將農(nóng)業(yè)科學(xué)數(shù)據(jù)集溯源信息存儲到區(qū)塊鏈上后,其他節(jié)點可從區(qū)塊鏈上獲取溯源對象的溯源信息,進行溯源數(shù)據(jù)的真實性驗證,農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源驗證示例如圖6所示。
農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源驗證步驟:
1.在農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源鏈上通過標(biāo)識可以查詢到所對應(yīng)數(shù)據(jù)集,數(shù)據(jù)集的驗證信息與元數(shù)據(jù)一起存儲在區(qū)塊鏈中,其他數(shù)據(jù)存儲在鏈外。
2.通過數(shù)據(jù)集標(biāo)識可以獲得原始數(shù)據(jù)的URL,可以與鏈上存儲的信息進行比對驗證。通過比對數(shù)據(jù)集簽名和鏈上存儲的數(shù)據(jù)集簽名驗證是否正確。
農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源鏈并不要求其驗證信息存儲在區(qū)塊鏈中的數(shù)據(jù)類型和內(nèi)容。在溯源數(shù)據(jù)模型中,需要數(shù)據(jù)集的標(biāo)識以便快速通過標(biāo)識解析的具體位置,數(shù)據(jù)集驗證信息和有關(guān)發(fā)布者的信息作為元數(shù)據(jù)的強制性部分,未來可以根據(jù)反饋和使用情況分析,逐步擴展以包括其他可選的元數(shù)據(jù)元素。農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源鏈將為鏈上存儲的信息,如數(shù)據(jù)標(biāo)識、發(fā)布者信息、數(shù)據(jù)簽名等信息關(guān)聯(lián)在一起。
通過農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源鏈可以查詢到數(shù)據(jù)集所有版本記錄,可以跟蹤到數(shù)據(jù)集的更新過程。通過數(shù)據(jù)標(biāo)識或元數(shù)據(jù)都可以查詢到對應(yīng)數(shù)據(jù)集。如圖7所示,使用科學(xué)數(shù)據(jù)存儲庫中的數(shù)據(jù)集更新記錄進行試驗驗證,數(shù)據(jù)集更新或版本變化時,計算的數(shù)據(jù)集簽名也相應(yīng)發(fā)生變化,這些記錄都存儲的溯源鏈上,通過查詢對應(yīng)數(shù)據(jù)集,可以獲取數(shù)據(jù)集版本變化的記錄過程。因此,農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源鏈能保證溯源記錄不可篡改,同時也能確保溯源記錄順序不會被改變。
依據(jù)本文所述的方案,通過農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源鏈,科研人員可以注冊自己的數(shù)據(jù),溯源鏈為每個數(shù)據(jù)集文件計算其簽名,然后將數(shù)據(jù)集的元數(shù)據(jù)和簽名一起存入?yún)^(qū)塊鏈中,原始數(shù)據(jù)脫鏈存儲,通過數(shù)據(jù)集標(biāo)識可以定位尋址數(shù)據(jù)集,通過在區(qū)塊鏈上的數(shù)據(jù)集簽名進行驗證,在數(shù)據(jù)使用過程中,可以根據(jù)溯源鏈來進行可信的數(shù)據(jù)溯源。研究人員能夠有效地共享和驗證科學(xué)數(shù)據(jù)的真實性。在下一步工作中,我們將嘗試探索農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源鏈在更多數(shù)據(jù)類型的可信共享應(yīng)用,并將繼續(xù)探索區(qū)塊鏈技術(shù),利用其具有不可篡改、可追溯等特點,為農(nóng)業(yè)科學(xué)數(shù)據(jù)溯源提供了更為完善的解決方案[15]。