基于区块链Hyperledger FabricV2.5的农产品溯源/商品/通用溯源应用系统模板

本项目提供基于Hyperledger Fabric V2.5的农产品/商品溯源应用模板,包含详细文档和视频教程。采用技术栈:Fabric、Gin、Vue.js、Mysql。具备区块链浏览器和压测工具,适合快速搭建溯源系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目演示站点: http://t.realcool.top/

一、项目介绍

基于区块链Hyperledger Fabric V2.5的农产品溯源/商品/通用溯源应用模板,部署简单,附压测工具tape、区块链浏览器,文档详细。可以快速使用本系统搭建自己的溯源系统,帮助想法快速落地。采用的技术栈:Fabric V2.5、Gin、Vue.js、Mysql。

项目系统架构图
多类型用户注册
农产品上链
农产品溯源
区块链浏览器可视化

项目地址:

Github:
https://github.com/TrueTechLabs/fabric-trace

Gitee:
https://gitee.com/real__cool/fabric-trace

搭建视频地址:

https://www.bilibili.com/video/BV1Ar421H7TK

附完整一刀未剪的搭建视频:

演示使用临时服务器,建议使按年付费价格划算一些,具体购买方式参见下方搭建步骤。
https://www.bilibili.com/video/BV1mF4m1P7Go

项目文档地址(部分内容需要订阅专栏):

https://blog.csdn.net/qq_41575489/category_12075943.html

二、版权声明

本项目基于Apache License 2.0开源协议,在个人的科研、学习范围内可以自由使用,请附上项目链接。如有商业需求或合作需求,请填写收集表:【腾讯文档】本项目搭建服务或商务合作意向收集
。如果您不同意本声明请不要使用本项目。

三、项目特点

本项目采用Hyperledger Fabric V2.5,属于目前最新的Fabric版本,具有更好的性能和稳定性,调用链码使用fabric-gateway模式,是当前版本的推荐方式。内置了tape压测工具,可以方便的对区块链网络进行压测;内置了区块链浏览器,可以方便地查询交易信息。
项目结构清晰,代码注释详细,方便二次开发。结合了mysql实现账户注册登录功能,更符合真实业务场景。

四、项目背景

区块链技术的出现,为溯源系统的建设提供了新的思路。区块链技术的不可篡改性、去中心化、可追溯等特点,使得区块链技术成为溯源系统的理想选择。本项目基于Hyperledger Fabric V2.5,实现了一个农产品溯源系统。 在本区块链系统中,有5个内置的角色:种植户、工厂、驾驶员、商店、消费者。其中种植户、工厂、驾驶员、商店可以将信息上链,消费者有信息溯源权限。上述可以上链信息的角色各可以输入5个农产品的属性,方便二次开发。本项目的目标是作为Fabric V2.5下的一个通用溯源模板。

五、搭建步骤

如果部分内容与视频不一致请以本文档为准

强烈推荐按照步骤使用云服务器搭建本系统,虚拟机的问题较多。点击此链接直达新人活动页面:https://curl.qcloud.com/Sjy0zKjy 点击首单特惠,购买2核4G或以上的服务器,199/年(价格经常会调整),如果后续准备做程序开发可以用新用户优惠买三年的,安装Ubuntu20.04系统。

