基于区块链技术的高校企业实践教学管理系统

2019-08-20 07:27肖建宏
现代计算机 2019年20期
关键词:以太哈希账户

肖建宏

(广东白云学院,广州510450)

0 引言

当前,我国越来越多的高校正在实施校企协同育人“3+1”人才培养模式改革,为确保累计一年学生在企业的实践教学活动能够高效规范地运行,保障企业实践教学的质量,越来越多的高校开发、部署了企业实践教学管理系统,通过企业实践教学管理系统实现毕业设计(论文)指导、教学巡查及企业现场调研等教学活动的落实。然而,由于传统的企业实践教学管理系统具有中心化的特点,存在数据不安全和容易滋生系统开发人员或管理人员未经授权就删除或篡改数据的现象;其次,由于系统中的数据影响到对学生和教师的考核,部分用户可能为了自己的利益而抵赖自己的错误行为,例如,可能有的教师给错了一个成绩,但却坚持谎称自己提交的是另一个成绩,之所以出现信息不对,是因为系统出了问题或其他管理人员可能的误操作甚至是有意修改,而这无疑会让系统陷入被质疑的境地,从而给系统的管理带来麻烦;最后,传统的企业实践教学管理信息系统极容易导致集体作假的情况,个别部门可能出于应付上级管理部门评估检查的需要而通过行政的手段要求教师、学生甚至系统开发人员或管理人员批量修改数据,这将给上级管理部门准确了解下级部门的教学运行情况带来极大的障碍。所有这些都会在一定程度上给系统的可信性造成一定的负面影响,极大地增加系统的信用成本和管理成本。

区块链技术是一种基于现代密码学、分布式一致性协议、点对点网络通信技术和智能合约编程语言等形成的数据交换、处理和存储的技术组合,是比特币、以太坊等诸多密码学货币背后的支撑性技术,可以在互不信任的环境下实现去信任中介的可信交易,具有去中心化、去信任化、防伪造和不可篡改的特点,是已经被实践证明了的可作为价值转移的技术手段,能有效解决上述传统高校企业实践教学管理系统中存在的问题。本文以高校企业实践教学管理的业务需求为立足点,提出一种基于区块链技术的高校企业实践教学管理系统的设计与实现方案。

1 设计

1.1 功能设计

根据校企协同育人“3+1”人才培养模式,高校企业实践教学管理信息系统需要为用户提供实习安排、教学巡查和毕业设计(论文)等业务服务,为此,我们将高校企业实践教学管理信息系统划分为四个子系统,具体的功能结构如图1 所示。

其中,实习安排子系统主要实现了实习基地管理、实习岗位管理、学生岗位安排、学生导师安排及现场调研等功能,它明确了学生与实习岗位、学生与指导教师之间的关系,同时规定了学生实习期间需要完成的任务,具体包括在系统中提交企业现场调研报告、生产实习报告、实习周记及实习鉴定表等材料。

教学巡查子系统主要实现了巡查申请、巡查审核及巡查评价等功能,通过该子系统,教师可以申请到企业现场巡查某些学生,而学校可以审核教师的教学巡查申请,当教学巡查完成时,学生对教师的教学巡查进行评价打分。

毕业设计(论文)子系统主要实现了选题、任务书、开题报告、中期检查、毕业设计(论文)及毕业答辩等功能,它明确了学生、指导教师、评阅教师和答辩组长协同完成毕业设计(论文)的过程及其需要在系统中提交的各种材料,具体包括毕业设计(论文)题目、任务书、开题报告、中期检查表、毕业设计(论文)等。

用户子系统主要实现了用户管理、角色管理、权限管理、用户角色管理和角色权限管理等功能。通过该子系统,高校企业实践教学管理信息系统可以确保用户只能访问与其身份相符的功能与数据,它是系统信息安全的保障。

图1 高校企业实践教学管理信息系统功能结构图

1.2 基于区块链的可信化设计

