陳永強 顏廷秦 丁雯麗
【摘 要】傳統成績管理系統存在數據易竄改的問題。本文根據區塊鏈不可竄改的原理設計并實現課程成績查詢系統。系統基于以太坊技術開發,采用Node.js作為服務器后端運行環境,前端使用React技術構建用戶界面。系統實現了學生課程成績的錄入與查詢功能,學生可通過瀏覽器查詢區塊鏈中的成績數據。系統有效解決學生成績信息的真實性問題,為區塊鏈在教育領域的應用提供了思路。
【關鍵詞】區塊鏈;以太坊;成績管理
中圖分類號: F230-4;G642 文獻標識碼: 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 引言
學生的成績體現學生在課程學習中的努力程度,學習目標的達成程度,是衡量學生學業水平重要指標之一。學生的成績由教務處統一管理,目前高校普遍采用信息化形式的成績管理系統,但目前的成績管理系統存在許多問題。一是開放性不足。成績管理系統只對學生和教師開放,而大部分學生不愿意主動將成績告知家長,導致家長不能及時了解學生的學習狀態。學生畢業找工作或者出國留學需要學習成績時必須回本校出具證明,效率低下。二是竄改問題時有發生。由于大部分成績管理系統采用B/S架構,后端采用中心化數據庫存儲數據,在維護不當情況下,數據庫容易被惡意竄改,導致部分學生的成績不能體現其真實水平。三是容易受到黑客、病毒攻擊。近年來,網絡病毒層出不窮,部分病毒會破環系統,導致系統可用性降低。而成績管理系統往往部署在校內的單臺服務器上,如果沒有定期備份,存在數據損壞、丟失風險。
區塊鏈作為一種分布式、去中心化、可信任的存儲與交易技術近年來受到越來越多的關注。由于區塊鏈的不可竄改性,許多學者利用區塊鏈開發可信的應用系統。文獻[1]使用區塊鏈設計了一個投票系統,其采用智能合約自動計票,隱私性強,實現匿名性和合法性。文獻[2]設計了保險理賠系統,保護了患者的隱私,同時保險公司可以正常開展理賠業務。文獻[3]也探討了區塊鏈在醫學領域的應用,以求實現醫療數據安全的互聯互通。在教育領域,區塊鏈也有重要的應用價值,文獻[4]討論了區塊鏈技術在教育領域的應用前景。文獻[5]對區塊鏈在成績管理中的應用做了深度研究,認為中心化的成績存儲方式存在數據風險,其利用區塊鏈和OriginStamp設計了一套高校成績管理系統,利用OriginStamp將成績的時間戳保存在區塊鏈中,成績本身仍然保存在中心化數據庫中,散列算法的唯一性保證了成績的可靠性。但是由于散列算法不可逆,如果中心化數據丟失,數據無法恢復。
本文采用區塊鏈技術,設計并實現一套成績查詢系統,數據保存在區塊鏈中,具有安全可靠不可修改的優點。
1 以太坊與智能合約
區塊鏈技術最初用來進行交易記賬,目的是取代中心化的金融交易體系。為了保證金融數據的安全,采用單鏈表、密碼學和分布式技術,形成規模龐大的記賬網絡。區塊鏈數據同步保存在網絡中每一個全功能節點上,節點之間采用共識算法同步數據。最有名的區塊鏈項目是比特幣,比特幣是一種基于區塊鏈技術的點對點數字貨幣,自2009年正式運行以來,10年之內一直穩定良好的運行,沒有出現因為區塊鏈技術導致的重大安全問題。穩定可信的區塊鏈技術讓人們看到了其重要的應用價值。
比特幣網絡主要用來現金交易,應用場景有限。為此許多基于區塊鏈技術的平臺針對實際需求開發了新的功能。其中以以太坊(Ethereum)最為著名[6-7]。根據以太坊的官網介紹,以太坊是用來執行智能合約(smart contract)的去中心化區塊鏈平臺,基于以太坊開發的應用稱為去中心化應用(decentralized application),去中心化應用具有極少的停機時間、無第三方干預、可信任等特點。以太坊最顯著的特征是可編程性,開發者可以編寫智能合約部署到以太坊網絡上。智能合約是數字化的智能合同,合約約定數據的構成以及事件的執行過程,智能合約代碼部署后不可修改,合約的執行有詳細記錄,可追溯。智能合約在以太坊虛擬機Ethereum Virtual Machine (EVM)中運行。
2 系統架構
基于區塊鏈的學生課程成績查詢系統架構如圖1所示。和傳統的web架構相似,系統分為前端和后端。此架構中沒有采用中心化的數據庫系統如MySQL等,而是采用區塊鏈保存數據。對于用戶,分為查詢端和管理端。查詢端是供學生和家長進行成績查詢的界面,可以運行在網頁、手機上。因為應用需要以太坊客戶端才能接入以太坊分布式網絡,為了簡化查詢端的復雜性,設計了RESTful風格的查詢API,因此查詢成績功能也可以集成在外部應用系統之中。管理端直接和以太坊客戶端通信,數據直接保存在區塊鏈中,沒有第三方風險。
3 智能合約結構
本文使用solidity語言設計了運行在以太坊上的成績查詢智能合約。合約的主要結構如表1所示。使用結構體定義一個學生課程成績的完整數據,定義一個哈希表存儲所有學生的數據,采用哈希表主要是為了提高查詢速度。智能合約編譯后部署到以太坊網絡上,這里使用Rinkeby測試網絡,如果使用主網絡則需要購買ETH。
4 系統運行界面
使用express和React開發了系統的后端和前端,查詢成績的界面如圖2所示。輸入學生的學號和姓名,網頁會發送請求到RESTful API服務器,服務器收到請求,通過web3.js轉發請求到智能合約,智能合約根據請求,返回對應數據到API服務器。API服務器再把結果編碼為JSON格式返回給客戶端網頁,最后通過React組件顯示在屏幕上。
5 總結
本文使用智能合約和web技術開發了一套學生課程成績查詢系統。系統經過測試,可以增加和查詢學生的課程成績,滿足基本需求。由于采用了區塊鏈技術,學生成績保存在去中心化的以太坊網絡中,安全可靠,同時區塊鏈的不可竄改性也使成績的真實性得到保障。
【參考文獻】
[1]顏春輝,游林.基于區塊鏈的安全投票系統設計與實現[J].通信技術,2018,51(8):1979-1989.
[2]徐文玉,吳磊,閻允雪.基于區塊鏈和同態加密的電子健康記錄隱私保護方案[J].計算機研究與發展,2018,55(10):2233-2243.
[3]肖麗,付亞,雷曉軍,等.基于區塊鏈的中醫云健康系統[J].成都中醫藥大學學報,2018,41(3):108-111.
[4]許濤.區塊鏈技術在教育教學中的應用與挑戰[J].現代教育技術,2017,27(1):108-114.
[5]孫韻秋,王啟春.基于區塊鏈技術的高校成績管理系統[J].密碼學報,2018,5(5):568-578.
[6]賀海武,延安,陳澤華.基于區塊鏈的智能合約技術與應用綜述[J].計算機研究與發展,2018,55(11):2452-2466.
[7]王千閣,何蒲,聶鐵錚,等.區塊鏈系統的數據存儲與查詢技術綜述[J].計算機科學,2018,45(12):12-18.