◆申鴻燁 侯毅 李子炎
區(qū)塊鏈技術(shù)在學(xué)習(xí)平臺(tái)中的實(shí)踐研究
◆申鴻燁 侯毅 李子炎
(沈陽(yáng)廣播電視大學(xué) 遼寧 110003)
區(qū)塊鏈?zhǔn)且粋€(gè)分布式的共享賬本和數(shù)據(jù)庫(kù),具有去中心化、不可篡改、全程留痕、可以回溯、集體維護(hù)、公開(kāi)透明等特點(diǎn)。這些特點(diǎn)保證了區(qū)塊鏈的“誠(chéng)實(shí)”與“透明”,奠定了區(qū)塊鏈被信任的基礎(chǔ)。本文探討了區(qū)塊鏈技術(shù)在遠(yuǎn)程教育學(xué)習(xí)平臺(tái)的開(kāi)發(fā)與實(shí)踐,并對(duì)區(qū)塊鏈的應(yīng)用進(jìn)行了探討。
區(qū)塊鏈;學(xué)習(xí)平臺(tái)
沈陽(yáng)開(kāi)放大學(xué)在遠(yuǎn)程教育實(shí)踐中有諸多嘗試,例如,在終身教育領(lǐng)域,陸續(xù)與沈陽(yáng)市的振興社區(qū)、凱旋社區(qū)等十余個(gè)街道和社區(qū),遼寧省銀保監(jiān)會(huì),沈陽(yáng)市財(cái)政局,沈陽(yáng)市藥監(jiān)局,沈陽(yáng)市交通局等多個(gè)行業(yè)主管部門(mén)開(kāi)展遠(yuǎn)程終身教育合作,依托沈陽(yáng)終身教育學(xué)習(xí)平臺(tái)(http://www.syeee.net/),實(shí)現(xiàn)了現(xiàn)代信息技術(shù)與終身教育的深度融合。學(xué)生使用PC或者手機(jī)移動(dòng)端參與學(xué)習(xí),切實(shí)為全市市民提供了人人皆學(xué)、時(shí)時(shí)能學(xué)、處處可學(xué)的在線(xiàn)學(xué)習(xí)環(huán)境。
區(qū)塊鏈技術(shù)是時(shí)下比較火熱的概念,區(qū)塊鏈的出現(xiàn)始于比特幣,中本聰發(fā)表了《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》一文,闡述了基于P2P網(wǎng)絡(luò)技術(shù)、加密技術(shù)、時(shí)間戳技術(shù)、區(qū)塊鏈技術(shù)等的電子現(xiàn)金系統(tǒng)的構(gòu)架理念,這標(biāo)志著比特幣和區(qū)塊鏈的誕生。
從本質(zhì)上講,區(qū)塊鏈?zhǔn)且粋€(gè)分布式的共享賬本和數(shù)據(jù)庫(kù),具有去中心化、不可篡改、全程留痕、可以回溯、集體維護(hù)、公開(kāi)透明等特點(diǎn)。這些特點(diǎn)保證了區(qū)塊鏈的“誠(chéng)實(shí)”與“透明”,為區(qū)塊鏈奠定了被信任的基礎(chǔ)。
在遠(yuǎn)程教育領(lǐng)域,區(qū)塊鏈技術(shù)通同樣具有價(jià)值。
區(qū)塊鏈概念源于比特幣,本質(zhì)是一個(gè)去中心化的數(shù)據(jù)庫(kù),同時(shí)作為比特幣的底層技術(shù),是一串使用密碼學(xué)方法相關(guān)聯(lián)產(chǎn)生的數(shù)據(jù)塊,每一個(gè)數(shù)據(jù)塊中包含了一批次比特幣網(wǎng)絡(luò)交易的信息,用于驗(yàn)證其信息的有效性(防偽)和生成下一個(gè)區(qū)塊[1]。
區(qū)塊鏈的去中心化實(shí)現(xiàn)了數(shù)據(jù)分散于網(wǎng)絡(luò)中很多節(jié)點(diǎn)中,相對(duì)于傳統(tǒng)數(shù)據(jù)存儲(chǔ)模式的數(shù)據(jù)集中存儲(chǔ)于網(wǎng)絡(luò)中一個(gè)或幾個(gè)節(jié)點(diǎn)。去中心化保證了系統(tǒng)的安全性,以往的中心化數(shù)據(jù)管理模式,黑客只需要針對(duì)中心節(jié)點(diǎn)攻擊即可摧毀網(wǎng)絡(luò)或者數(shù)據(jù),去中心化模式中,黑客將無(wú)中心節(jié)點(diǎn)可攻擊。
區(qū)塊鏈不可偽造、不可虛構(gòu)、不可篡改。每個(gè)區(qū)塊的塊頭包含了前一區(qū)塊的交易信息的壓縮值,從初始?jí)K到當(dāng)前區(qū)塊形成了一個(gè)鏈表。
區(qū)塊鏈的節(jié)點(diǎn)寫(xiě)入需要所有參與記錄的節(jié)點(diǎn)共同驗(yàn)證交易正確性,因此一旦出現(xiàn)某個(gè)節(jié)點(diǎn)校驗(yàn)信息不一致,其他節(jié)點(diǎn)將不會(huì)承認(rèn)該節(jié)點(diǎn)數(shù)據(jù),該記錄也不會(huì)被寫(xiě)入?yún)^(qū)塊鏈中。
如果試圖修改某個(gè)節(jié)點(diǎn)數(shù)據(jù),那么與該節(jié)點(diǎn)相關(guān)的數(shù)據(jù)都將參與驗(yàn)證,試圖篡改數(shù)據(jù)的人必須同時(shí)入侵并修改去中心化的超過(guò)半數(shù)的網(wǎng)絡(luò)節(jié)點(diǎn)才能篡改數(shù)據(jù),而這幾乎沒(méi)有可能實(shí)現(xiàn)。
遠(yuǎn)程教育學(xué)習(xí)平臺(tái)數(shù)據(jù)庫(kù)核心表包括:用戶(hù)表、課程表、課件表、試題表、試卷表、在線(xiàn)答疑表、用戶(hù)學(xué)習(xí)進(jìn)度表、用戶(hù)成績(jī)表等。
其中記錄用戶(hù)學(xué)習(xí)進(jìn)度的用戶(hù)學(xué)習(xí)進(jìn)度表、用戶(hù)成績(jī)表屬于對(duì)外公布的信息,便于外部用戶(hù)查詢(xún)某學(xué)員某科目是否通過(guò),例如,沈陽(yáng)廣播電視大學(xué)開(kāi)發(fā)的沈陽(yáng)會(huì)計(jì)繼續(xù)教育培訓(xùn)網(wǎng)(見(jiàn)圖1)是沈陽(yáng)市財(cái)政局官方核實(shí)會(huì)計(jì)繼續(xù)教育情況的惟一指定網(wǎng)站,該網(wǎng)站架設(shè)于互聯(lián)網(wǎng)供外部查詢(xún),存在被黑客入侵和篡改數(shù)據(jù)的風(fēng)險(xiǎn)。
圖1 沈陽(yáng)市會(huì)計(jì)從業(yè)人員繼續(xù)教育培訓(xùn)網(wǎng)
Public class實(shí)體
{
public Datetime 時(shí)間戳 {get;set;}
public object 數(shù)據(jù){get;set;}
public string 前驅(qū)哈希值{get;set;}
public string哈希值{get;set;}
}
可以為每行數(shù)據(jù)庫(kù)表記錄建立一個(gè)區(qū)塊鏈實(shí)體字段,將多行數(shù)據(jù)庫(kù)表記錄通過(guò)鏈表形式鏈接起來(lái)。
上述結(jié)構(gòu)中使用的哈希函數(shù),是一種從任何一種數(shù)據(jù)中創(chuàng)建小的數(shù)字“指紋”(也叫做摘要)的方法。通過(guò)MD5、SHA等哈希算法可以將一段較長(zhǎng)的數(shù)據(jù)映射為較短的哈希值,其特點(diǎn)在于惟一性,一旦大數(shù)據(jù)發(fā)生即使微小的變化,哈希值也會(huì)發(fā)生改變,因此,哈希值通常用于數(shù)據(jù)驗(yàn)證,當(dāng)比較兩個(gè)大數(shù)據(jù)是否相等時(shí),只需要比較大數(shù)據(jù)形成的小數(shù)據(jù)哈希值即可,方便會(huì)計(jì)。哈希值的另一個(gè)用途是防止篡改,數(shù)據(jù)在傳遞過(guò)程中同時(shí)發(fā)送哈希值數(shù)據(jù)作為校驗(yàn)信息,接收方收到數(shù)據(jù)后,重新生成哈希值,與發(fā)送方哈希值比較,一旦不一致就可以定性為被篡改,這也是區(qū)塊鏈技術(shù)杜絕被篡改的重要方法。
同時(shí)建立鏈表:List<實(shí)體> 鏈表 = new List<實(shí)體>;
Public bool AddNode(object數(shù)據(jù))
{
...
區(qū)塊鏈實(shí)體實(shí)體=new實(shí)體();
實(shí)體.時(shí)間戳 = DateTime.Now;
實(shí)體.數(shù)據(jù)=數(shù)據(jù);
實(shí)體.前驅(qū)哈希值 = 區(qū)塊鏈[前驅(qū)節(jié)點(diǎn)].哈希值;
實(shí)體.哈希值 = CalcHash(時(shí)間戳+前驅(qū)哈希值+數(shù)據(jù));//計(jì)算哈希值
...
如果應(yīng)用區(qū)塊鏈,將用戶(hù)學(xué)習(xí)數(shù)據(jù)通過(guò)區(qū)塊鏈管理,即使數(shù)據(jù)被外部非法篡改,也可以輕易發(fā)覺(jué)進(jìn)而制止篡改行為的發(fā)生。
};
鏈表添加數(shù)據(jù)的方法是:鏈表.AddNode(數(shù)據(jù));
Public bool 驗(yàn)證實(shí)體(int index)
{
...
if(CalcHash(鏈表[index].時(shí)間戳+鏈表[index-1].哈希值+鏈表[index].數(shù)據(jù)!=哈希值))
return false;
return true;
}
遍歷全部節(jié)點(diǎn),驗(yàn)證關(guān)鍵數(shù)據(jù)組合的哈希值是否相符預(yù)期,判斷當(dāng)前節(jié)點(diǎn)是否被篡改。
可以為學(xué)員學(xué)習(xí)記錄等核心數(shù)據(jù)庫(kù)表建立類(lèi)似區(qū)塊鏈表,一旦數(shù)據(jù)被篡改,通過(guò)掃描驗(yàn)證,即可立即發(fā)現(xiàn),從而形成數(shù)據(jù)保護(hù)。
區(qū)塊鏈?zhǔn)且粋€(gè)分布式的共享賬本和數(shù)據(jù)庫(kù),具有去中心化、不可篡改、全程留痕、可以回溯、集體維護(hù)、公開(kāi)透明等特點(diǎn)。本文探討了區(qū)塊鏈技術(shù)在遠(yuǎn)程教育學(xué)習(xí)平臺(tái)的開(kāi)發(fā)與實(shí)踐,并給出了簡(jiǎn)要算法描述,為區(qū)塊鏈技術(shù)在遠(yuǎn)程教育中的應(yīng)用提供了借鑒思路。
[1]https://baike.baidu.com/item/%E5%8C%BA%E5%9D%97%E9%93%BE/13465666?fr=aladdin.
[2]彭帥興. 區(qū)塊鏈從入門(mén)到精通操作系統(tǒng)[M]. 北京:中國(guó)青年出版社,2019.
[3]徐明星. 圖說(shuō)區(qū)塊鏈[M]. 北京:中信出版社,2017.
[4]袁勇. 區(qū)塊鏈理論與方法[M]. 北京:清華大學(xué)出版社,2019.
2018年度國(guó)家開(kāi)放大學(xué)科研規(guī)劃一般課題(G18F0705Z);2020年度遼寧省現(xiàn)代遠(yuǎn)程教育學(xué)會(huì)重點(diǎn)課題(區(qū)塊鏈技術(shù)在學(xué)習(xí)平臺(tái)中的開(kāi)發(fā)與應(yīng)用研究)的階段性研究成果