传统的高校企业实践教学管理信息系统普遍采用B/S 结构设计实现,即用户通过浏览器访问服务器,服务器根据用户的请求返回数据或将数据存储至数据库中。但这样的设计存在开发人员和系统管理人员权限过大的缺点,极容易滋生造假、抵赖和腐败的现象。为保障系统的可信性与权威性,在不影响高校企业实践教学运行效率与质量的情况下,基于区块链技术的高校企业实践教学管理系统在传统B/S 结构的基础上增加了区块链和区块链访问对象,其物理架构如图2所示。

在基于区块链技术的高校企业实践教学管理系统中,当用户通过系统实现教学业务数据的提交时,系统在将业务数据存储到传统数据库的同时,将业务的核心数据以交易的方式发送至区块链上,并将交易的哈希返回给用户。由于系统同时与中心化的数据库和去中心化的区块链进行交互,而且用户可以通过第三方区块链客户端直接访问区块链数据,因此开发人员与系统管理人员无法篡改系统的数据。如果开发人员或系统管理人员通过修改系统程序或篡改系统中心数据库的数据实现作假或抵赖已发生过的行为,那么用户可以凭借发生过的交易哈希通过第三方区块链客户端访问区块链数据实现对数据真伪的验证。

2 实现

基于区块链技术的高校企业实践教学管理信息系统主要使用ASP.NET MVC、SQL Server、Nethereum 和Geth(Go-ethereum)等技术和工具设计实现。其中ASP.NET MVC 用于实现系统的业务逻辑、数据访问和用户接口。系统的数据主要存储于SQL Server 数据库,但核心业务数据则同时存储于以太坊联盟区块链。以太坊是一个具有智能合约功能的区块链平台,具有更快的“出块”速度,能够很好地满足高校企业实践教学管理信息系统的需要。系统使用当前最为成熟且应用广泛的以太坊客户端Geth 部署以太坊联盟链,并通过专为以太坊设计的.NET 集成库Nethereum 实现与以太坊联盟链进行交互。

2.1 以太坊区块链访问对象设计

为实现和以太坊区块链的交互,系统设计实现了以太坊区块链访问对象。以太坊区块链访问对象主要包括交易发送对象、交易查询对象和账户分配对象。

交易发送对象主要封装了交易发送方法Send-Transaction,该方法接收用户以JSON 格式提交的数据,并将其编码为一个字节序列,然后在此基础上,进一步将字节序列转换为十六进制格式,再将其发送给指定的高校以太坊联盟链账户。如果交易发送成功,交易发送方法将返回此次交易的哈希,否则返回空字符串。由于用户可通过第三方以太坊客户端向特定以太坊账户发送交易,且以太坊上的数据是公开透明的,为了防止用户通过第三方以太坊客户端直接向高校以太坊联盟链账户发送交易,从而达到伪造数据的目的,系统在调用Nethereum.NET 集成库中的web3.TransactionManager.SendTransactionAsync 方法发送交易时,将使用SHA512 算法计算用户提交的原始数据的哈希,并使用系统的密钥和DES 加密算法对求得的哈希进行加密,然后与原始数据一起发送给以太坊高校盟链账户。交易发送对象的类型图如图3 所示。

图3 交易发送对象类型图

交易查询对象主要封装了交易查询方法GetTransactionByHash 和交易验证方法CheckTransaction。交易查询方法接收用户传递的交易哈希,并将该交易哈希传送给Nethereum.NET 集成库中的web3.Eth.Transactions.GetTransactionByHash.SendRequestAsync 方法以获取与该交易哈希相匹配的以太坊交易对象,并返回该以太坊交易对象。交易验证方法接收一个以太坊交易对象作为参数,通过获取该参数的Input 属性获取用户提交的原始数据InitialData 和经系统加密的哈希EncryptHash,然后使用SHA512 算法计算用户提交的原始数据InitialData 的哈希,并将得到的哈希与使用系统密钥和DES 解密算法解密EncryptHash 得到的哈希进行比对,如果相等则返回true,否则返回false。交易查询对象的类型图如图4 所示。

