Giter Site home page Giter Site logo

academic-degree-blockchain's Introduction

基于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:区块链浏览器文件及配置

项目功能介绍:https://blog.csdn.net/qq_45808700/article/details/129423030

Hyperledger Fabric实践文档:https://learnblockchain.cn/books/enterprise/chapter4_00.html

1.部署环境

•Linux Ubuntu(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://golang.google.cn/dl/go1.17.linux-amd64.tar.gz 下载受网络环境影响,如果您本地有相应的 tar 包,则直接解压到指定的路径下即可。
  2. 使用 tar 命令将压缩文件解压至指定路径/usr/local/下: tar -zxvf go1.17.0.linux-amd64.tar.gz -C /usr/local
  3. sudo -s使当前用户为 root 用户,$HOME=/root
  4. sudo vim /etc/hosts,添加:
127.0.0.1  orderer.example.com
127.0.0.1  peer0.org1.example.com
127.0.0.1  peer1.org1.example.com
  1. sudo vim /root/.bashrc文件,添加环境变量 GOHOME 以及 GOROOT:
export GOPATH=/root/go
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
  1. 激活环境变量: source /etc/profile
  2. 更新网络:service network-manager restart
  3. 验证安装成功,使用 go version 结果如图所示:

Golang 安装成功

3.项目部署

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

4.启动项目

由于每次启动流程相对固定,首先进入root用户,并配置环境,然后启动项目在项目的目录下运行 clean_docker.sh 脚本即可启动项目:

sudo -s
source /root/.bashrc
cd $GOPATH/src/education
export GO111MODULE=on
export GOPROXY=https://goproxy.io
go mod tidy
./clean_docker.sh

5.启动区块链浏览器

再开一个终端,按以下步骤启动Fabric浏览器(在启动Web项目之后,才能启动区块链浏览器)

sudo -s
source /root/.bashrc
cd $GOPATH/src/education/explorer
docker-compose -f docker-compose.yaml up -d

使用docker-compose down -v关闭浏览器,Ctrl + C 停止Web服务

6.项目结果:

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

启动项目成功

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

: 启动项目成功

通过浏览器访问localhost:8080即可进入 区块链浏览器,结果如图所示: image

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

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

在这里插入图片描述

管理员账号:admin 123456

普通用户账号密码:bob 123456

浏览器账号密码:exploreradmin exploreradminpw

有帮助的话希望点亮star收藏一下,如果部署有困难可以加qq2097731053

7 .关闭项目

Ctrl + C 停止Web服务,然后使用如下命令清空:

make clean

8 .常见部署问题

image

上图的问题是网络问题,可以在宿主机下载好go安装包,然后放入虚拟机中解压

image

若出现上图的问题,说明你的go语言版本过高,可以换为go1.17

academic-degree-blockchain's People

Contributors

pistachiout avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

juilostthee

academic-degree-blockchain's Issues

启动失败

Create channel and join error: Create channel error: error should be nil for SaveChannel of orgchannel: create channel failed: create channel failed: SendEnvelope failed: calling orderer 'orderer.example.com:7050' failed: Orderer Server Status Code: (400) BAD_REQUEST. Description: error applying config update to existing channel 'mychannel': error authorizing update: error validating ReadSet: proposed update requires that key [Group] /Channel/Application be at version 0, but it is currently at version 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.