夏浩飛 許謙



摘 ?要: 為打破教育機構之間的壁壘,推進學習記錄數據互認,搭建校企數據共享平臺,采用虛擬機、Linux系統、Docker容器等軟件架構運行環境,運用超級賬本技術設計數據共享平臺,通過Fabric網絡搭建智能合約設計、安裝、調用等步驟,進行學習記錄共享賬本構建模擬實驗,實現了基于區塊鏈技術的分布式學習記錄數據庫創建與查詢。實驗結果表明,超級賬本作為區塊鏈技術的重要分支,適用于學習記錄數據共建共享領域,為教育大數據建設提供了一種全新的技術支持與設計思路。
關鍵詞: 學習記錄; 共享賬本; 數據共享平臺; Hyperledger Fabric技術; 架構模型; 模擬實驗
中圖分類號: TN911.2?34 ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼: A ? ? ? ? ? ? ? ? ? ? ? 文章編號: 1004?373X(2020)02?0080?04
Learning record sharing account book construction with Hyperledger
Fabric technology
XIA Haofei, XU Qian
Abstract: The operating environment is structured with virtual machine, Linux system, Docker container and so on, and the data sharing platform is designed with the Hyperledger technology to break the barriers between educational institutions, promote the mutual recognition of learning record data, and build a school?enterprise data sharing platform. The simulation experiment of building learning record sharing account book is carried out by means of the Fabric network construction, intelligent contract design, installation, invocation and other steps to realize the creation and query of the distributed learning record database based on the blockchain technology. The experimental results show that as an important branch of the blockchain technology, the Hyperledger is suitable for the field of learning record data co?construction and sharing, and provides a new technical support and design thought for the large data construction in education.
Keywords: learning record; sharing account book; data sharing platform; Hyperledger Fabrictechnology; architecture model; simulation experiment
0 ?引 ?言
比特幣作為最早的區塊鏈技術,仍只關注電子貨幣的創建與交易。以太坊借助智能合約,在數字貨幣發行與交易、眾籌、線上自治組織建設等領域都有應用[1]。Hyperledger項目致力于打造新一代以分布式共享賬本為核心的交易應用平臺,在金融服務、供應鏈服務、商品身份溯源等領域已建立起相關應用[2]。
在教育領域,區塊鏈技術也日趨受到關注。李青等認為可以借助區塊鏈技術推動教育的開放和公信[3]。許濤等提出區塊鏈技術在教育教學中的應用主要包括區塊鏈成績單、學習者資源管理、建立學習賬本[4]。楊現民等闡述了利用區塊鏈技術建立個體學信大數據、開發學位證書系統等[5]。在國外,尼科西亞大學把學生的專業證書儲存在分布式賬簿上,保證了記錄的安全和可信[3,6];麻省理工學院的媒體實驗室應用區塊鏈技術研發了學習證書平臺[3,7];霍伯頓學校將學歷證書信息放在區塊鏈上進行共享[8]。
文中借助Hyperledger Fabric技術,以解決目前存在的教育機構之間的學習記錄數據共享壁壘[3],用人機構獲取學習記錄數據的不便[3?4],非傳統教育機構學習記錄數據缺失[5]等問題為出發點,簡要分析Hyperledger Fabric技術的特點及優勢,開展了學習記錄共享賬本建設與應用的模擬實驗,提出一種依托區塊鏈技術的普遍參與的、高安全性的分布式學習記錄數據共享平臺設計理念。
1 ?Hyperledger概述及Fabric架構
1.1 ?Hyperledger概述
Hyperledger項目致力于借助區塊鏈技術打造一個企業間共享的、經過授權的、冗余的賬本,賬本由鏈上的成員共同維護和管理,并引入監管機構進行賬本的獨立監管,以構建一個全新的企業間生態[9]。
系統具有以下特點:賬本在每個節點間進行復制,保證所有的項目參與方共享同樣的帳本;鏈上成員通過背書參與數據驗證,網絡依賴排序機制保持數據一致;引入身份管理和加密算法確保參與者僅能查看與其相關的賬本內容,交易是授權的、保密的和可追溯的;交易中嵌入可編程內容,即智能合約,實現交易的功能化。
1.2 ?Fabric架構
Fabric是Hyperledger項目中應用最為廣泛的子項目,由身份管理、賬本管理、交易管理和智能合約四個主要部分組成[10]。
身份管理模塊負責證書的頒發、管理和基于PKI(Public Key Infrastructrue)的身份認證;賬本由區塊賬本和狀態賬本組成,區塊賬本用來記錄交易的流水,只能增加不可修改,狀態賬本由Key?Value數據庫LevelDB或支持jason數據格式的數據庫couchdb提供支持,用來記錄最新的交易結果數據,支持修改,操作靈活;交易管理由提案、背書、排序和記賬環節組成,是Fabric的核心技術;智能合約是Fabric的可編程部分,是生成交易的來源,設計有兩個必須實現的接口:init()和invoke(),分別用于初始化工作和更新、查詢狀態數據庫。
1.3 ?技術優勢
相比中心化存儲模式,Hyperledger依托區塊鏈技術分布式存儲、數據共識、安全可靠、不可篡改等特點,提出把傳統的單個機構的信息系統建設,提升為機構群組的信息系統生態圈建設的理念[9],打造一種全新的數據存儲方式。
相比比特幣系統和以太坊:Hyperledger取消數字貨幣機制,把區塊鏈技術應用方向擴展至社會各領域;以云服務平臺或高性能服務器來架構區塊服務,打破區塊鏈網絡的計算機性能瓶頸,改進共識算法,大幅提升數據吞吐量和系統效率[11];加入權限管理機制,在保障用戶隱私和自由交易的同時,確保用戶行為的可追責且不可陷害;引入通道機制,支持多系統建設;基于Docker容器運行,各功能模塊相互獨立,提升數據安全性。
2 ?學習記錄共享賬本建設模擬實驗
2.1 ?系統架構模型
學習記錄共享賬本模型如圖1所示。
2.2 ?實驗環境搭建
實驗環境基于virtualBox虛擬機系統搭建,相關軟件包括:virtualBox version 5.2;git version 2.18.0.windows.1,vagrant version 2.1.2,box ubuntu 14.4;Fabric項目運行軟件配置包括Docker version 18.03.1?ce,Docker compose version 1.17.0,Go version,go1.9.5,Node version v8.11.3,Npm version 5.6.0。
2.3 ?Fabric網絡設置及角色模擬
表1為Fabric網絡配置及服務模擬的對象,排序算法采用Fabric1.0 默認的solo算法,賬本數據庫采用couchdb,證書服務由Fabric?ca模塊提供,cli模擬應用程序,Fabric網絡配置信息寫入docker?compose?learnRecord.yaml文件。
2.4 ?智能合約設計
1) 智能合約名稱為learnRecord。
2) 學習記錄數據結構代碼如下:
type Record struct {
Creator ?string ′json:"creator"′
StudentID ?string ′json:"studentID"′
StudentName string ′json:"studentName"′
Major ?string ′json:"major"′
CourseAndCredit []string ′json:"courseAndCredit"′
}
3) 智能合約函數及其作用。Init(APIstub shim.ChaincodeStubInterface)作用,初始化賬本;Invoke(APIstub shim.ChaincodeStubInterface)作用,調用智能合約;createRecord(APIstub shim.ChaincodeStubInterface, args []string)作用,創建學習記錄;queryRecord(APIstub shim.ChaincodeStubInterface, args []string)作用,查詢學習記錄;main()作用,啟動智能合約。
2.5 ?實驗過程
2.5.1 ?啟動Fabric網絡,創建通道,安裝并實例化智能
合約
1) docker?compose命令激活docker?compose?learnRecord.yaml配置文件,啟動cli, ca1.example.com,ca2.example.com,orderer.example.com,couchdb及peer服務。
2) 進入cli容器內部,創建基于orderer.example.com排序服務的通道 mychannel,Fabric網絡節點成員Jxtvu,Tztvu,Jxvtc,Nyvtc加入mychannel通道。
3)使用install命令為成員節點安裝智能合約,instantiate命令完成智能合約的實例化。實例化過程中設置通道的背書策略為AND (′Org1MSP.member′,
′Org2MSP.member′),即交易需要獲得org1成員和org2成員的共同背書簽名才是有效的,背書策略保證學習記錄的創建必須經過兩個組織成員的共同認證。
2.5.2 ?成員注冊
enrollAdmin.js實現管理員認證,管理員信息寫在ca1(ca2).example.com網絡配置文件模塊中,圖2為admin用戶注冊成功的截圖。registerUser.js文件用于注冊組織的用戶信息,依賴于admin用戶,注冊成功的用戶才能訪問Fabric網絡,圖3為用戶注冊成功截圖。
2.5.3 ?學習記錄創建
regitserUser.js已注冊用戶XHF可以調用完成實例化的智能合約learnRecord中的函數。調用createRecord函數新增學習記錄的部分關鍵代碼如下:
var request={
chaincodeId: ′learnRecord′,
fcn: ′createRecord′,
args:[‘RECORD0′, ′Jxtvu′, ′Jxtvu0001′, ′LiWei′,
′Computer′, ′Course:Maths Credit:4′,
′Course:Graphics ?Credit:3′, ?‘Course:C Language ?Credit:5′],
ChainId:′mychannel′,
txId:tx_id
};
代碼執行以交易方式進行,交易經過提案、背書、排序后,獲得足夠簽名,認證有效的交易信息記錄在區塊文件中,圖4為交易處理流程。區塊文件在節點加入通道時由系統生成,以blockfile為前綴,以六位數字為后綴,依次增加,如blockfile_000000,blockfile_000001,狀態數據則寫人到couchdb數據庫中,賬本數據記賬至網絡中的各節點,即賬本拷貝。
2.5.4 ?學習記錄數據查詢
成員節點的注冊用戶調用queryRecord,給出查詢參數RECORD0,實現指定學習記錄的查詢,圖5為查詢結果。Key為學習記錄數據的編號,Record為學習記錄數據的內容,查詢操作不產生交易,操作流程不記錄在區塊賬本中。
3 ?結 ?論
實驗運用Hyperledger Fabric技術,依托區塊鏈的數據可追溯、不可抵賴、安全可信、去中心化等特性,采用虛擬機的不同端口,模擬4個分布式網絡節點,通過交易提案、背書、共識、賬本更新等環節,實現由Jxtvu,Tztvu,Jxvtc,Nyvtc四個節點成員共同參與建設并共享數據的分布式學習記錄賬本構建,證明Hyperledger Fabric技術應用于該領域的可行性,為教育大數據建設提供了一種全新的技術支持與設計思路。
參考文獻
[1] 談國鵬.盤點以太坊十大應用[EB/OL].[2017?03?26].http://www.8btc.com/ethereum?top?10?app.
[2] 夏勇. Hyperledger Fabric應用案例賞析[EB/OL].[2017?06?18]. http://wenku.it168.com/d_001737173.shtml.
[3] 李青,張鑫.區塊鏈:以技術推動教育的開放和公信[J].遠程教育雜志,2017(1):36?44.
[4] 許濤.區塊鏈技術在教育教學中的應用與挑戰[J].現代教育技術,2017(1):108?114.
[5] 楊現民,李新,吳煥慶,等.區塊鏈技術在教育領域的應用模式與現實挑戰[J].現代遠程教育研究,2017(2):34?45.
[6] University of Nicosia. Professional certification programs [EB/OL]. [2015?12?29]. https://digitalcurrency.unic.ac.cy/professional?certification?programs/.
[7] Simon Fraser University. Degree requirements [EB/OL]. [2017?08?21]. http://www.sfu.ca/computing/current?students/graduate?students/academic?programs/degree?requirements.html.
[8] Holberton School. Holberton School to authenticate its academic certificates with the bitcoin blockchain [EB/OL]. ?[2017?07?16]. http://www.marketwired.com/press?release/ts?ac?ademic?certificates?with?bitcoin?blockchain?2065768.htm.
[9] 董寧.區塊鏈商用之道[EB/OL].[2017?04?15].http://www.docin.com/p?1864142241.html.
[10] 張增駿,董寧,朱軒彤,等.深度探索區塊鏈:hyperledger技術與應用[M].北京:機械工業出版社,2017.
[11] 邵奇峰,金澈清,張召,等.區塊鏈技術:架構及進展[J].計算機學報,2018(5):969?988.
作者簡介:夏浩飛(1981—),男,浙江嘉興人,講師,研究方向為軟件設計、數據庫、區塊鏈技術。
許 ?謙(1956—),男,浙江嘉興人,教授,研究方向為數學建模。