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