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

news2024/11/14 8:55:21

基于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操作

在这里插入图片描述

在这里插入图片描述

七、数据存储

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

区块链节点数据包括区块数据和状态数据两者
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下。我们可以在这里看到链上的所有信息,例如交易的时间、区块的哈希值和数据的哈希值等。
Hyperledger explorer

区块细节
交易细节

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

十二、分布式数据库

peer0节点7051端口 http://ip:5984/_utils

peer1节点9051端口 http://ip:7984/_utils

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

十三、不可篡改性

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

十四、项目部署

1.部署环境

•阿里云主机 Ubuntu 16.04 64 位(root 用户)
•Golang 语言 go1.17
•docker 18.09.7
•docker-compose 1.22.0

2.环境配置

2.1安装 docker 以及 docker-compose

使用 docker 可以方便的解决程序依赖的环境问题;并且后续需要使用到的 Hyperledger Fabric 框架官方也提供了相应的 docker 的容器。
安装 docker 命令:

sudo apt install docker.io

验证 docker 成功安装:docker version,结果如图所示:
docker 安装成功

为了方便管理多个 docker 容器,还需要安装 docker-compose:sudo apt install docker- compose;验证安装成功:docker-compose version;如图所示:

docker-compose 安装成功

2.2安装 golang

区块链框架Hyperledger Fabric 目前支持Java、Go 等主流编程语言并提供了相应的SDK,但是支持最全面的还是 Golang,因此采用 Go 语言来进行开发是比较好的选择;

  1. 安装 Golang: wget https://dl.google.com/go/go1.17.0.linux-amd64.tar.gz
  2. .使用 tar 命令将压缩文件解压至指定路径/usr/local/下: tar -zxvf go1.17.0.linux-amd64.tar.gz -C /usr/local
  3. 最后是设置环境变量 GOHOME 以及 GOROOT: sudo vim /etc/profile 添加如下(当前用户为 root 用户,$HOME=/root):
export GOPATH=$HOME/go 
export GOROOT=/usr/local/go,
export PATH=$GOROOT/bin:
  1. $PATH 激活环境变量: source /etc/profile
  2. 验证安装成功,使用 go version 结果如图所示:

Golang 安装成功

3.项目部署

  1. 创建保存项目的文件夹: mkdir -p $GOPATH/src
  2. 进入文件夹: cd $GOPATH/src
  3. 从 github 仓库克隆项目: git clone https://github.com/bug-away-away/BlockChainCreditSystem.git
  4. 进入项目目录:cd education
  5. 添加项目开发需要依赖的 Golang 包:go mod tidy
    命令可能会执行失败,此时设置代理即可:go env -w GOPROXY=https://goproxy.cn

4.启动项目

由于每次启动流程相对固定,因此编写脚本来自动清理 docker 然后启动项目在项目的目录下运行 clean_docker.sh 脚本即可启动项目:

./clean_docker.sh

项目启动成功的结果如图所示:

启动项目成功

通过浏览器访问 9000 端口即可进入 web 端,结果如图所示:

: 启动项目成功

十五、总结

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

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

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/399798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

极限的准则

目录 定理: 极限运算法则: 极限存在之间的计算: 例题: 定理: 定理: 定理1和定理2的证明方式类似,我们对定理2进行证明。 我们举一个例子: 这道题目的结果是0,但是计算…

excel 数据查询,几个模式化公式请收好

1、一对多查询 所谓一对多,就是符合某个指定条件的有多个结果,要把这些结果都提取出来。 如下图所示,希望根据F2单元格中指定的部门,提取出左侧列表中“生产部”的所有人员姓名。 Excel 2019及以下版本:在H2单元格输…

【教学典型案例】17.环境混用带来的影响

目录一:背景介绍二:思路&方案思路方案1、分权2、定期对比环境混乱的危害三:过程1、排查nginx请求转发是否正常2、找到开发环境项目的服务器,查看服务器配置的nginx3、从fastdfs服务器上找到安装存储的位置4、排查结果四&#…

Java代码优化|提高代码质量的一些小技巧

1.需要 Map 的主键和取值时,应该迭代 entrySet()当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值性能更佳。正例…

python进程间通信

进程间通信表示进程之间的数据交换。 为了开发并行应用程序,需要在进程间交换数据。 下图显示了多个子过程之间同步的各种通信机制 - 各种通信机制 队列 队列可以用于多进程程序。 多处理模块的Queue类与Queue.Queue类相似。 因此,可以使用相同的API…

【带你搞定第二、三、四层交换机】

​ 01 第二层交换机 OSI参考模型的第二层叫做数据链路层,第二层交换机通过链路层中的MAC地址实现不同端口间的数据交换。 第二层交换机主要功能,就包括物理编址、错误校验、帧序列以及数据流控制。 因为这是最基本的交换技术产品,目前桌面…

07-PL/SQL基础(if语句,case语句,循环语句)

本章主要内容: 1.PL/SQL的基本构成:declare,begin,exception,end; 2.结构控制语句:IF语句,CASE语句 3.循环结构:loop循环,for loop循环,while loop循环 PL/SQL的基本构成 特点 PL/SQL语言是SQL语言的扩展&#xff…

JS学习笔记day03

