陳金育,李瑞光
(1.河南大學 計算機與信息工程學院;2.河南大學 公共外語教學部,河南 開封 475004)
區塊鏈技術被視為繼云計算、物聯網、大數據之后的又一顛覆性技術,受到各行各業廣泛關注。區塊鏈技術于2008年出現,一個自稱為中本聰的人或團體提出了比特幣概念,并指出區塊鏈技術是構建比特幣系統的基礎技術[1]。
隨著互聯網的普及,教育領域突破了傳統面授的單一形式,在線課程得以推廣,但這些新的教育形式卻面臨嚴重的信任危機,其學習過程和學習成果往往不被公眾認可。此外,在傳統教育領域,存在學習過程記錄不完整、不透明問題,導致用人單位在招聘人員時,無法驗證求職人員學歷信息的真實性,給用人單位招聘帶來很多麻煩。因此,急需一種可全程記錄學習過程且記錄信息不可篡改的分布式存儲技術。該技術能支持多種教育形式記錄的學習成果,在保證信息安全性的前提下向全網公開,區塊鏈技術恰好符合這些要求。區塊鏈技術不僅給教育信息共享帶來了極大便利,也為教育信息的整合鋪平了道路,同時給那些非權威教育部門認證的學業信息或行業認證提供了認可機會。本文以一種區塊鏈技術(北航鏈)為原型,將其應用到教育信息化體系的一個子系統(學業信息管理系統)中,對區塊鏈與教育結合進行探索,解決了教育信息傳遞過程中面臨的易篡改和難共享問題。
目前,區塊鏈研究主要在技術和應用兩個方面。在技術層面,研究人員主要在共識機制、區塊鏈體系結構等方面進行改進:如文獻[2]提出一種對拜占庭容錯共識算法的改進,文獻[3]提出了一種區塊雙鏈結構的設計方案;文獻[4]提出了“區塊鏈群”概念,并將其應用到電力能源系統中。在應用探索方面,區塊鏈最初的功能是數字貨幣,隨后向各個領域擴展:文獻[5]介紹了區塊鏈在金融領域的應用前景,文獻[6]介紹了區塊鏈在能源互聯網中的應用,文獻[7]提出了一種基于區塊鏈技術的智慧機器人設計方案,文獻[8]介紹了區塊鏈對教育領域的推動作用。
顯然,區塊鏈在技術上的發展進一步推動了其在應用領域的擴展,同時區塊鏈在應用領域上的延伸也促進其在技術上的進步。
隨著互聯網的發展,教育向多元化邁進,教育信息化的不足也日漸突出。教育資源孤島問題日趨嚴重,教育機構之間的壁壘難以打破。教育信息化發展困境主要表現在以下幾個方面:學生的個人信息面臨丟失或被惡意篡改的風險;傳統教育服務被學校和教育機構壟斷,導致地區之間教育資源分配不均,優質教學資源無法共享;教育領域還存在學校與用人單位之間信用體系不完善問題,用人單位招聘時,沒有渠道獲取學生在校學習數據,無法準確評估應聘者能力;學術欺詐、學歷造假現象屢見不鮮。
區塊鏈技術具有去中心花、信息不可篡改、匿名性等特點,可有效解決教育信息多元化發展的困境。例如,在學業信息管理系統的成績錄入過程中,成績的輸入需要人為操作,再經過區塊鏈的驗證才能確認錄入并加上時間戳,可保證每個成績信息不被篡改。所有成績在全網所有節點保存,不會因為任何節點數據的損毀導致成績丟失。每個人在區塊鏈上有一個完整的信息系統保證,所有資料共存于一個鏈基礎上,在這個鏈基礎上任何時間、任何地點都可以查詢辨別真偽[9]。
本文設計的學業信息管理系統包括學籍管理模塊、成績管理模塊、教務計劃管理模塊、專業管理模塊,這4個模塊采用同一架構實現。本文在對系統進行深入分析的基礎上,以北航鏈架構為重要參考,根據系統需求進行兩方面調整,保證系統的平衡性和穩定性。下面以成績管理模塊為例介紹如何將區塊鏈技術應用到學業信息管理系統中。
(1)成績查詢功能和修改刪除等功能分開,查詢功能不使用區塊鏈,只對查詢請求進行權限過濾,不對查詢操作建塊。因為成績管理模塊對查詢成績的安全性和防篡改性要求不高,不需要每一次查詢都建塊記錄,只需對不同的用戶請求進行過濾即可。這樣不僅可以提高請求的響應速度,而且降低了建塊的系統開銷,減少了區塊占用的存儲空間。
(2)取消了區塊鏈雙鏈結構,使用單鏈結構。對于學業信息管理系統來說,如果使用區塊雙鏈結構,會額外增加系統開銷,同時響應速度也無法保證,所以采用單鏈結構。雖然系統取消了雙鏈結構,但參考北航鏈的OBCC(區塊鏈統一接口)設計,保證了系統的擴展性。
北航鏈是北京航空航天大學與北京大學聯合開發的許可鏈,其設計初衷是為公信和金融服務。北航鏈摒棄了P2P網絡和挖礦機制,加入了節點信用制度,采用并發拜占庭共識協議CBFT(concurrent byzantine fault tolerance),加快了信息處理速度。采用賬戶區塊鏈ABC(account blockchain)和交易區塊鏈TBC(trading blockchain)雙鏈結構,提高了擴展性和吞吐量,降低了延遲和隱私泄露風險[10]。

