黃立波 王偉 徐彥軍 陳旭剛
摘要:在當(dāng)下的教育環(huán)境中,線上教育缺乏可信的結(jié)業(yè)憑證;學(xué)員在教育平臺(tái)學(xué)習(xí)相關(guān)課程后,無(wú)法得到具有公信力的結(jié)業(yè)證書(shū);極少數(shù)教育平臺(tái)給出的結(jié)業(yè)憑證,由于其中心化的存儲(chǔ),也不能被社會(huì)所認(rèn)可.這些弊端嚴(yán)重限制了線上教育的發(fā)展.為了解決這個(gè)問(wèn)題,利用區(qū)塊鏈去中心化、不可篡改的特點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了基于區(qū)塊鏈的線上教育結(jié)業(yè)證書(shū)管理系統(tǒng),將電子結(jié)業(yè)證書(shū)以數(shù)字資產(chǎn)的形式記錄在區(qū)塊鏈中,并將學(xué)員學(xué)習(xí)記錄數(shù)據(jù)保存在結(jié)業(yè)證書(shū)中,保證了結(jié)業(yè)證書(shū)的真實(shí)性和可靠性.在此基礎(chǔ)上,基于超級(jí)賬本,實(shí)現(xiàn)了證書(shū)生成和發(fā)放等的智能合約,保證了無(wú)須第三方參與的智能化運(yùn)行;同時(shí),提供了豐富的查詢接口,如結(jié)業(yè)證書(shū)的歷史追溯,提高了在線教育平臺(tái)學(xué)習(xí)成果驗(yàn)證的效率;另外,由于線上教育的課程以發(fā)布者資產(chǎn)的形式記錄于區(qū)塊鏈,故加強(qiáng)了線上教育領(lǐng)域的版權(quán)保護(hù).實(shí)驗(yàn)結(jié)果表明,所提出的方法能夠滿足上述教育場(chǎng)景中的性能需求.
關(guān)鍵詞:區(qū)塊鏈;線上教育;超級(jí)賬本;智能合約
中圖分類號(hào):TP311
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1000-5641(2020)06-0072-10
0引言
隨著近些年互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,將信息技術(shù)應(yīng)用于教育領(lǐng)域,大規(guī)模建設(shè)教育信息化已成為趨勢(shì).2016年,工信部頒布了《中國(guó)區(qū)塊鏈技術(shù)和應(yīng)用發(fā)展白皮書(shū)(2016)》,白皮書(shū)明確指出,區(qū)塊鏈系統(tǒng)的公開(kāi)透明和數(shù)據(jù)不可篡改等特點(diǎn),在高等教育的資質(zhì)證明、征信管理、學(xué)員學(xué)術(shù)管理方面有較大的發(fā)展優(yōu)勢(shì).在“互聯(lián)網(wǎng)+教育”的背景下,將區(qū)塊鏈技術(shù)與教育相結(jié)合,對(duì)線上教育的發(fā)展意義重大.
在現(xiàn)有的國(guó)內(nèi)外知名MOOC(Massive Open Online Courses)平臺(tái)中,Coursera是線上教育結(jié)業(yè)證書(shū)發(fā)放的先行者.為了保證結(jié)業(yè)證書(shū)的可靠性,電子證書(shū)往往由提供課程的高校進(jìn)行背書(shū),并采用傳統(tǒng)的集中式數(shù)據(jù)存儲(chǔ)模式.這種方式會(huì)增加證書(shū)發(fā)放的復(fù)雜性,降低效率;且集中式數(shù)據(jù)存儲(chǔ)的方式會(huì)導(dǎo)致數(shù)據(jù)的安全難以得到保障;同時(shí),由于缺乏可靠的查詢接口,導(dǎo)致線上教育結(jié)業(yè)證書(shū)的真實(shí)性無(wú)法得到驗(yàn)證.
區(qū)塊鏈技術(shù)的出現(xiàn),為線上教育結(jié)業(yè)證書(shū)所面臨的問(wèn)題提供了解決方案.本文設(shè)計(jì)并實(shí)現(xiàn)了基于區(qū)塊鏈的線上教育結(jié)業(yè)證書(shū)管理系統(tǒng),構(gòu)建了去中心化的線上教育結(jié)業(yè)證書(shū)平臺(tái),降低了線上教育結(jié)業(yè)證書(shū)的管理成本和復(fù)雜性.本文系統(tǒng)主要能為線上教育帶來(lái)以下改進(jìn).
(1)利用區(qū)塊鏈數(shù)據(jù)可追溯、不可更改的特點(diǎn),可以為線上教育提供可靠、安全且經(jīng)濟(jì)的證書(shū)系統(tǒng).在信息化的時(shí)代,MOOC已成為大眾接受高等教育的重要方式之一,但由于MOOC平臺(tái)中的學(xué)習(xí)成果認(rèn)定較難,不同高校對(duì)MOOC中獲得的學(xué)分的轉(zhuǎn)換標(biāo)準(zhǔn)不統(tǒng)一,導(dǎo)致MOOC的發(fā)展與推廣受到了阻礙.因此,為了保證線上教育能夠更好地得到推廣,本文將線上教育中的結(jié)業(yè)證書(shū)作為突破點(diǎn),利用區(qū)塊鏈技術(shù)改善線上教育結(jié)業(yè)證書(shū)認(rèn)證效率,以提高電子結(jié)業(yè)證書(shū)的認(rèn)可度;另外,使用區(qū)塊鏈技術(shù)中智能合約的自動(dòng)化運(yùn)行,可降低證書(shū)的認(rèn)證成本,為線上教育的推廣提供有力的支持.在學(xué)習(xí)行為數(shù)據(jù)管理方面,系統(tǒng)記錄學(xué)員在教育平臺(tái)中的所有學(xué)習(xí)活動(dòng),并將學(xué)習(xí)信息全部記錄于電子證書(shū)之中.這樣不僅可以提高結(jié)業(yè)證書(shū)的可靠性和真實(shí)性,更可將區(qū)塊鏈在溯源學(xué)員學(xué)習(xí)信息記錄中的優(yōu)勢(shì)突現(xiàn)出來(lái).
(2)區(qū)塊鏈也可以作為版權(quán)保護(hù)的工具運(yùn)用到線上教育中.在現(xiàn)階段的線上教育環(huán)境下,課程資源、學(xué)術(shù)成果的版權(quán)保護(hù)是一個(gè)難題,高等教育院校的內(nèi)部課程資源、學(xué)術(shù)成果,以及線上教育貢獻(xiàn)者分享的優(yōu)質(zhì)內(nèi)容,往往在網(wǎng)絡(luò)中被肆意轉(zhuǎn)載.在信息化時(shí)代,除了要提高學(xué)習(xí)人員的資源利用率,資源發(fā)布者的版權(quán)保護(hù)也尤為重要.本文利用區(qū)塊鏈數(shù)據(jù)不可篡改和可追溯的特點(diǎn),將資源發(fā)布者發(fā)布的資源以數(shù)字資產(chǎn)的形式記錄于區(qū)塊鏈中,任何涉嫌抄襲的行為,都可在區(qū)塊鏈中找到充足的證據(jù).
本文的主要工作與創(chuàng)新點(diǎn):①將區(qū)塊鏈技術(shù)應(yīng)用到數(shù)字結(jié)業(yè)證書(shū)的發(fā)放管理中,實(shí)現(xiàn)了證書(shū)的真實(shí)性與可靠性;②基于超級(jí)賬本,實(shí)現(xiàn)了證書(shū)生成和發(fā)放的智能合約,保證了無(wú)須第三方參與就能實(shí)現(xiàn)結(jié)業(yè)證書(shū)的歷史追溯,提高了在線教育平臺(tái)學(xué)習(xí)成果驗(yàn)證的效率;③通過(guò)實(shí)驗(yàn)手段驗(yàn)證了本文所提方法性能的有效性.
本文首先介紹了區(qū)塊鏈技術(shù)并對(duì)其在線上教育中的應(yīng)用進(jìn)行了可行性分析,之后設(shè)計(jì)并實(shí)現(xiàn)了基于Hyperledger Fabric的線上教育結(jié)業(yè)證書(shū)管理系統(tǒng).該系統(tǒng)在節(jié)點(diǎn)管理、智能合約管理和賬本管理的基礎(chǔ)上,實(shí)現(xiàn)了結(jié)業(yè)證書(shū)的元數(shù)據(jù)管理和發(fā)放歷史追溯,可為線上教育學(xué)員提供真實(shí)、可靠的電子結(jié)業(yè)證書(shū).
1區(qū)塊鏈技術(shù)及可行性分析
1.1區(qū)塊鏈技術(shù)
區(qū)塊鏈的結(jié)構(gòu)主要由3部分組成,分別是交易(Transaction)、區(qū)塊(Block)、區(qū)塊鏈(Blockchain).區(qū)塊鏈?zhǔn)且粋€(gè)分布式賬本,區(qū)塊鏈系統(tǒng)中的各個(gè)節(jié)點(diǎn)將同一時(shí)間段內(nèi)的所有交易信息打包成區(qū)塊,并打上時(shí)間戳,區(qū)塊是構(gòu)成區(qū)塊鏈的基本單位;隨后,將生成的區(qū)塊按時(shí)序通過(guò)哈希(Hash)加密的方式連接起來(lái),其中區(qū)塊頭會(huì)記錄前一個(gè)區(qū)塊的哈希值,這樣就形成了區(qū)塊鏈.由此可以看出,任何一個(gè)區(qū)塊的變更,都會(huì)影響到該區(qū)塊后續(xù)的所有區(qū)塊,而后續(xù)區(qū)塊的修改需要耗費(fèi)巨大的計(jì)算資源,這也就保證了區(qū)塊鏈中的數(shù)據(jù)是不可篡改的.在區(qū)塊鏈生成的過(guò)程中,會(huì)出現(xiàn)在同一時(shí)間生成兩個(gè)或者多個(gè)區(qū)塊的情況,在這種情況下,就會(huì)使區(qū)塊鏈產(chǎn)生分支,這時(shí),共識(shí)機(jī)制會(huì)確定區(qū)塊鏈的主鏈和分支.目前主流的共識(shí)機(jī)制有工作量證明(Proof of Work,POW)、權(quán)益證明(Proof of Stake,POS)等.區(qū)塊鏈的基本結(jié)構(gòu)如圖1所示.
1.2區(qū)塊鏈技術(shù)特點(diǎn)及應(yīng)用的可行性分析
區(qū)塊鏈通過(guò)分布式共識(shí)機(jī)制和數(shù)據(jù)加密等技術(shù),使去中心化、防篡改、去信任化的數(shù)據(jù)共享成為現(xiàn)實(shí).區(qū)塊鏈技術(shù)的特點(diǎn)主要體現(xiàn)在以下幾個(gè)方面.
(1)信息公開(kāi):區(qū)塊鏈網(wǎng)絡(luò)中的交易都是公開(kāi)透明的,所有用戶都有查看的權(quán)限.
(2)數(shù)據(jù)不可篡改、可追溯:區(qū)塊通過(guò)哈希加密聯(lián)系在一起,保障了數(shù)據(jù)不可篡改性和可追溯性.這一特性也保證了電子結(jié)業(yè)證書(shū)是真實(shí)可靠、不可修改的.
(3)去中心化:區(qū)塊鏈實(shí)質(zhì)上是一種基于P2P(Peer-to-Peer)的分布式數(shù)據(jù)庫(kù),所有節(jié)點(diǎn)都擁有自主權(quán),不存在中心化的節(jié)點(diǎn).
(4)分布式共識(shí)機(jī)制:區(qū)塊鏈網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)都可單獨(dú)為應(yīng)用提供服務(wù),防止單節(jié)點(diǎn)故障影響整個(gè)系統(tǒng)的正常運(yùn)行,共識(shí)機(jī)制也保證了區(qū)塊鏈主鏈的唯一性.
(5)非對(duì)稱性加密:通過(guò)非對(duì)稱性加密技術(shù)對(duì)數(shù)據(jù)進(jìn)行加密處理,有效防止電子結(jié)業(yè)證書(shū)中的個(gè)人信息泄露.
(6)可編程性:主流區(qū)塊鏈如以太坊、超級(jí)賬本、EOS(Enterprise Operation System)等都提供圖靈完備的智能合約編寫(xiě)語(yǔ)言,能夠?qū)崿F(xiàn)豐富的功能.
基于以上6個(gè)方面的主要特點(diǎn),將區(qū)塊鏈技術(shù)應(yīng)用到線上教育結(jié)業(yè)證書(shū)管理系統(tǒng)中是切實(shí)可行的.
2基于區(qū)塊鏈的線上教育結(jié)業(yè)證書(shū)管理系統(tǒng)的設(shè)計(jì)
2.1系統(tǒng)設(shè)計(jì)目標(biāo)
在現(xiàn)階段的線上教育發(fā)展?fàn)顩r下,線上教育的模式已經(jīng)不僅僅是學(xué)員學(xué)習(xí)教師講授的課程,其參與者更涉及學(xué)員、教師、高校和企業(yè).學(xué)員在選修課程后,希望能獲得有公信力的結(jié)業(yè)證書(shū);教師作為內(nèi)容發(fā)布者,希望其內(nèi)容版權(quán)得到保護(hù);高校作為線上教育的支持者,希望其課程能更多地在線上發(fā)布;企業(yè)則希望能夠有更方便、高效的方式,去考核應(yīng)聘人員通過(guò)在線上教育平臺(tái)所獲得的技能的真實(shí)性.因此,在線上教育結(jié)業(yè)證書(shū)管理系統(tǒng)中,數(shù)據(jù)共享尤為重要;數(shù)據(jù)共享的同時(shí),還要保證數(shù)據(jù)的安全性、完整性與可靠性
針對(duì)線上教育參與者的實(shí)際需求,本文提出以下幾個(gè)設(shè)計(jì)目標(biāo).
(1)為系統(tǒng)各方的使用者提供友好支持,共同維護(hù)同一個(gè)記錄學(xué)員學(xué)習(xí)行為數(shù)據(jù)的分布式賬本.
(2)提供良好的性能,保證低延遲響應(yīng),確保系統(tǒng)的穩(wěn)定性.
(3)使用非對(duì)稱加密技術(shù),保證電子結(jié)業(yè)證書(shū)數(shù)據(jù)的安全性和用戶的隱私.
(4)提供穩(wěn)定高效的查詢接口,為企業(yè)、高校等多方用戶查詢結(jié)業(yè)證書(shū)的真實(shí)性提供支持.
2.2系統(tǒng)技術(shù)選型與邏輯設(shè)計(jì)
本文提出的結(jié)業(yè)證書(shū)管理系統(tǒng)是在Hyperledger Fabric 1.0的基礎(chǔ)上設(shè)計(jì)實(shí)現(xiàn)的.Hyperledger Fabric是由IBM公司主導(dǎo)開(kāi)發(fā)的一個(gè)面向企業(yè)級(jí)客戶的開(kāi)源項(xiàng)目.與比特幣和以太坊、EOS等這類公有鏈不同的是,Hyperledger Fabric網(wǎng)絡(luò)中的節(jié)點(diǎn)必須經(jīng)過(guò)授權(quán)認(rèn)證后才能加入.這樣的準(zhǔn)入機(jī)制避免了由POW所帶來(lái)的計(jì)算資源開(kāi)銷,從而大幅提高了交易處理效率,滿足了企業(yè)級(jí)應(yīng)用對(duì)處理性能的訴求.Hyperledger Fabric憑借其靈活的信任機(jī)制和擴(kuò)展性,是目前最主流的聯(lián)盟鏈開(kāi)發(fā)框架.因此,在開(kāi)發(fā)系統(tǒng)時(shí),本文選擇了Hyperledger Fabric架構(gòu).
本文設(shè)計(jì)實(shí)現(xiàn)的結(jié)業(yè)證書(shū)管理系統(tǒng)是由不同的線上教育參與部門共同連接成的一個(gè)教育聯(lián)盟鏈網(wǎng)絡(luò),在聯(lián)盟鏈中每一個(gè)節(jié)點(diǎn)都對(duì)應(yīng)著一份節(jié)點(diǎn)總賬,節(jié)點(diǎn)中的所有交易信息都會(huì)在賬本中備份;在整個(gè)教育聯(lián)盟鏈中,用戶可以通過(guò)任一節(jié)點(diǎn)查詢和下載賬本中的數(shù)據(jù);當(dāng)某個(gè)節(jié)點(diǎn)被黑客攻擊或數(shù)據(jù)遭到篡改時(shí),平臺(tái)會(huì)將該節(jié)點(diǎn)從聯(lián)盟鏈中刪除,然后,平臺(tái)會(huì)提交新增數(shù)據(jù)節(jié)點(diǎn)的指令;在系統(tǒng)節(jié)點(diǎn)驗(yàn)證通過(guò)后,通過(guò)Fabric中的Order節(jié)點(diǎn),把交易共識(shí)連接到其他節(jié)點(diǎn)上,整個(gè)平臺(tái)中的節(jié)點(diǎn)將恢復(fù)正常.本文系統(tǒng)的邏輯結(jié)構(gòu)如圖2所示.
除此之外,本文系統(tǒng)還涉及了區(qū)塊鏈的管理功能,主要包括節(jié)點(diǎn)的展示、智能合約的管理和賬本信息的查看等基本功能.管理功能使區(qū)塊鏈的管理更為便捷,方便了開(kāi)發(fā)者在系統(tǒng)故障時(shí)及時(shí)進(jìn)行維護(hù).
2.3系統(tǒng)流程
業(yè)務(wù)流程如圖3所示:內(nèi)容發(fā)布者發(fā)布課程,經(jīng)由平臺(tái)審核通過(guò)后記錄于區(qū)塊鏈中;學(xué)員選擇課程后,由智能合約管理自動(dòng)生成待發(fā)放的證書(shū),學(xué)員在線學(xué)習(xí)的數(shù)據(jù)將同步到電子證書(shū)中;當(dāng)學(xué)員結(jié)束課程學(xué)習(xí)后,可申請(qǐng)結(jié)業(yè),請(qǐng)求申請(qǐng)通過(guò)后,結(jié)業(yè)證書(shū)將發(fā)放到對(duì)應(yīng)學(xué)員賬戶下;企業(yè)可以通過(guò)證書(shū)的編號(hào),在區(qū)塊鏈中查詢證書(shū)的真實(shí)性.
2.4系統(tǒng)架構(gòu)設(shè)計(jì)
根據(jù)系統(tǒng)的業(yè)務(wù)需求和區(qū)塊鏈的管理要求,本文提出了可視化的管理操作系統(tǒng),其架構(gòu)如圖4所示.結(jié)業(yè)證書(shū)管理系統(tǒng)主要分為區(qū)塊鏈管理、結(jié)業(yè)證書(shū)管理和平臺(tái)管理3個(gè)部分,其中區(qū)塊鏈管理部分負(fù)責(zé)系統(tǒng)中區(qū)塊鏈節(jié)點(diǎn)之間的信息交互;結(jié)業(yè)證書(shū)管理負(fù)責(zé)電子證書(shū)的生成和學(xué)員學(xué)習(xí)記錄的寫(xiě)入,以及結(jié)業(yè)證書(shū)的查詢;平臺(tái)管理部分負(fù)責(zé)用戶管理和系統(tǒng)監(jiān)控.區(qū)塊鏈節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和智能合約的執(zhí)行,多節(jié)點(diǎn)參與共同維護(hù)公共賬本,保證賬本數(shù)據(jù)的唯一性和準(zhǔn)確性.業(yè)務(wù)處理機(jī)提供上層應(yīng)用接口,為多方應(yīng)用查詢結(jié)業(yè)證書(shū)、課程版權(quán)提供支持.
2.5功能模塊設(shè)計(jì)
本系統(tǒng)設(shè)計(jì)了賬本查看模塊、結(jié)業(yè)證書(shū)生成與查詢模塊、智能合約管理模塊、元數(shù)據(jù)管理模塊.本節(jié)重點(diǎn)介紹結(jié)業(yè)證書(shū)生成與查詢模塊.
2.5.1結(jié)業(yè)證書(shū)生成模塊
在本文提出的線上教育結(jié)業(yè)證書(shū)管理系統(tǒng)中,對(duì)結(jié)業(yè)證書(shū)的操作主要有證書(shū)的生成、學(xué)習(xí)行為數(shù)據(jù)寫(xiě)入、證書(shū)的發(fā)放這3個(gè)過(guò)程.為此,本文設(shè)計(jì)了結(jié)業(yè)證書(shū)的數(shù)據(jù)結(jié)構(gòu),如表1所示.
當(dāng)學(xué)員選擇課程后,調(diào)用Certificate Enroll智能合約,生成一個(gè)空白的未發(fā)放的結(jié)業(yè)證書(shū);結(jié)業(yè)證書(shū)以數(shù)字資產(chǎn)的形式記錄于區(qū)塊鏈,當(dāng)結(jié)業(yè)證書(shū)被創(chuàng)建后,存于教師賬戶名下;學(xué)員在平臺(tái)學(xué)習(xí)時(shí),系統(tǒng)將產(chǎn)生的學(xué)習(xí)行為數(shù)據(jù)轉(zhuǎn)化為String格式,調(diào)用Certificate Data接口,把學(xué)習(xí)行為數(shù)據(jù)以數(shù)組的形式存于結(jié)業(yè)證書(shū)中;學(xué)員課程學(xué)習(xí)結(jié)束后申請(qǐng)結(jié)業(yè),若審核通過(guò),則調(diào)用Certificate Exchange智能合約,將結(jié)業(yè)證書(shū)由課程教師名下轉(zhuǎn)移到學(xué)員名下,完成結(jié)業(yè)證書(shū)的發(fā)放.
2.5.2結(jié)業(yè)證書(shū)查詢模塊
本文設(shè)計(jì)的線上教育結(jié)業(yè)證書(shū)管理平臺(tái)實(shí)現(xiàn)了對(duì)電子結(jié)業(yè)證書(shū)的查詢操作.根據(jù)查詢的依據(jù)不同,將查詢方法分為根據(jù)用戶ID認(rèn)證查詢和使用證書(shū)ID直接查詢兩種方式.前者由具有相關(guān)權(quán)限的用戶登錄系統(tǒng)輸入用戶ID進(jìn)行查詢,在符合要求的條件下,返回對(duì)應(yīng)用戶ID下所有的證書(shū).一般狀況下,按學(xué)員ID查詢顯示該學(xué)員獲得的所有證書(shū),按教師ID查詢顯示該教師管理的所有證書(shū).使用證書(shū)ID直接查詢,則返回證書(shū)的詳細(xì)信息,包括課程名稱、授課教師、學(xué)員信息、學(xué)習(xí)行為記錄等.
為了保障用戶的隱私不泄露,在進(jìn)行查詢操作時(shí),無(wú)論是根據(jù)用戶ID查詢還是根據(jù)證書(shū)ID查詢,都需要先驗(yàn)證進(jìn)行查詢操作的用戶是否具有平臺(tái)公鑰,且返回的結(jié)果是由公鑰加密的數(shù)據(jù),進(jìn)行查詢操作的用戶用自己的私鑰解密后,才可以查看明文數(shù)據(jù).查詢操作的流程如圖5所示.
3基于區(qū)塊鏈的線上教育結(jié)業(yè)證書(shū)管理系統(tǒng)的實(shí)現(xiàn)
3.1證書(shū)ID查詢實(shí)現(xiàn)
在根據(jù)證書(shū)ID查詢模塊中,用戶首先登錄賬號(hào)或者使用教育部門的認(rèn)證信息,系統(tǒng)判斷登錄信息有效后,進(jìn)行后續(xù)操作.查詢時(shí),系統(tǒng)通過(guò)Hyperledger Fabric自帶的Get-State(key)方法定位查詢信息中對(duì)應(yīng)證書(shū)信息的位置,然后對(duì)加密的電子結(jié)業(yè)證書(shū)進(jìn)行解密處理,并將處理結(jié)果存儲(chǔ)在本地的臨時(shí)文件中.
在根據(jù)證書(shū)ID查詢過(guò)程中,若登錄信息驗(yàn)證通過(guò),則首先調(diào)用QueryCertificate智能合約,該智能合約首先驗(yàn)證參數(shù)個(gè)數(shù)和參數(shù)正確性,若證書(shū)不存在,則返回錯(cuò)誤信息;若證書(shū)存在,則返回證書(shū)的詳細(xì)數(shù)據(jù).電子結(jié)業(yè)證書(shū)具體實(shí)現(xiàn)的邏輯代碼如圖6所示.
3.2基于Fabric-SDK-go的微服務(wù)的實(shí)現(xiàn)
本文基于Fabric-SDK-go項(xiàng)目中所提供的應(yīng)用程序接口(Application Programming Interface,API),向應(yīng)用層提供了豐富的表征狀態(tài)轉(zhuǎn)移(Representational State Transfer,REST)API.Fabric-SDK-中的SDK主要分為Json數(shù)據(jù)模塊、Request解析模塊、Task執(zhí)行模塊.
(1)Json數(shù)據(jù)模塊主要負(fù)責(zé)將數(shù)據(jù)封裝成Json數(shù)據(jù),采用統(tǒng)一的數(shù)據(jù)格式,方便了應(yīng)用層和數(shù)據(jù)層交互時(shí)數(shù)據(jù)格式的解析.
(2)Request解析模塊主要負(fù)責(zé)接收來(lái)自應(yīng)用層的業(yè)務(wù)請(qǐng)求,解析請(qǐng)求和接收數(shù)據(jù),生成執(zhí)行任務(wù)給Task模塊.Request模塊采用REST架構(gòu)設(shè)計(jì),將業(yè)務(wù)進(jìn)行了分離,針對(duì)不同業(yè)務(wù)類型進(jìn)行路由轉(zhuǎn)發(fā):①/users路由的Post方法通往用戶的ID注冊(cè)功能;②/users路由的Delete方法通往用戶的銷戶功能;③/users/:id路由通往用戶的查詢功能;④/certificates/get/:id路由對(duì)應(yīng)到證書(shū)的查詢功能;⑤/certificates/enroll路由對(duì)應(yīng)到證書(shū)的創(chuàng)建功能;⑥/certificates/exchange路由對(duì)應(yīng)到結(jié)業(yè)證書(shū)的簽授功能;⑦/certificates/exchange/history路由匹配到證書(shū)交易歷史的查詢功能.路由轉(zhuǎn)發(fā)讓業(yè)務(wù)邏輯變得清晰,也讓系統(tǒng)有良好的可拓展性.
(3)Task執(zhí)行模塊是Request模塊和區(qū)塊鏈系統(tǒng)的中間模塊,主要功能是接收Request模塊發(fā)來(lái)的任務(wù)請(qǐng)求,與數(shù)據(jù)層區(qū)塊鏈節(jié)點(diǎn)進(jìn)行交互.該模塊采用gRPC(google Remote Procedure Call Protocol)與區(qū)塊鏈節(jié)點(diǎn)進(jìn)行通信.
本文系統(tǒng)具體的REST API如表2所示.
3.3系統(tǒng)演示
本文所提系統(tǒng)為在線教育平臺(tái)kfcoding.com提供了區(qū)塊鏈服務(wù),在Android客戶端實(shí)現(xiàn)了課程選課、申請(qǐng)結(jié)業(yè)、證書(shū)發(fā)放的線上教育全過(guò)程.圖7為教師登錄后,查看學(xué)員申請(qǐng)結(jié)業(yè)請(qǐng)求和審核是否同意學(xué)員結(jié)業(yè)的界面.由圖7可知,教師可以看到所有學(xué)員提交的申請(qǐng)結(jié)業(yè)請(qǐng)求,該頁(yè)面調(diào)用了基于教師ID查詢證書(shū)的接口.在審核頁(yè)面,教師若同意結(jié)業(yè),則調(diào)用結(jié)業(yè)證書(shū)發(fā)放智能合約,將教師名下的電子證書(shū)轉(zhuǎn)移到學(xué)員名下,并把教師頒發(fā)結(jié)業(yè)證書(shū)的過(guò)程記錄在該結(jié)業(yè)證書(shū)中.
4系統(tǒng)性能測(cè)試
(1)硬件環(huán)境:1臺(tái)Mac主機(jī).其具體配置為:①操作系統(tǒng),Mac OSmojave 10.14.5;②CPU,4核2.7GHz;③內(nèi)存,16GB DDR3;④硬盤(pán),順序讀取2.5GB/s,順序?qū)?.2GB/s;⑤網(wǎng)卡,125MB/s.
(2)開(kāi)發(fā)環(huán)境:Golang 1.11.5,Goland.
(3)測(cè)試方法:TPS(Transaction Per Second)=并發(fā)數(shù)/平均響應(yīng)時(shí)間.
(4)測(cè)試程序:采用多線程編程,每個(gè)線程模擬一個(gè)客戶端(Client)與區(qū)塊鏈系統(tǒng)交互,不斷在系統(tǒng)中增加記錄.共進(jìn)行多組測(cè)試,Client每組依次遞增5個(gè).記錄下請(qǐng)求次數(shù)、響應(yīng)時(shí)間等實(shí)驗(yàn)數(shù)據(jù),計(jì)算不同負(fù)載下系統(tǒng)的吞吐量,同時(shí)監(jiān)控服務(wù)器CPU、內(nèi)存、磁盤(pán)I/O、網(wǎng)絡(luò)等資源使用狀況.直到TPS數(shù)據(jù)不再升高,停止測(cè)試.
實(shí)驗(yàn)結(jié)果如圖8所示:Client數(shù)量在5-25之間,系統(tǒng)未達(dá)到硬件瓶頸,TPS穩(wěn)定提升;當(dāng)Client數(shù)量在25之后繼續(xù)提升,TPS趨于穩(wěn)定,但到達(dá)35時(shí)并有略微下降,此時(shí)系統(tǒng)所有硬件資源的使用情況均未達(dá)到峰值,猜測(cè)Fabric本身的框架缺陷造成了系統(tǒng)瓶頸.通過(guò)實(shí)驗(yàn)結(jié)果,可以得出本文系統(tǒng)的TPS約為209,因?yàn)榫€上教育電子結(jié)業(yè)證書(shū)管理系統(tǒng)并不需要長(zhǎng)時(shí)間,多次數(shù)的信息交互,基本能夠滿足該業(yè)務(wù)場(chǎng)景的需求.
另外,本文提出的系統(tǒng)在Andriod和Web端都有應(yīng)用.當(dāng)在線用戶較多、處理數(shù)據(jù)量較大時(shí),保障系統(tǒng)的低延遲對(duì)用戶體驗(yàn)尤為重要.為此,本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的Web服務(wù)器BDN(Blockchain Delivery Node).其主要目的是加快鏈中和鏈外存儲(chǔ)內(nèi)容的交付.BDN負(fù)責(zé)偵聽(tīng)區(qū)塊鏈系統(tǒng)在正常工作流中引發(fā)的所有事件,且所有事件都添加了索引并收集;當(dāng)系統(tǒng)處理的數(shù)據(jù)量較多時(shí),BDN可對(duì)平臺(tái)事件進(jìn)行聚合并緩存,從而保證了系統(tǒng)的流暢性,提高了用戶體驗(yàn).
BDN的應(yīng)用與普通Fabric應(yīng)用程序在數(shù)據(jù)處理方面的比較如圖9所示.由圖9可知,即便當(dāng)處理的數(shù)據(jù)數(shù)量達(dá)到10000條時(shí),本文系統(tǒng)仍能保障低延遲的用戶體驗(yàn).
5總結(jié)與展望
本文基于區(qū)塊鏈系統(tǒng)Hyperledger Fabric設(shè)計(jì)并實(shí)現(xiàn)了線上教育結(jié)業(yè)證書(shū)發(fā)放系統(tǒng):將學(xué)員的選課、學(xué)員申請(qǐng)結(jié)業(yè)、結(jié)業(yè)證書(shū)的發(fā)放等內(nèi)容存儲(chǔ)于區(qū)塊鏈中,利用區(qū)塊鏈不可篡改的特點(diǎn),提高了線上教育結(jié)業(yè)證書(shū)的公信力,促進(jìn)了線上教育的規(guī)?;l(fā)展.同時(shí),提供的豐富查詢接口,為與教育相關(guān)的多方部門的加入提供了高效支持.
本文的研究還不夠成熟,還需要進(jìn)一步的研究和探討,針對(duì)目前系統(tǒng)中存在的一些問(wèn)題,還有很多后續(xù)的工作需要進(jìn)行,主要有以下幾點(diǎn).
(1)本文系統(tǒng)的吞吐率較低,這是由Fabric中的共識(shí)耗時(shí)較長(zhǎng)的原因?qū)е碌?,后續(xù)需要考慮如何提高共識(shí)效率以應(yīng)對(duì)更大規(guī)?;木€上教育.
(2)從課程版權(quán)保護(hù)的角度看,單純地記錄課程名稱、創(chuàng)建者等信息難以做到真正意義上的版權(quán)保護(hù),需要考慮如何將課程的完整內(nèi)容映射到區(qū)塊鏈中.
(3)當(dāng)系統(tǒng)中的某個(gè)節(jié)點(diǎn)宕機(jī)時(shí),平臺(tái)恢復(fù)正常運(yùn)行的時(shí)間較長(zhǎng),下一步工作需考慮如何快速進(jìn)行故障后的數(shù)據(jù)同步.
(4)線上發(fā)放的結(jié)業(yè)證書(shū)需要權(quán)威機(jī)構(gòu)進(jìn)行信用背書(shū),后續(xù)的工作將探索系統(tǒng)與權(quán)威機(jī)構(gòu)的協(xié)作模式,進(jìn)一步提高證書(shū)的可信度.