区块链技术在学习平台中的实践研究

2022-03-18 07:17申鸿烨侯毅李子炎
网络安全技术与应用 2022年3期
关键词:链表哈希沈阳市

◆申鸿烨 侯毅 李子炎

区块链技术在学习平台中的实践研究

◆申鸿烨 侯毅 李子炎

(沈阳广播电视大学 辽宁 110003)

区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以回溯、集体维护、公开透明等特点。这些特点保证了区块链的“诚实”与“透明”,奠定了区块链被信任的基础。本文探讨了区块链技术在远程教育学习平台的开发与实践,并对区块链的应用进行了探讨。

区块链;学习平台

沈阳开放大学在远程教育实践中有诸多尝试,例如,在终身教育领域,陆续与沈阳市的振兴社区、凯旋社区等十余个街道和社区,辽宁省银保监会,沈阳市财政局,沈阳市药监局,沈阳市交通局等多个行业主管部门开展远程终身教育合作,依托沈阳终身教育学习平台(http://www.syeee.net/),实现了现代信息技术与终身教育的深度融合。学生使用PC或者手机移动端参与学习,切实为全市市民提供了人人皆学、时时能学、处处可学的在线学习环境。

区块链技术是时下比较火热的概念,区块链的出现始于比特币,中本聪发表了《比特币:一种点对点的电子现金系统》一文,阐述了基于P2P网络技术、加密技术、时间戳技术、区块链技术等的电子现金系统的构架理念,这标志着比特币和区块链的诞生。

从本质上讲,区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以回溯、集体维护、公开透明等特点。这些特点保证了区块链的“诚实”与“透明”,为区块链奠定了被信任的基础。

在远程教育领域,区块链技术通同样具有价值。

1 区块链技术

区块链概念源于比特币,本质是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块[1]。

区块链的去中心化实现了数据分散于网络中很多节点中,相对于传统数据存储模式的数据集中存储于网络中一个或几个节点。去中心化保证了系统的安全性,以往的中心化数据管理模式,黑客只需要针对中心节点攻击即可摧毁网络或者数据,去中心化模式中,黑客将无中心节点可攻击。

区块链不可伪造、不可虚构、不可篡改。每个区块的块头包含了前一区块的交易信息的压缩值,从初始块到当前区块形成了一个链表。

区块链的节点写入需要所有参与记录的节点共同验证交易正确性,因此一旦出现某个节点校验信息不一致,其他节点将不会承认该节点数据,该记录也不会被写入区块链中。

如果试图修改某个节点数据,那么与该节点相关的数据都将参与验证,试图篡改数据的人必须同时入侵并修改去中心化的超过半数的网络节点才能篡改数据,而这几乎没有可能实现。

2 学习平台的数据结构

远程教育学习平台数据库核心表包括:用户表、课程表、课件表、试题表、试卷表、在线答疑表、用户学习进度表、用户成绩表等。

其中记录用户学习进度的用户学习进度表、用户成绩表属于对外公布的信息,便于外部用户查询某学员某科目是否通过,例如,沈阳广播电视大学开发的沈阳会计继续教育培训网(见图1)是沈阳市财政局官方核实会计继续教育情况的惟一指定网站,该网站架设于互联网供外部查询,存在被黑客入侵和篡改数据的风险。

图1 沈阳市会计从业人员继续教育培训网

3 区块链技术的设计

3.1 建立链表实体

Public class实体

{

public Datetime 时间戳 {get;set;}

public object 数据{get;set;}

public string 前驱哈希值{get;set;}

public string哈希值{get;set;}

}

可以为每行数据库表记录建立一个区块链实体字段,将多行数据库表记录通过链表形式链接起来。

上述结构中使用的哈希函数,是一种从任何一种数据中创建小的数字“指纹”(也叫做摘要)的方法。通过MD5、SHA等哈希算法可以将一段较长的数据映射为较短的哈希值,其特点在于惟一性,一旦大数据发生即使微小的变化,哈希值也会发生改变,因此,哈希值通常用于数据验证,当比较两个大数据是否相等时,只需要比较大数据形成的小数据哈希值即可,方便会计。哈希值的另一个用途是防止篡改,数据在传递过程中同时发送哈希值数据作为校验信息,接收方收到数据后,重新生成哈希值,与发送方哈希值比较,一旦不一致就可以定性为被篡改,这也是区块链技术杜绝被篡改的重要方法。

同时建立链表:List<实体> 链表 = new List<实体>;

3.2 链表的节点添加

Public bool AddNode(object数据)

{

...

区块链实体实体=new实体();

实体.时间戳 = DateTime.Now;

实体.数据=数据;

实体.前驱哈希值 = 区块链[前驱节点].哈希值;

实体.哈希值 = CalcHash(时间戳+前驱哈希值+数据);//计算哈希值

...

如果应用区块链,将用户学习数据通过区块链管理,即使数据被外部非法篡改,也可以轻易发觉进而制止篡改行为的发生。

};

链表添加数据的方法是:链表.AddNode(数据);

3.3 链表数据的验证

Public bool 验证实体(int index)

{

...

if(CalcHash(链表[index].时间戳+链表[index-1].哈希值+链表[index].数据!=哈希值))

return false;

return true;

}

遍历全部节点,验证关键数据组合的哈希值是否相符预期,判断当前节点是否被篡改。

可以为学员学习记录等核心数据库表建立类似区块链表,一旦数据被篡改,通过扫描验证,即可立即发现,从而形成数据保护。

4 结语

区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以回溯、集体维护、公开透明等特点。本文探讨了区块链技术在远程教育学习平台的开发与实践,并给出了简要算法描述,为区块链技术在远程教育中的应用提供了借鉴思路。

[1]https://baike.baidu.com/item/%E5%8C%BA%E5%9D%97%E9%93%BE/13465666?fr=aladdin.

[2]彭帅兴. 区块链从入门到精通操作系统[M]. 北京:中国青年出版社,2019.

[3]徐明星. 图说区块链[M]. 北京:中信出版社,2017.

[4]袁勇. 区块链理论与方法[M]. 北京:清华大学出版社,2019.

2018年度国家开放大学科研规划一般课题(G18F0705Z);2020年度辽宁省现代远程教育学会重点课题(区块链技术在学习平台中的开发与应用研究)的阶段性研究成果

猜你喜欢
链表哈希沈阳市
沈阳市汽车工程学校
基于特征选择的局部敏感哈希位选择算法
哈希值处理 功能全面更易用
文件哈希值处理一条龙
如何用链表实现一元多项式相加
Study on translation techniques of English idioms
跟麦咭学编程
基于MTF规则的非阻塞自组织链表
巧用哈希数值传递文件
C语言中指针链表的学习探讨