夏浩飛 許謙
摘 ?要: 為打破教育機構(gòu)之間的壁壘,推進學習記錄數(shù)據(jù)互認,搭建校企數(shù)據(jù)共享平臺,采用虛擬機、Linux系統(tǒng)、Docker容器等軟件架構(gòu)運行環(huán)境,運用超級賬本技術(shù)設(shè)計數(shù)據(jù)共享平臺,通過Fabric網(wǎng)絡(luò)搭建智能合約設(shè)計、安裝、調(diào)用等步驟,進行學習記錄共享賬本構(gòu)建模擬實驗,實現(xiàn)了基于區(qū)塊鏈技術(shù)的分布式學習記錄數(shù)據(jù)庫創(chuàng)建與查詢。實驗結(jié)果表明,超級賬本作為區(qū)塊鏈技術(shù)的重要分支,適用于學習記錄數(shù)據(jù)共建共享領(lǐng)域,為教育大數(shù)據(jù)建設(shè)提供了一種全新的技術(shù)支持與設(shè)計思路。
關(guān)鍵詞: 學習記錄; 共享賬本; 數(shù)據(jù)共享平臺; Hyperledger Fabric技術(shù); 架構(gòu)模型; 模擬實驗
中圖分類號: 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 ?引 ?言
比特幣作為最早的區(qū)塊鏈技術(shù),仍只關(guān)注電子貨幣的創(chuàng)建與交易。以太坊借助智能合約,在數(shù)字貨幣發(fā)行與交易、眾籌、線上自治組織建設(shè)等領(lǐng)域都有應用[1]。Hyperledger項目致力于打造新一代以分布式共享賬本為核心的交易應用平臺,在金融服務(wù)、供應鏈服務(wù)、商品身份溯源等領(lǐng)域已建立起相關(guān)應用[2]。
在教育領(lǐng)域,區(qū)塊鏈技術(shù)也日趨受到關(guān)注。李青等認為可以借助區(qū)塊鏈技術(shù)推動教育的開放和公信[3]。許濤等提出區(qū)塊鏈技術(shù)在教育教學中的應用主要包括區(qū)塊鏈成績單、學習者資源管理、建立學習賬本[4]。楊現(xiàn)民等闡述了利用區(qū)塊鏈技術(shù)建立個體學信大數(shù)據(jù)、開發(fā)學位證書系統(tǒng)等[5]。在國外,尼科西亞大學把學生的專業(yè)證書儲存在分布式賬簿上,保證了記錄的安全和可信[3,6];麻省理工學院的媒體實驗室應用區(qū)塊鏈技術(shù)研發(fā)了學習證書平臺[3,7];霍伯頓學校將學歷證書信息放在區(qū)塊鏈上進行共享[8]。
文中借助Hyperledger Fabric技術(shù),以解決目前存在的教育機構(gòu)之間的學習記錄數(shù)據(jù)共享壁壘[3],用人機構(gòu)獲取學習記錄數(shù)據(jù)的不便[3?4],非傳統(tǒng)教育機構(gòu)學習記錄數(shù)據(jù)缺失[5]等問題為出發(fā)點,簡要分析Hyperledger Fabric技術(shù)的特點及優(yōu)勢,開展了學習記錄共享賬本建設(shè)與應用的模擬實驗,提出一種依托區(qū)塊鏈技術(shù)的普遍參與的、高安全性的分布式學習記錄數(shù)據(jù)共享平臺設(shè)計理念。
1 ?Hyperledger概述及Fabric架構(gòu)
1.1 ?Hyperledger概述
Hyperledger項目致力于借助區(qū)塊鏈技術(shù)打造一個企業(yè)間共享的、經(jīng)過授權(quán)的、冗余的賬本,賬本由鏈上的成員共同維護和管理,并引入監(jiān)管機構(gòu)進行賬本的獨立監(jiān)管,以構(gòu)建一個全新的企業(yè)間生態(tài)[9]。
系統(tǒng)具有以下特點:賬本在每個節(jié)點間進行復制,保證所有的項目參與方共享同樣的帳本;鏈上成員通過背書參與數(shù)據(jù)驗證,網(wǎng)絡(luò)依賴排序機制保持數(shù)據(jù)一致;引入身份管理和加密算法確保參與者僅能查看與其相關(guān)的賬本內(nèi)容,交易是授權(quán)的、保密的和可追溯的;交易中嵌入可編程內(nèi)容,即智能合約,實現(xiàn)交易的功能化。
1.2 ?Fabric架構(gòu)
Fabric是Hyperledger項目中應用最為廣泛的子項目,由身份管理、賬本管理、交易管理和智能合約四個主要部分組成[10]。
身份管理模塊負責證書的頒發(fā)、管理和基于PKI(Public Key Infrastructrue)的身份認證;賬本由區(qū)塊賬本和狀態(tài)賬本組成,區(qū)塊賬本用來記錄交易的流水,只能增加不可修改,狀態(tài)賬本由Key?Value數(shù)據(jù)庫LevelDB或支持jason數(shù)據(jù)格式的數(shù)據(jù)庫couchdb提供支持,用來記錄最新的交易結(jié)果數(shù)據(jù),支持修改,操作靈活;交易管理由提案、背書、排序和記賬環(huán)節(jié)組成,是Fabric的核心技術(shù);智能合約是Fabric的可編程部分,是生成交易的來源,設(shè)計有兩個必須實現(xiàn)的接口:init()和invoke(),分別用于初始化工作和更新、查詢狀態(tài)數(shù)據(jù)庫。
1.3 ?技術(shù)優(yōu)勢
相比中心化存儲模式,Hyperledger依托區(qū)塊鏈技術(shù)分布式存儲、數(shù)據(jù)共識、安全可靠、不可篡改等特點,提出把傳統(tǒng)的單個機構(gòu)的信息系統(tǒng)建設(shè),提升為機構(gòu)群組的信息系統(tǒng)生態(tài)圈建設(shè)的理念[9],打造一種全新的數(shù)據(jù)存儲方式。
相比比特幣系統(tǒng)和以太坊:Hyperledger取消數(shù)字貨幣機制,把區(qū)塊鏈技術(shù)應用方向擴展至社會各領(lǐng)域;以云服務(wù)平臺或高性能服務(wù)器來架構(gòu)區(qū)塊服務(wù),打破區(qū)塊鏈網(wǎng)絡(luò)的計算機性能瓶頸,改進共識算法,大幅提升數(shù)據(jù)吞吐量和系統(tǒng)效率[11];加入權(quán)限管理機制,在保障用戶隱私和自由交易的同時,確保用戶行為的可追責且不可陷害;引入通道機制,支持多系統(tǒng)建設(shè);基于Docker容器運行,各功能模塊相互獨立,提升數(shù)據(jù)安全性。
2 ?學習記錄共享賬本建設(shè)模擬實驗
2.1 ?系統(tǒng)架構(gòu)模型
學習記錄共享賬本模型如圖1所示。
2.2 ?實驗環(huán)境搭建
實驗環(huán)境基于virtualBox虛擬機系統(tǒng)搭建,相關(guān)軟件包括: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網(wǎng)絡(luò)設(shè)置及角色模擬
表1為Fabric網(wǎng)絡(luò)配置及服務(wù)模擬的對象,排序算法采用Fabric1.0 默認的solo算法,賬本數(shù)據(jù)庫采用couchdb,證書服務(wù)由Fabric?ca模塊提供,cli模擬應用程序,F(xiàn)abric網(wǎng)絡(luò)配置信息寫入docker?compose?learnRecord.yaml文件。
2.4 ?智能合約設(shè)計
1) 智能合約名稱為learnRecord。
2) 學習記錄數(shù)據(jù)結(jié)構(gòu)代碼如下:
type Record struct {
Creator ?string ′json:"creator"′
StudentID ?string ′json:"studentID"′
StudentName string ′json:"studentName"′
Major ?string ′json:"major"′
CourseAndCredit []string ′json:"courseAndCredit"′
}
3) 智能合約函數(shù)及其作用。Init(APIstub shim.ChaincodeStubInterface)作用,初始化賬本;Invoke(APIstub shim.ChaincodeStubInterface)作用,調(diào)用智能合約;createRecord(APIstub shim.ChaincodeStubInterface, args []string)作用,創(chuàng)建學習記錄;queryRecord(APIstub shim.ChaincodeStubInterface, args []string)作用,查詢學習記錄;main()作用,啟動智能合約。
2.5 ?實驗過程
2.5.1 ?啟動Fabric網(wǎng)絡(luò),創(chuàng)建通道,安裝并實例化智能
合約
1) docker?compose命令激活docker?compose?learnRecord.yaml配置文件,啟動cli, ca1.example.com,ca2.example.com,orderer.example.com,couchdb及peer服務(wù)。
2) 進入cli容器內(nèi)部,創(chuàng)建基于orderer.example.com排序服務(wù)的通道 mychannel,F(xiàn)abric網(wǎng)絡(luò)節(jié)點成員Jxtvu,Tztvu,Jxvtc,Nyvtc加入mychannel通道。
3)使用install命令為成員節(jié)點安裝智能合約,instantiate命令完成智能合約的實例化。實例化過程中設(shè)置通道的背書策略為AND (′Org1MSP.member′,
′Org2MSP.member′),即交易需要獲得org1成員和org2成員的共同背書簽名才是有效的,背書策略保證學習記錄的創(chuàng)建必須經(jīng)過兩個組織成員的共同認證。
2.5.2 ?成員注冊
enrollAdmin.js實現(xiàn)管理員認證,管理員信息寫在ca1(ca2).example.com網(wǎng)絡(luò)配置文件模塊中,圖2為admin用戶注冊成功的截圖。registerUser.js文件用于注冊組織的用戶信息,依賴于admin用戶,注冊成功的用戶才能訪問Fabric網(wǎng)絡(luò),圖3為用戶注冊成功截圖。
2.5.3 ?學習記錄創(chuàng)建
regitserUser.js已注冊用戶XHF可以調(diào)用完成實例化的智能合約learnRecord中的函數(shù)。調(diào)用createRecord函數(shù)新增學習記錄的部分關(guān)鍵代碼如下:
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
};
代碼執(zhí)行以交易方式進行,交易經(jīng)過提案、背書、排序后,獲得足夠簽名,認證有效的交易信息記錄在區(qū)塊文件中,圖4為交易處理流程。區(qū)塊文件在節(jié)點加入通道時由系統(tǒng)生成,以blockfile為前綴,以六位數(shù)字為后綴,依次增加,如blockfile_000000,blockfile_000001,狀態(tài)數(shù)據(jù)則寫人到couchdb數(shù)據(jù)庫中,賬本數(shù)據(jù)記賬至網(wǎng)絡(luò)中的各節(jié)點,即賬本拷貝。
2.5.4 ?學習記錄數(shù)據(jù)查詢
成員節(jié)點的注冊用戶調(diào)用queryRecord,給出查詢參數(shù)RECORD0,實現(xiàn)指定學習記錄的查詢,圖5為查詢結(jié)果。Key為學習記錄數(shù)據(jù)的編號,Record為學習記錄數(shù)據(jù)的內(nèi)容,查詢操作不產(chǎn)生交易,操作流程不記錄在區(qū)塊賬本中。
3 ?結(jié) ?論
實驗運用Hyperledger Fabric技術(shù),依托區(qū)塊鏈的數(shù)據(jù)可追溯、不可抵賴、安全可信、去中心化等特性,采用虛擬機的不同端口,模擬4個分布式網(wǎng)絡(luò)節(jié)點,通過交易提案、背書、共識、賬本更新等環(huán)節(jié),實現(xiàn)由Jxtvu,Tztvu,Jxvtc,Nyvtc四個節(jié)點成員共同參與建設(shè)并共享數(shù)據(jù)的分布式學習記錄賬本構(gòu)建,證明Hyperledger Fabric技術(shù)應用于該領(lǐng)域的可行性,為教育大數(shù)據(jù)建設(shè)提供了一種全新的技術(shù)支持與設(shè)計思路。
參考文獻
[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] 李青,張鑫.區(qū)塊鏈:以技術(shù)推動教育的開放和公信[J].遠程教育雜志,2017(1):36?44.
[4] 許濤.區(qū)塊鏈技術(shù)在教育教學中的應用與挑戰(zhàn)[J].現(xiàn)代教育技術(shù),2017(1):108?114.
[5] 楊現(xiàn)民,李新,吳煥慶,等.區(qū)塊鏈技術(shù)在教育領(lǐng)域的應用模式與現(xiàn)實挑戰(zhàn)[J].現(xiàn)代遠程教育研究,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] 董寧.區(qū)塊鏈商用之道[EB/OL].[2017?04?15].http://www.docin.com/p?1864142241.html.
[10] 張增駿,董寧,朱軒彤,等.深度探索區(qū)塊鏈:hyperledger技術(shù)與應用[M].北京:機械工業(yè)出版社,2017.
[11] 邵奇峰,金澈清,張召,等.區(qū)塊鏈技術(shù):架構(gòu)及進展[J].計算機學報,2018(5):969?988.
作者簡介:夏浩飛(1981—),男,浙江嘉興人,講師,研究方向為軟件設(shè)計、數(shù)據(jù)庫、區(qū)塊鏈技術(shù)。
許 ?謙(1956—),男,浙江嘉興人,教授,研究方向為數(shù)學建模。