今日内容 零、 复习昨日 CSS 美化,复用,样式文件和表现文件分离便于维护 选择器 {属性:值;…} 引入css 内联文件内部使用style标签外部文件 <link href"路径" rel"stylesheet" type"text/css"> 选择器 基本 idclass标签名 属性 标签名…

【并发编程】深入理解Java内存模型及相关面试题

文章目录优秀引用1、引入2、概述3、JMM内存模型的实现3.1、简介3.2、原子性3.3、可见性3.4、有序性4、相关面试题4.1、你知道什么是Java内存模型JMM吗&#xff1f;4.2、JMM和volatile他们两个之间的关系是什么&#xff1f;4.3、JMM有哪些特性/能说说JMM的三大特性吗&#xff1f…

从新手小白到运维大咖,SysOM 多场景宕机实例解析 | 龙蜥技术

文/刘馨蔚&#xff0c;系统运维 SIG Contributor “老板老板&#xff0c;今天业务又发生了抖动&#xff0c;具体原因暂时还不能快速查清&#xff0c;再给我点时间吧。” “老板老板&#xff0c;这个问题我好像解过&#xff0c;但是也不太确定&#xff0c;我再重新分析一次吧。…

Django/Vue实现在线考试系统-05-开发环境搭建-PyCharm安装

1.0 PyCharm下载和安装 PyCharm 是 JetBrains 公司(www.jetbrains.com)研发,用于开发 Python 的 IDE 开发工具。图 1 所示为 JetBrains 公司开发的多款开发工具,其中很多工具都好评如潮,这些工具可以编写 Python、C/C++、C#、DSL、Go、Groovy、Java、JavaScript、Objecti…

关于kafka,你背了哪些面试题(持续更新中)

昨天面试大数据开发岗位&#xff0c;面试官问了一个开放性的问题&#xff0c;讲讲你对kafka的认识&#xff0c;一下有些懵住&#xff0c;不知道从哪里开始谈起。 今天和另外一个大佬聊天&#xff0c;他告诉我&#xff0c;就是要背面试题&#xff0c;背面试题是一种有效的学习方…

如何把iPhone照片导入电脑?图文教学,1分钟教你快速导入

​在日常生活中&#xff0c;我们经常会用iPhone拍摄照片&#xff0c;但是iPhone的存储空间有限&#xff0c;随着照片的增加&#xff0c;存储空间会越来越少。因此&#xff0c;把iPhone照片导入电脑成为了很多人需要解决的问题。那么&#xff0c;如何把iPhone照片导入电脑呢&…

Linux上安装配置ZooKeeper

Linux上安装配置ZooKeeper 下载压缩文件 将压缩文件拷贝到指定目录下 执行命令 tar -zxvf [apache-zookeeper-3.5.7-bin.tar.gz] -C [/opt/module/]注&#xff1a;第一个括号里面是压缩文件名称&#xff0c;第二个括号里面是解压到指定的目录 进入到解压后的文件夹当中&am…

KDHG-A变频互感器综合测试仪

一、概述 KDHG-A电流互感器现场综合测试仪是一种专门为测试互感器&#xff1a;伏安特性、变比、极性、误差曲线、计算拐点和二次侧回路检查等设计的多功能现场试验仪器。 二、主要特点 1&#xff0e;单机220V输入时最大电压输出0-2500V&#xff0c;单机最大电流输出0-1000A&am…

我的同事用PicSo AI这款绘画软件,连夜生成了100个“女朋友”

最近的AI绘画实在是太火爆了&#xff01; 有人用它来生成商业插画&#xff0c;有人用它来测试AI的智商&#xff0c;有人用它来为小说生成配图&#xff0c;有人在它的作品中寻找灵感… 而我的同事&#xff0c;用AI软件给自己画了将近100个漂亮的女朋友&#xff01; 而这款令…

美颜SDK关键技术讲解——人脸识别与人脸美化

拍摄&#xff0c;自从智能手机普及之后就已经不再是小众爱好&#xff0c;使用手机拍摄记录生活几乎成了人们的日常。在巨量的需求下&#xff0c;美颜工具、美颜SDK已经被广泛应用于各大视频拍摄平台。虽然经常听到美颜SDK&#xff0c;但是大多数人并不了解它&#xff0c;下文小…

【量化交易笔记】4.移动平均值的实现

上一讲已经讲A股的数据下载到本地或保存数据库&#xff0c;我们可以随时使用。 移动平均MA(Moving Average) &#xff0c;是用统计分析的方法&#xff0c;将一定时期内的证券价格&#xff08;指数&#xff09;加以平均&#xff0c;并把不同时间的平均值连接起来&#xff0c;形成…

Git 分支管理常用指令

不同分支有着自己的工作区和本地仓库&#xff0c;相互之间看不到&#xff0c;也影响不到&#xff0c;只有在合并分支的时候&#xff0c;才会将某一个分支做出的修改更新到另一个分支上。 目录 1、git branch&#xff08;分支查看、创建、删除&#xff09; (1) 查看分支 (2) …

园区网双出口问题解决方案

园区网双出口拓扑图公司向运营商租⽤两条带宽&#xff0c;ISP1为100M&#xff0c;ISP2为50M&#xff0c;默认情况下园区⽤户访问Internet优先⾛ISP1链路&#xff0c;请提供解决⽅案。解决方案1&#xff1a;接入路由为静态时解决方案2&#xff1a;当接入为动态路由时解决方案3&a…