圖1 北航鏈架構
北航鏈架構有應用層、鏈上代碼層、接口層、區塊鏈服務層和存儲層5層,見圖1。應用層部署應用程序,鏈上代碼層提供與合同相關的服務,接口層提供外部和內部API接口,區塊鏈服務層部署區塊雙鏈體系,存儲層包括操作系統和數據庫服務。
設計學業信息管理系統目的是實現成績、選課、獎懲信息錄入修改不可篡改且可追溯,北航鏈具有去中心化、防篡改、擴展性高的特性,可滿足學業信息管理系統要求。本研究以北航鏈為原型設計學業信息管理系統,探索區塊鏈與教育體系結合,提供一種教育區塊鏈設計模型,為教育信息化和區塊鏈應用提供參考。
成績管理模塊功能包括:工作人員(教師、管理人員等)對成績的錄入、查詢、修改和刪除功能,學生查詢成績功能。工作人員負責將學生的各項成績錄入到系統中,如果錄入錯誤將對成績進行修改或刪除;錄入成績后,學生可登錄系統查詢本學期所修課程成績,也可查詢其它學期所修課程成績。
學生課程成績記錄表包括學號、科目編號、科目名稱、科目類型、任課老師、績點、平時分、考試分、最終得分、考試時間、學期編號等字段,見表1。

表1 學生課程成績記錄
成績管理模塊架構分為4層,從上到下分別是應用層、鏈上代碼層、區塊鏈服務層、存儲層,如圖2所示。下面分層詳細介紹。

圖2 成績管理模塊架構
(1)應用層:部署可視化程序,和用戶交互,將用戶的操作請求及私鑰發送到鏈上代碼層,進行下一步處理。
(2)鏈上代碼層:對用戶發送的私鑰進行解密及驗證,按照用戶的權限判定請求是否有效,有效則按照操作方式進行下一步處理(對于用戶的錄入、修改、刪除請求進行建塊處理,而查詢請求將直接轉入SQL查詢,查詢數據庫并將查到的成績數據返回給用戶),否則拒絕訪問。
(3)區塊鏈服務層:根據用戶發送過來的操作數據創建區塊,并為區塊加上時間戳、父哈希、Merkle根,然后執行用戶請求的數據庫操作,再根據數據庫的反饋決定是否刪除區塊。操作成功后將對全網所有節點的數據庫和Merkle樹同步,操作失敗則刪除區塊。最后將操作結果返回給前臺并顯示。
(4)存儲層:用于存放用戶數據,以及響應用戶的操作請求。
以上4層為該系統的通用架構設計,系統的其它模塊也采用同樣的架構設計。
區塊由塊頭和塊身組成,區塊結構如圖3所示,下面詳細介紹塊頭和塊身結構。
塊頭包括:①時間戳,用于記錄創建區塊的時間(也代表請求操作的時間);②父區塊哈希,引用父區塊的哈希值;③Merkle根,將區塊中所有交易記錄進行兩次哈希運算,將結果作為Merkle根的葉子節點遞歸兩個相鄰節點的哈希值,直到得到最后一個哈希結果,此哈希值就是Merkle根。
塊身包括:①操作類型,表示用戶數據的處理意圖,可以是創建、錄入、修改、刪除;②操作前信息,記錄用戶即將操作對象的原始數據,原始數據存在為空的情況;③操作后信息,記錄用戶操作完成后的數據;④操作人,記錄發起操作的用戶。

圖3 區塊結構-成績管理模塊
參考北航鏈提供的OBCC開發工具包,本文決定使用Java語言開發學業信息管理系統。存儲層采用LevelDB數據庫和Mysql數據庫。其中調用的接口包括用戶IP配置模塊、通訊模塊、調用請求模塊、服務調用模塊,系統調用的API如表2所示。

表2 功能模塊接口設計
區塊鏈中的區塊加密算法使用SHA256。SHA256算法將任意長度的輸入值映射為長度為256的二進制值,用于校驗數據的完整性;公私鑰加解密使用橢圓曲線加密算法,保證用戶身份的真實性;共識機制采用并發拜占庭共識協議CBFT,該算法將交易與投票并行進行,提高了性能;時間戳服務解決“重復支付”問題;區塊存儲在Merkle樹中,用于快速驗證區塊的真實性、減少數據傳輸量和計算復雜度。
本文以北航鏈為原型,設計了一種符合學業信息管理系統的區塊鏈運行架構,該架構不僅擁有區塊鏈去中心化、防篡改、匿名性等特點,而且參考了北航鏈的接口設計(OBCC),提高了系統的擴展性。后期可在學業信息管理系統基礎上進一步改進系統架構設計,使之適應更多的教育信息系統;同時需對區塊結構進行優化,提高建塊效率,增強區塊鏈系統穩定性。