严格按照以下步骤操作,以下步骤已经经过上百人次的验证,如果遇到报错请仔细检查是否遗漏某个步骤:

  1. 安装docker

    #下载docker 
    # 官方脚本当前已无法下载,使用gitee备份的脚本:
    curl -fsSL https://gitee.com/real__cool/fabric_install/raw/main/docker_install.sh | bash -s docker --mirror Aliyun
    #添加当前用户到docker用户组 
    sudo usermod -aG docker $USER 
    newgrp docker 
    sudo mkdir -p /etc/docker
    #配置docker镜像加速,近期非常不稳定,如果以下源不好用可以再找下其他源
    #下边的源2024.8.29日测试可用
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
        "registry-mirrors": [
            "https://docker.m.daocloud.io",
            "https://docker.1panel.live",
            "https://hub.rat.dev"
        ]
    }
    EOF
    
    #重启docker 
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  2. 安装开发使用的go、node、jq

    #下载二进制包
    wget https://golang.google.cn/dl/go1.19.linux-amd64.tar.gz
    #将下载的二进制包解压至 /usr/local目录
    sudo tar -C /usr/local -xzf go1.19.linux-amd64.tar.gz
    mkdir $HOME/go
    #将以下内容添加至环境变量 ~/.bashrc
    export GOPATH=$HOME/go
    export GOROOT=/usr/local/go
    export PATH=$GOROOT/bin:$PATH
    export PATH=$GOPATH/bin:$PATH
    #更新环境变量
    source  ~/.bashrc 
    #设置代理
    go env -w GO111MODULE=on
    go env -w GOPROXY=https://goproxy.cn,direct
    
    #下载nvm安装脚本
    wget https://gitee.com/real__cool/fabric_install/raw/main/nvminstall.sh
    #安装nvm;屏幕输出内容添加环境变量
    chmod +x nvminstall.sh
    ./nvminstall.sh
    # 将环境变量写入.bashrc
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
    export NVM_NODEJS_ORG_MIRROR=http://npmmirror.com/mirrors/node/ #更换阿里云nvm node源
    
    # 更新环境变量
    source  ~/.bashrc
    # 安装node16
    nvm install 16
    #换源
    npm config set registry https://registry.npmmirror.com
    
    #安装jq 
    sudo apt install jq
    
  3. 克隆本项目

    git clone https://gitee.com/real__cool/fabric-trace
    
  4. 启动区块链部分。在fabric-trace/blockchain/network目录下:

    # 仅在首次使用执行:下载Fabric Docker镜像。如果拉取速度过慢或失败请检查是否完成docker换源,或者更换一个其他的镜像源再试。
    ./install-fabric.sh -f 2.5.6 d 
    
    # 启动区块链网络
    ./start.sh
    

    如果在启动区块链网络时遇到报错可以尝试:

    # 执行清理所有的容器指令:
    docker rm -f $(docker ps -aq)
    

    然后再重新启动区块链网络

  5. 启动后端 在fabric-trace/application/backend目录下: 执行: go run main.go

  6. 修改后端IP,将以下文件中的IP:119.45.247.29,换成自己云服务器的IP。

    fabric-trace/application/web/.env.production
    fabric-trace/application/web/.env.development
    fabric-trace/application/web/src/router/index.js
    

    或使用application/replaceip.sh脚本根据指引修改IP,在fabric-trace/application目录下

    ./replaceip.sh
    
  7. 新开一个窗口,启动前端 在fabric-trace/application/web目录下: 执行:

    # 仅在首次运行执行:安装依赖
    npm install 
    
    # 启动前端
    npm run dev
    
  8. 在腾讯云轻量应用服务器防火墙页面,放行TCP端口8080,9090,9528
    防火墙配置

  9. 在浏览器中打开:http://云服务器IP:9528 即可看到前端页面。

  10. 使用tape对项目进行压力测试
    根据blockchain/chaincode/chaincode/smartcontract.go中的合约函数的签名,编写压测的参数,需要修改的内容是tape目录下的yaml文件中的args。args第一个参数是函数名,后面的参数是函数的参数。例如:

    args:
    # 函数名
    - RegisterUser
    # userID string
    - 1
    #userType string
    - randomString8
    # realInfoHash string
    - randomString8
    

执行./tape --config config_register.yaml -n 1即可完成用户1的注册,然后可以对农产品上链操作与获取用户信息函数进行压测。更多的压测案例可以根据合约函数的签名进行修改。
附农产品上链操作与获取用户信息函数进行压测操作指令:

