基于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 的两个节点。它们存储账本的副本并执行链码(智能合约)。

四、数据模型设计

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

名称 数据类型 说明
ObjectType string
Name string 姓名
Gender string 性别
Nation string 民族
EntityID string 身份证号(记录的Key)
Place string 籍贯
BirthDay stirng 出生日期
Photo string 照片
EnrollDate string 入学日期
GraduationDate string 毕(结)业日期
SchoolName string 所读学校名称
Major string 所读专业
QuaType string 学历类别(普通、成考等)
Length string 学制(两年、三年、四年、五年)
Mode string 学习形式(普通全日制)
Level string 层次(专科、本科、研究生、博士)
Graduation string 毕(结)业(毕业、结业)
CertNo string 证书编号
Historys []HistoryItem 当前edu的详细历史记录

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

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

五、原型交互设计

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://ip:9000/

输入管理员账号及密码登录验证成功,则进入系统首页面

在首页面中点击 查询范围链接,进入 help页面,

点击添加学历信息链接进入,添加学历信息页面

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

根据身份证号码查询页面

根据身份证号码查询页面查询结果页面

编辑页面

编辑成功自动跳转到根据身份证号码查询结果页面

十一、Hyperledger explorer——Fabric浏览器

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




十二、分布式数据库

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

CouchDB 数据库2:peer1节点9051端口 http://ip: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框架,还深入了解了区块链技术的原理和应用。我感受到了区块链技术在学历认证领域的优势和潜力,也体会到了开发区块链应用的难度和挑战。这个项目让我收获了很多知识和经验,也激发了我对区块链技术的兴趣和热情。

基于Hyperledger Fabric的学位学历认证管理系统相关推荐

  1. 搭建区块链浏览器——基于hyperledger fabric 1.0,MySQL容器

    搭建区块链浏览器--基于hyperledger fabric 1.0,MySQL容器 区块链 hyperledger fabric 浏览器 MySQL docker  Contents 环境要求 分支 ...

  2. 基于Hyperledger Fabric实现药品溯源

    基于Hyperledger Fabric实现药品溯源的demo功能简介,涉及药厂节点,代理商节点,零售商节点等多机构间的上链查询. 更多区块链技术与应用分类: 区块链应用    区块链开发 以太坊 | ...

  3. 留学生学位学历认证流程

    01 注册新用户 登录留学政务服务平台http://zwfw.cscse.edu.cn/(以下简称"系统")首页,点击页面上方学历学位认证,选择[在线办理] http://zwfw ...

  4. 区块链技术入门(基于Hyperledger Fabric)

    文章目录 1.具体名词解释 2.区块链优势 3.区块链网络的构建 3.1.创建网络 3.2.添加网络管理员 3.3.定义联盟 3.4.为联盟创建通道 3.5.节点和账本 3.6.应用程序和智能合约链码 ...

  5. (区块链溯源)基于Hyperledger Fabric 的农产品区块链溯源方法

    1. 技术背景 溯源技术中产品溯源是将当前先进的物联网技术.自动控制技术.自动识别技术. 互联网技术结合利用,通过专业的机器设备对单件产品赋予唯一的二维码或条形码等作为防伪身份证,实现"一物 ...

  6. (区块链溯源)基于Hyperledger Fabric 区块链的危险化学品溯源

    1. 技术背景 在现阶段,我国对危险化学品实施监管的有八个部门,分别为:安全生产监督管理部门.质量监督检验检疫部门.环境保护主管部门.交通运输主管部门.卫生主管部门.公安部门.工商行政管理部门.邮政管 ...

  7. (区块链溯源)基于Hyperledger Fabric 区块链的产品溯源( 化妆品 )

    1. 技术背景 随着互联网的普及,网络购物的优点更加突出,网购与海购成为了越来越多消费者的选择.但是消费者们对于所购买的产品是否安全合格并不了解,诸如化妆品.食品等产品的质量会直接影响到消费者的身体健 ...

  8. 搭建基于hyperledger fabric的联盟社区(九) --检索状态数据库

    一.启动elasticsearch服务 官网下载压缩包解压,进入bin目录启动: ./elasticsearch 通过ip访问 localhost:9200,可以看到如下信息 { name: &quo ...

  9. Fabric 超级账本学习【8】Hyperledger Fabric 实战——基于区块链的学历学位系统

    文章目录 摘要 安装部署 基于区块链的学历学位系统 报错1如下 报错原因:config.yaml 配置文件中的证书路径错误 访问基于区块链的学历学位系统 登录 基于区块链的学历学位系统 添加高等教育学 ...

最新文章

  1. 大白话系列之C#委托与事件讲解(一)
  2. CentOS、Ubuntu、Gentoo
  3. timestamp 字段
  4. linux5.9安装教程,Linux内核5.9的最重要功能及安装方法
  5. linux 修改jmeter内存溢出,jmeter本机内存溢出如何修改?
  6. 如何让梯形变成平行四边形_开放的课堂 创新的天地——平行四边形的面积教学片段与反思...
  7. 【Pytorch神经网络实战案例】12 利用注意力机制的神经网络实现对FashionMNIST数据集图片的分类
  8. 飞鸽传书(IPMSG)的主要工作原理
  9. SENET——imageNet冠军解读
  10. Mac源码安装使用OpenCV
  11. 无需多个模型也能实现知识整合?港中文MMLab提出“烘焙”算法,全面提升ImageNet性能...
  12. SNMP报文抓取与分析(一)
  13. 黑马程序员python全套视频-python视频教程免费:求黑马程序员python教程?
  14. latex符号正下方下标
  15. 系统辨识工具箱使用指南
  16. 微软服务器和onenote,为什么微软推出“阉割版”onenote?一篇文章快速入门onenote uwp...
  17. 泰拉瑞亚手机版html,泰拉瑞亚1.2
  18. IDEA的常用快捷键(超详细)
  19. oracle查询备份存储路径,Oracle数据库备份和恢复(导出,导入)
  20. matlab 计算相关系数,MATLAB如何使用corrcoef函数计算样本数据的相关系数

热门文章

  1. 英雄联盟无法启动 因计算机中,发生了未知的dx错误,英雄联盟无法启动
  2. Kubernetes服务搭建[配置-部署](Kubeadm)
  3. UE 项目UI的快速设计和显示UI
  4. 锂电池和铅酸电池的比较
  5. Android vold介绍
  6. 利用AI+大数据的方式分析恶意样本(十八)
  7. python字典换行输出_Python字典如何换行
  8. C语言如何在printf中输出百分号%
  9. vue父子组件通信方式哪几种
  10. / Vijos / 题库 / 1404 遭遇战 spfa 建图