上海网站seo公司,上海工信部网站备案,有没有专门帮人做图的网站,邮件格式模板基于Hyperledger Fabric的学位学历认证管理系统
项目源码#xff1a;https://github.com/Pistachiout/Academic-Degree-BlockChain
一、选题背景
学历造假、认证造假等是一个全球日益普遍的现象#xff0c;不仅对社会产生了巨大的负面影响#xff0c;同时也极大增加了企业…基于Hyperledger Fabric的学位学历认证管理系统
项目源码https://github.com/Pistachiout/Academic-Degree-BlockChain
一、选题背景
学历造假、认证造假等是一个全球日益普遍的现象不仅对社会产生了巨大的负面影响同时也极大增加了企业和单位的用人成本造成了无谓的经济消耗从另一个角度来说纸质或电子版的证书无论从保存便利性、验证可靠性、可信性等方面都存在着很大的不足。一种高度可靠、易保存、易证伪同时还顾全隐私保护的学位学历认证管理系统是一个必然的需求。 区块链是非中心化信任网络适合作为此类分布式应用的底层架构和基础工具。区块链具有两大核心特点一是数据难以篡改、二是去中心化。区块链所记录的信息更加真实可靠可以帮助解决人们互不信任的问题。
二、功能分析
由于系统需要保证人才受教育情况真实性所以对于系统的用户而言不可能由用户自己添加相应的学历信息而是由具有一定权限的用户来完成添加或修改的功能。但普通用户可以通过系统溯源功能来确定信息的真伪。所以我们将系统用户的使用角色分为两种
普通用户管理员用户
普通用户具有对数据的查询功能 但实现查询之前必须经过登录认证
用户登录系统只针对合法用户进行授权使用所以用户必须先进行登录才能完成相应的功能。查询实现查询分为两种方式实现 根据证书编号与姓名查询根据用户输入的证书编号与姓名进行查询。根据身份证号码查询根据用户输入指定的身份证号码进行查询此功能可以实现溯源。
管理员用户除具有普通用户的功能之外额外添加了两个功能
添加信息可以向系统中添加新的学历信息。修改信息针对已存在的学历信息进行修改。
最后需要达到的要求
认证颁发时的数据生成和上链流程认证验证时的验证方法核实电子证书文件的哈希值用户界面证书生成、证书上链、证书查询、证书核验安全和隐私保护。
三、架构设计
在此应用中需要编写实现完整的链码并通过业务层调用链码中的各个函数以实现对数据状态的操作。界面为了方便用户操作使用使用Web浏览器的方式实现。而且在此应用中我们将 Hyperledger Fabric 默认的状态数据库由 LevelDB 替换为 CouchDB 来实现 Fabric Network 结构包括几个组件如 CA、MSP、Orderer 等 如下图所示
CA 代表证书颁发机构。它负责颁发和管理数字证书用于识别 Fabric Network 中的参与者 。MSP 代表成员服务提供商。它定义了验证网络参与者身份和角色的规则和策略 。Orderer 是一个节点它将交易排序成区块并将它们发送给对等节点 。Org1 是属于 Fabric Network 的一个组织的例子。它可以有自己的 CA、MSP、策略和通道 。Peer0 和 Peer1 是属于 Org1 的两个节点。它们存储账本的副本并执行链码智能合约。
四、数据模型设计
由于需要向分类账本中保存数据所以必须设计相关的结构体用于声明要保存的数据结构用于方便的在应用中处理数据。
名称数据类型说明ObjectTypestringNamestring姓名Genderstring性别Nationstring民族EntityIDstring身份证号记录的KeyPlacestring籍贯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?i8znNXlpR9WgEyOBdMfiGC6qsWuq2qnKAa_mCCcF
六、链码API操作 七、数据存储
链上数据是直接或者间接由区块链共识产生的数据一般包括区块链节点数据与智能合约代码等
区块链节点数据包括区块数据和状态数据两者 1.区块数据描述区块自身信息数据实际是区块链上面发生的每一笔交易的记录如添加学历信息修改学历信息及对应的时间戳 2.状态数据则是记录了每个账户和智能合约的当前状态如张三的学历信息
区块链节点的数据存储最普遍的方式就是存入我们的磁盘中间而我们的区块链不会直接的访问我们的磁盘而是通过特定的数据库如LevelIDBCouchDB等独立和分布式的数据库来操作我们的数据 本项目选用CouchDB作为存储链上数据的数据库
八、Fabric优势
1.所有上链数据基于密码学数字签名上链数据不可被第三方篡改不可抵赖。基于多参与方的共识算法防止单方面作恶修改自己链上历史数据。Fabric淡化了去中心化(Decentralized)而以分布式 (Distributed)代替每个节点具有完整全账本防止单机故障和数据丢失。.fabric采用中心化的CA机制来发放证书只有持有有效证书的节点和用户才可以访问区块链上的账本数据此外还有TLS加密通讯、通道隔离等技术保证了数据的传播范围可控防止数据被窃取。
Fabric充分利用了模块化的设计、容器技术和密码学技术使得系统具有可扩展、灵活和安全等特性。采用传统数据库或许可以实现部分区块链的功能如设计只写数据库设计访问权限共享数据库分布式协议等但这不是数据库的功能只是创造出一个另一种形势的“区块链”传统数据库无法达到区块链的分布式和信任。
十、功能演示
http://ip:9000/ 输入管理员账号及密码登录验证成功则进入系统首页面 在首页面中点击 查询范围链接进入 help页面 点击添加学历信息链接进入添加学历信息页面
根据学历证书编号与姓名查询页面 根据身份证号码查询页面
根据身份证号码查询页面查询结果页面
编辑页面
编辑成功自动跳转到根据身份证号码查询结果页面
十一、Hyperledger explorer——Fabric浏览器
http://ip:8080/ Hyperledger Explorer是一个简单易用的开源工具可以用于监视 区块链网络中的活动。Hyperledger Explorer支持Fabric、Iroha等 多种区块链可以运行在MocOS和Ubuntu下。我们可以在这里看到链上的所有信息例如交易的时间、区块的哈希值和数据的哈希值等。 十二、分布式数据库
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-composesudo apt install docker- compose验证安装成功docker-compose version如图所示 2.2安装 golang
区块链框架Hyperledger Fabric 目前支持Java、Go 等主流编程语言并提供了相应的SDK但是支持最全面的还是 Golang因此采用 Go 语言来进行开发是比较好的选择
安装 Golang wget https://dl.google.com/go/go1.17.0.linux-amd64.tar.gz.使用 tar 命令将压缩文件解压至指定路径/usr/local/下 tar -zxvf go1.17.0.linux-amd64.tar.gz -C /usr/local最后是设置环境变量 GOHOME 以及 GOROOT sudo vim /etc/profile 添加如下当前用户为 root 用户$HOME/root
export GOPATH$HOME/go
export GOROOT/usr/local/go
export PATH$GOROOT/bin:$PATH 激活环境变量 source /etc/profile验证安装成功使用 go version 结果如图所示 3.项目部署
创建保存项目的文件夹 mkdir -p $GOPATH/src进入文件夹 cd $GOPATH/src从 github 仓库克隆项目 git clone https://github.com/bug-away-away/BlockChainCreditSystem.git进入项目目录cd education添加项目开发需要依赖的 Golang 包go mod tidy 命令可能会执行失败此时设置代理即可go env -w GOPROXYhttps://goproxy.cn
4.启动项目
由于每次启动流程相对固定因此编写脚本来自动清理 docker 然后启动项目在项目的目录下运行 clean_docker.sh 脚本即可启动项目
./clean_docker.sh项目启动成功的结果如图所示 通过浏览器访问 9000 端口即可进入 web 端结果如图所示
:
十五、总结
基于区块链的学历学位认证系统是一个利用区块链技术来防止学历造假的项目。该项目使用了go语言和Hyperledger Fabric超级账本框架实现了以下功能
增加学历用户可以通过智能合约向区块链系统中添加自己的学历信息。修改学历用户可以通过智能合约修改自己在区块链系统中的学历信息但是修改后的信息会留下痕迹方 便追溯。查询学历用户可以通过智能合约查询自己或者其他用户在区块链系统中的学历信息验证其真伪。
该项目有以下优点和创新点
使用了Fabric与Couchdb数据库实现了分布式数据库与不可篡改性。Fabric是一个支持多种共识机制和智能合约语言的企业级区块链平台Couchdb是一个面向文档的数据库可以存储复杂结构化数据并支持富查询功能。Fabric账本是有序的、不可篡改的状态转换记录包括区块链和世界状态两部分。区块链中保存着不可变的顺序记录包含配置记录和交易记录。世界状态中维护账本的当前状态方便应用快速查询。使用了HyperledgerExplorer实现了对区块链网络和数据的可视化监控。Explorer是一个基于web的应用程序可以展示区块链网络中的节点、通道、交易、合约等信息并提供图表和统计分析功能。用户可以通过浏览器查看网络中的信息包括网络拓扑、区块信息、链码信息等等。
该项目遇到了以下困难和挑战
Fabric框架涉及多个组件和配置文件需要花费较多时间来理解和搭建。Couchdb数据库需要创建索引来优化查询性能并且需要考虑数据同步和一致性问题。Explorer应用程序需要与Fabric网络进行集成并且需要适配不同版本和配置。
该项目有以下不足和改进空间
学历信息只能由用户自己添加和修改没有第三方机构来审核和认证。学历信息没有加密处理可能存在隐私泄露风险。Explorer应用程序没有提供用户认证和权限控制功能。
通过参加这个项目实训我不仅学习了go语言和Fabric框架还深入了解了区块链技术的原理和应用。我感受到了区块链技术在学历认证领域的优势和潜力也体会到了开发区块链应用的难度和挑战。这个项目让我收获了很多知识和经验也激发了我对区块链技术的兴趣和热情。