图4 交易查询对象类型图

账户分配对象封装了为用户生成以太坊账户的方法CreateEthAccountForUser 和查询以太坊账户余额的方法GetAccountBalanceEther。CreateEthAccountForUser 方法接收一个系统用户名作为参数,通过调用Nethereum.NET 集成库中的Signer.EthECKey.GenerateKey()方法生成私钥,然后根据该私钥构造一个Nethereum.Web3.Accounts.Account 类型对象。在获得以太坊账户对象之后,系统进一步通过交易发送对象为该以太坊账户转账一定额度的以太币,以确保该以太坊账户拥有足够的以太币能将数据存储至以太坊区块链上,最后系统将用户的用户名、以太坊账户的地址和私钥保存到数据库中。GetAccountBalanceEther 方法接收一个以太坊账户地址作为参数,并通过调用Nethereum.Net集成库中的web3.Eth.GetBalance.SendRequestAsync 方法获取指定账户的余额。账户分配对象的类型图如图5 所示。

图5 账户分配对象类型图

2.2 数据存储设计

在确保系统可信的同时,为兼顾系统的运行性能,系统并没有将高校企业实践教学的所有业务数据都存储到以太坊区块链上,而是只将指导教师、评阅教师、答辩组长和系主任等用户对学生提交的作业、毕业设计(论文)或调研报告等的评价或评分等核心数据保存到以太坊区块链上。与此同时,在系统的数据库中,系统在以太坊交易记录表中保存了评价主体对评价客体评价时产生的以太坊交易哈希,其数据存储的具体设计如表1 所示。

通过以太坊交易记录表,用户可以凭借评价客体类型和评价客体主键快速地查询指定作业相关的以太坊交易哈希,然后通过调用以太坊区块链访问对象中的交易查询方法获取该交易哈希对应的以太坊交易对象,而不必以遍历以太坊区链上每个区块的交易,然后匹配每一笔交易中的目标数据的方式实现交易查询,这极大地提升了系统的运行性能。

在用户体验方面,为简化用户提交数据的流程,系统为每个用户分配了以太坊账户,并将其保存在数据库中,当系统需要将数据存储到以太坊联盟链上时,系统根据用户登录系统的用户名查询数据库中相应用户的以太坊账户和私钥,并以该以太坊账户和私钥给系统指定的高校以太坊联盟链账户发送一笔交易。用户的以太坊账户信息存储设计如表2 所示。

2.3 验证机制设计

为确保用户可以便捷地对系统中的核心数据进行验证,当用户将数据以交易的方式发送至高校以太坊联盟链账户时,系统将发送交易时返回的交易哈希以邮件的方式同时发送至相关用户的电子邮箱,并告知用户如何使用以太坊客户端Geth 查询交易。由于以太坊客户端Geth 为第三方开发的软件,而以太坊区块链具有去中心化、可溯源、不可篡改的特点,因此能有效防止程序员、数据库管理员或系统管理员对系统数据或程序的篡改,从而可以实现对数据和信息的有效验证。

3 结语

基于区块链技术的高校企业实践教学管理信息系统通过综合应用ASP.NET MVC、SQL Server、Geth 以太坊客户端和Nethereum 等技术和工具将中心化与去中心化结合起来,以去中心化的方式实现数据的分布式存储与可信性验证,以中心化的方式兼顾系统的运行性能,有效地实现了高校企业实践教学活动可信、高效地运行。

猜你喜欢
以太哈希账户
基于特征选择的局部敏感哈希位选择算法
哈希值处理 功能全面更易用
自然法则的哲学原理——以太模型大统一理论续论
文件哈希值处理一条龙
基于活跃节点库的以太坊加密流量识别方法
以太万物理论概述
如何切换Windows 10本地账户与微软账户
探索自由贸易账户体系创新应用
Windows10账户的删除、禁用与启用
以太坊又爆漏洞黑客大战一触即发