陳永強(qiáng) 顏廷秦 丁雯麗
【摘 要】傳統(tǒng)成績管理系統(tǒng)存在數(shù)據(jù)易竄改的問題。本文根據(jù)區(qū)塊鏈不可竄改的原理設(shè)計(jì)并實(shí)現(xiàn)課程成績查詢系統(tǒng)。系統(tǒng)基于以太坊技術(shù)開發(fā),采用Node.js作為服務(wù)器后端運(yùn)行環(huán)境,前端使用React技術(shù)構(gòu)建用戶界面。系統(tǒng)實(shí)現(xiàn)了學(xué)生課程成績的錄入與查詢功能,學(xué)生可通過瀏覽器查詢區(qū)塊鏈中的成績數(shù)據(jù)。系統(tǒng)有效解決學(xué)生成績信息的真實(shí)性問題,為區(qū)塊鏈在教育領(lǐng)域的應(yīng)用提供了思路。
【關(guān)鍵詞】區(qū)塊鏈;以太坊;成績管理
中圖分類號: F230-4;G642 文獻(xiàn)標(biāo)識碼: A 文章編號: 2095-2457(2019)10-0161-002
DOI:10.19694/j.cnki.issn2095-2457.2019.10.069
A Blockchain-based Query System for Students Course Achievements
CHEN Yong-qiang YAN Ting-qin DING Wen-li
(Suzhou Vocational University, Suzhou Jiangsu 215104, China)
【Abstract】The traditional achievement management system has the problem of easy data modification. According to the principle that blockchain cannot be modified, this paper designs and implements a course score query system. The system is based on the Rinkeby test network. Node.js is used as the backend runtime of the system, and React technology is used to build the web page in the frontend. The system realizes the function of inputting and inquiring students course scores. Students query the score data of blockchain through browser. The system effectively solves the problem of authenticity of student achievement information and provides ideas for the application of blockchain in the field of education.
【Key words】Blockchain; Ethereum; Achievement management system
0 引言
學(xué)生的成績體現(xiàn)學(xué)生在課程學(xué)習(xí)中的努力程度,學(xué)習(xí)目標(biāo)的達(dá)成程度,是衡量學(xué)生學(xué)業(yè)水平重要指標(biāo)之一。學(xué)生的成績由教務(wù)處統(tǒng)一管理,目前高校普遍采用信息化形式的成績管理系統(tǒng),但目前的成績管理系統(tǒng)存在許多問題。一是開放性不足。成績管理系統(tǒng)只對學(xué)生和教師開放,而大部分學(xué)生不愿意主動將成績告知家長,導(dǎo)致家長不能及時(shí)了解學(xué)生的學(xué)習(xí)狀態(tài)。學(xué)生畢業(yè)找工作或者出國留學(xué)需要學(xué)習(xí)成績時(shí)必須回本校出具證明,效率低下。二是竄改問題時(shí)有發(fā)生。由于大部分成績管理系統(tǒng)采用B/S架構(gòu),后端采用中心化數(shù)據(jù)庫存儲數(shù)據(jù),在維護(hù)不當(dāng)情況下,數(shù)據(jù)庫容易被惡意竄改,導(dǎo)致部分學(xué)生的成績不能體現(xiàn)其真實(shí)水平。三是容易受到黑客、病毒攻擊。近年來,網(wǎng)絡(luò)病毒層出不窮,部分病毒會破環(huán)系統(tǒng),導(dǎo)致系統(tǒng)可用性降低。而成績管理系統(tǒng)往往部署在校內(nèi)的單臺服務(wù)器上,如果沒有定期備份,存在數(shù)據(jù)損壞、丟失風(fēng)險(xiǎn)。
區(qū)塊鏈作為一種分布式、去中心化、可信任的存儲與交易技術(shù)近年來受到越來越多的關(guān)注。由于區(qū)塊鏈的不可竄改性,許多學(xué)者利用區(qū)塊鏈開發(fā)可信的應(yīng)用系統(tǒng)。文獻(xiàn)[1]使用區(qū)塊鏈設(shè)計(jì)了一個(gè)投票系統(tǒng),其采用智能合約自動計(jì)票,隱私性強(qiáng),實(shí)現(xiàn)匿名性和合法性。文獻(xiàn)[2]設(shè)計(jì)了保險(xiǎn)理賠系統(tǒng),保護(hù)了患者的隱私,同時(shí)保險(xiǎn)公司可以正常開展理賠業(yè)務(wù)。文獻(xiàn)[3]也探討了區(qū)塊鏈在醫(yī)學(xué)領(lǐng)域的應(yīng)用,以求實(shí)現(xiàn)醫(yī)療數(shù)據(jù)安全的互聯(lián)互通。在教育領(lǐng)域,區(qū)塊鏈也有重要的應(yīng)用價(jià)值,文獻(xiàn)[4]討論了區(qū)塊鏈技術(shù)在教育領(lǐng)域的應(yīng)用前景。文獻(xiàn)[5]對區(qū)塊鏈在成績管理中的應(yīng)用做了深度研究,認(rèn)為中心化的成績存儲方式存在數(shù)據(jù)風(fēng)險(xiǎn),其利用區(qū)塊鏈和OriginStamp設(shè)計(jì)了一套高校成績管理系統(tǒng),利用OriginStamp將成績的時(shí)間戳保存在區(qū)塊鏈中,成績本身仍然保存在中心化數(shù)據(jù)庫中,散列算法的唯一性保證了成績的可靠性。但是由于散列算法不可逆,如果中心化數(shù)據(jù)丟失,數(shù)據(jù)無法恢復(fù)。
本文采用區(qū)塊鏈技術(shù),設(shè)計(jì)并實(shí)現(xiàn)一套成績查詢系統(tǒng),數(shù)據(jù)保存在區(qū)塊鏈中,具有安全可靠不可修改的優(yōu)點(diǎn)。
1 以太坊與智能合約
區(qū)塊鏈技術(shù)最初用來進(jìn)行交易記賬,目的是取代中心化的金融交易體系。為了保證金融數(shù)據(jù)的安全,采用單鏈表、密碼學(xué)和分布式技術(shù),形成規(guī)模龐大的記賬網(wǎng)絡(luò)。區(qū)塊鏈數(shù)據(jù)同步保存在網(wǎng)絡(luò)中每一個(gè)全功能節(jié)點(diǎn)上,節(jié)點(diǎn)之間采用共識算法同步數(shù)據(jù)。最有名的區(qū)塊鏈項(xiàng)目是比特幣,比特幣是一種基于區(qū)塊鏈技術(shù)的點(diǎn)對點(diǎn)數(shù)字貨幣,自2009年正式運(yùn)行以來,10年之內(nèi)一直穩(wěn)定良好的運(yùn)行,沒有出現(xiàn)因?yàn)閰^(qū)塊鏈技術(shù)導(dǎo)致的重大安全問題。穩(wěn)定可信的區(qū)塊鏈技術(shù)讓人們看到了其重要的應(yīng)用價(jià)值。
比特幣網(wǎng)絡(luò)主要用來現(xiàn)金交易,應(yīng)用場景有限。為此許多基于區(qū)塊鏈技術(shù)的平臺針對實(shí)際需求開發(fā)了新的功能。其中以以太坊(Ethereum)最為著名[6-7]。根據(jù)以太坊的官網(wǎng)介紹,以太坊是用來執(zhí)行智能合約(smart contract)的去中心化區(qū)塊鏈平臺,基于以太坊開發(fā)的應(yīng)用稱為去中心化應(yīng)用(decentralized application),去中心化應(yīng)用具有極少的停機(jī)時(shí)間、無第三方干預(yù)、可信任等特點(diǎn)。以太坊最顯著的特征是可編程性,開發(fā)者可以編寫智能合約部署到以太坊網(wǎng)絡(luò)上。智能合約是數(shù)字化的智能合同,合約約定數(shù)據(jù)的構(gòu)成以及事件的執(zhí)行過程,智能合約代碼部署后不可修改,合約的執(zhí)行有詳細(xì)記錄,可追溯。智能合約在以太坊虛擬機(jī)Ethereum Virtual Machine (EVM)中運(yùn)行。
2 系統(tǒng)架構(gòu)
基于區(qū)塊鏈的學(xué)生課程成績查詢系統(tǒng)架構(gòu)如圖1所示。和傳統(tǒng)的web架構(gòu)相似,系統(tǒng)分為前端和后端。此架構(gòu)中沒有采用中心化的數(shù)據(jù)庫系統(tǒng)如MySQL等,而是采用區(qū)塊鏈保存數(shù)據(jù)。對于用戶,分為查詢端和管理端。查詢端是供學(xué)生和家長進(jìn)行成績查詢的界面,可以運(yùn)行在網(wǎng)頁、手機(jī)上。因?yàn)閼?yīng)用需要以太坊客戶端才能接入以太坊分布式網(wǎng)絡(luò),為了簡化查詢端的復(fù)雜性,設(shè)計(jì)了RESTful風(fēng)格的查詢API,因此查詢成績功能也可以集成在外部應(yīng)用系統(tǒng)之中。管理端直接和以太坊客戶端通信,數(shù)據(jù)直接保存在區(qū)塊鏈中,沒有第三方風(fēng)險(xiǎn)。
3 智能合約結(jié)構(gòu)
本文使用solidity語言設(shè)計(jì)了運(yùn)行在以太坊上的成績查詢智能合約。合約的主要結(jié)構(gòu)如表1所示。使用結(jié)構(gòu)體定義一個(gè)學(xué)生課程成績的完整數(shù)據(jù),定義一個(gè)哈希表存儲所有學(xué)生的數(shù)據(jù),采用哈希表主要是為了提高查詢速度。智能合約編譯后部署到以太坊網(wǎng)絡(luò)上,這里使用Rinkeby測試網(wǎng)絡(luò),如果使用主網(wǎng)絡(luò)則需要購買ETH。
4 系統(tǒng)運(yùn)行界面
使用express和React開發(fā)了系統(tǒng)的后端和前端,查詢成績的界面如圖2所示。輸入學(xué)生的學(xué)號和姓名,網(wǎng)頁會發(fā)送請求到RESTful API服務(wù)器,服務(wù)器收到請求,通過web3.js轉(zhuǎn)發(fā)請求到智能合約,智能合約根據(jù)請求,返回對應(yīng)數(shù)據(jù)到API服務(wù)器。API服務(wù)器再把結(jié)果編碼為JSON格式返回給客戶端網(wǎng)頁,最后通過React組件顯示在屏幕上。
5 總結(jié)
本文使用智能合約和web技術(shù)開發(fā)了一套學(xué)生課程成績查詢系統(tǒng)。系統(tǒng)經(jīng)過測試,可以增加和查詢學(xué)生的課程成績,滿足基本需求。由于采用了區(qū)塊鏈技術(shù),學(xué)生成績保存在去中心化的以太坊網(wǎng)絡(luò)中,安全可靠,同時(shí)區(qū)塊鏈的不可竄改性也使成績的真實(shí)性得到保障。
【參考文獻(xiàn)】
[1]顏春輝,游林.基于區(qū)塊鏈的安全投票系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),2018,51(8):1979-1989.
[2]徐文玉,吳磊,閻允雪.基于區(qū)塊鏈和同態(tài)加密的電子健康記錄隱私保護(hù)方案[J].計(jì)算機(jī)研究與發(fā)展,2018,55(10):2233-2243.
[3]肖麗,付亞,雷曉軍,等.基于區(qū)塊鏈的中醫(yī)云健康系統(tǒng)[J].成都中醫(yī)藥大學(xué)學(xué)報(bào),2018,41(3):108-111.
[4]許濤.區(qū)塊鏈技術(shù)在教育教學(xué)中的應(yīng)用與挑戰(zhàn)[J].現(xiàn)代教育技術(shù),2017,27(1):108-114.
[5]孫韻秋,王啟春.基于區(qū)塊鏈技術(shù)的高校成績管理系統(tǒng)[J].密碼學(xué)報(bào),2018,5(5):568-578.
[6]賀海武,延安,陳澤華.基于區(qū)塊鏈的智能合約技術(shù)與應(yīng)用綜述[J].計(jì)算機(jī)研究與發(fā)展,2018,55(11):2452-2466.
[7]王千閣,何蒲,聶鐵錚,等.區(qū)塊鏈系統(tǒng)的數(shù)據(jù)存儲與查詢技術(shù)綜述[J].計(jì)算機(jī)科學(xué),2018,45(12):12-18.