./tape --config config_invoke.yaml -n 100
./tape --config config_query.yaml -n 100
六、关闭项目与重新运行步骤
关闭项目:
  1. 前端(npm run dev界面)与后端(go run main.go界面:

    使用键盘组合键:ctrl+c

  2. 区块链部分:

    fabric-trace/blockchain/network目录./stop.sh,此步骤会清理所有的区块链、Mysql中的数据。

开发模式启动项目:
  1. fabric-trace/blockchain/network目录
    ./start.sh 如果遇到报错可以执行以下命令后再试:
    执行清理所有的容器指令:
    docker rm -f $(docker ps -aq)
  2. fabric-trace/application/backend目录下: 执行: go run main.go
  3. fabric-trace/application/web目录下: 执行:
    npm run dev
  4. 在http://服务器IP:9528打开
生产环境部署项目(后台运行,访问速度更快)
  1. fabric-trace/blockchain/network目录
    ./start.sh 如果遇到报错可以执行以下命令后再试:
    执行清理所有的容器指令:
    docker rm -f $(docker ps -aq)

  2. fabric-trace/application目录下: 执行: ./start.sh

  3. 在http://服务器IP:9090打开

    注意:此方式部署项目会在后台运行,如果后续遇到端口号占用可以尝试关闭占用9090端口号的进程,可以参考:
    解决端口占用 bind:address already in use

七、本项目相关的后续计划:
  1. 本项目目前不够完美,将持续维护,欢迎给项目点亮Star与B站三连,非常感谢!与B站官方合作,本项目代码讲解与二次开发课程已发布,支持试看: B站:Fabric V2.5通用溯源项目讲解与二次开发课程,购买课程将赠送《Fabric项目学习笔记》中所有与本项目相关的资料。购买课程与订阅专栏均配套社群,方便交流与答疑。
  2. 支持Docker方式部署,简化部署步骤
  3. 改善农产品信息上链过程,需要按照角色顺序上链
八、特别提示:
  1. 区块链浏览器有时候会出现无法访问的情况,可以尝试重启浏览器容器。
  2. 为了减少用户运行本项目时的难度,区块链目录的start.sh脚本在启动区块链时同时会清理掉所有的历史数据!如果重启机器后不希望清理原来的数据启动区块链,可以使用指令:docker start $(docker ps -aq)启动所有节点
常见问题总结(检查第一个报错的位置)

上述部署步骤已经上百人次验证并顺利完成,如果您通过上述步骤未能运行项目,请检查环境是否与本项目要求的一致,任何修改或遗漏步骤都可能引起项目不能正常运行,请严格按照视频与文章步骤再次尝试或查看以下常见问题列表。若还是有问题请在B站项目搭建视频评论区查看其他人的留言是否有相同的问题,如果还是没有解决请在视频下评论问题并附上与【安装步骤不一致的地方】或【第一个遇到的报错】,如果问题不够明确,我们也很难帮助到您。购买B站:Fabric V2.5通用溯源项目讲解与二次开发课程或订阅《Fabric项目学习笔记》可以加入配套社群,方便本项目交流与答疑。

  1. 需要给机器安装mysql吗?
    按照项目搭建过程即可部署好mysql,mysql容器与区块链节点一起启动,因此不需要单独安装mysql。

  2. fabric镜像拉取过慢或提示timeout
    一般是你的网络原因,或者是镜像源网络原因,可以尝试docker换源再试。

  3. 安装链码时报错:exec: “go”: executable file not found in $PATH
    可能是go环境变量未安装好;可能使用了sudo,不要与安装步骤不一致

  4. jq:未找到命令
    漏掉安装步骤中的安装jq,使用sudo apt install jq即可解决

  5. docker权限报错:docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:
    重新执行安装步骤中的:

    #添加当前用户到docker用户组 
    sudo usermod -aG docker $USER 
    newgrp docker 
    
  6. 提示mysql或3337端口错误
    重启区块链网络部分

  7. 前端提示network error、timeout
    检查是否修改好IP;检查防火墙是否开通相关端口;检查后端是否允许;重启前端服务器

  8. 前端登录页面提示404
    检查是否修改好IP,除了IP不要修改任何字符。

  9. npm run dev 不能启动前端
    检查npm install是否完整把所有包装上了

【资源说明】 Java基于区块链技术的农产品溯源平台系统完整源码+论文(可作毕设或课设).tarJava基于区块链技术的农产品溯源平台系统完整源码+论文(可作毕设或课设).tarJava基于区块链技术的农产品溯源平台系统完整源码+论文(可作毕设或课设).tarJava基于区块链技术的农产品溯源平台系统完整源码+论文(可作毕设或课设).tarJava基于区块链技术的农产品溯源平台系统完整源码+论文(可作毕设或课设).tarJava基于区块链技术的农产品溯源平台系统完整源码+论文(可作毕设或课设).tarJava基于区块链技术的农产品溯源平台系统完整源码+论文(可作毕设或课设).tar Java基于区块链技术的农产品溯源平台系统完整源码+论文(可作毕设或课设).tar Java基于区块链技术的农产品溯源平台系统完整源码+论文(可作毕设或课设).tar 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TrueTechLabs

创作不易!感谢打赏!

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

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

打赏作者

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

抵扣说明:

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

余额充值