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

本项目所有相关文档包括区块链设计、后端设计、前端设计、结合IPFS改进以及简易的二次开发步骤收录于:《Fabric项目学习笔记》,当前本项目文档已全部发布。

购买专栏前请认真阅读:《Fabric项目学习笔记》专栏介绍

本项目的代码讲解与二次开发课程已发布:B站:Fabric V2.5通用溯源项目讲解与二次开发,购买课程将赠送《Fabric 项目学习笔记》中的本项目相关的所有文章与源码。

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

与B站官方合作,本项目代码讲解与二次开发课程已发布,支持试看: B站:Fabric V2.5通用溯源项目讲解与二次开发课程

Fabric V2.5通用溯源课程活动:腾讯文档:提交源码仓库地址/PPT/视频获得返现50-300元

欢迎加入TrueTechLabs Fabric学习交流QQ群:776873343,群内可免费阅读此项目的区块链部分、应用后端部分的代码说明文档。项目二次开发以及添加IPFS上传文件功能等文档收录在专栏:《Fabric项目学习笔记》。

TrueTechLabs Fabric学习交流QQ群:776873343

一、项目介绍

基于区块链Hyperledger Fabric V2.5 的农产品/商品等的通用溯源系统,部署简单,附压测工具tape、区块链浏览器,文档详细。可以快速使用本系统搭建自己的溯源系统,帮助想法快速落地。
项目演示站点:http://realcool.top:9090/
多类型用户注册

农产品上链
农产品溯源
区块链浏览器可视化

项目地址:

Github:
https://github.com/TrueTechLabs/fabric-trace
Gitee:
https://gitee.com/real__cool/fabric-trace

搭建视频地址:

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

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

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或以上的服务器,218/年(价格经常会调整),如果后续准备做程序开发可以用新用户优惠买三年的,安装Ubuntu20.04系统。

严格按照以下步骤操作:

  1. 安装docker

    #下载docker 
    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 
    #添加当前用户到docker用户组 
    sudo usermod -aG docker $USER 
    newgrp docker 
    #配置docker镜像加速
    sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'
    {"registry-mirrors": ["https://punulfd2.mirror.aliyuncs.com"]
    }
    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
    # 更新环境变量
    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镜像
    ./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.development
    fabric-trace/application/web/src/router/index.js
    
  7. 新开一个窗口,启动前端 在fabric-trace/application/web目录下: 执行:

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

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

  10. 关闭项目步骤
    前后端使用ctrl+c指令即可关闭,区块链部分在network目录下使用./stop.sh脚本关闭,如果不正确关闭可能会影响下一次启动,处理方案是使用命令关闭相关进程。

  11. 使用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. 本项目将持续维护,欢迎给项目点亮Star与B站三连,非常感谢!本项目的区块链部分、前后端的说明文档以及简易的二次开发流程已在《Fabric项目学习笔记 》专栏发布,欢迎订阅支持!
  2. (付费)本系统的讲解课程(约90分钟)已发布:B站:Fabric V2.5通用溯源项目讲解与二次开发
  3. 支持Docker方式部署,简化部署步骤
七、目前已知存在的问题:
  1. 由于网络原因,区块链浏览器镜像拉取较慢,因为不是Docker官方的仓库,需要耐心等待。
  2. 区块链浏览器有时候会出现无法访问的情况,可以尝试重启浏览器容器。
如果不能按照步骤运行项目

上述部署步骤已经多人验证并顺利完成,如果您通过上述步骤未能运行项目,请检查环境是否与本项目要求的一致,任何修改或遗漏步骤都可能引起项目不能正常运行,请严格按照视频与文章步骤再次尝试。若还是有问题请在文章评论区留言,附上第一次遇到的报错,如果问题不够明确,我们也很难帮助到您。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 左右折叠显示与隐藏UI的简单实现

要实现一个简单的UI左右折叠显示与隐藏&#xff0c;可以结合遮罩&#xff0c;通过代码控制UI区块的宽度和位移来实现。 具体可以按以下步骤实现&#xff1a; 1、新建一个Image组件&#xff0c;并添加精灵&#xff0c;调整大小后&#xff0c;复制一份作为该UI的父物体&#xf…

光纤不够用怎么办?使用DWDM波分进行低成本扩容光纤容量

光通信行业一直有CWDM/DWDM/LWDM&#xff0c;波分复用&#xff08;WDM&#xff09;是一种光纤传输技术&#xff0c;可以使用多种光波长&#xff08;或颜色&#xff09;在同一介质上发送数据。两个或多个波长可以在一根光纤上传播&#xff0c;并且可以在光波导中以不同的波长或光…

阿赵UE学习笔记——28、粒子系统Niagara简介

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的使用。这次开始学习粒子系统的使用。 一、Cascade系统 在介绍UE5的Niagara系统之前&#xff0c;必须先介绍一下旧版本的粒子系统。   在UE4的时候&#xff0c;虚幻引擎的粒子系统叫做Cascade&#x…

大数据平台搭建2024(一)

一&#xff1a;基础配置 创建虚拟机并查出ip地址进行连接 ip a1.配置node01静态ip地址与主机名 vi /etc/sysconfig/network-scripts/ifcfg-ens33修改或添加如下内容&#xff1a; BOOTPROTO"static" ONBOOTyes #根据虚拟机网卡信息配置 IPADDR192.168.200.141 NET…

Sonatype Nexus 的使用参数

在最近安装的 Sonatype Nexus 版本中提供了一个使用参数情况界面。 这个使用情况的界面主要是针对当前 Sonatype Nexus 的安装实例出现的系统接入和调用情况。 上面提供了一个限制&#xff0c;这个限制不是说达到了限制后拒绝提供服务了&#xff0c;而是因为在默认的 Sonatype…

强化学习(三)基于动态规划 Dynamic Programming 的求解方法

文章目录 1. 动态规划与强化学习的联系2. 利用动态规划求解最优价值函数2.1 案例背景2.2 策略评估&#xff08;预测&#xff09;2.3 策略迭代&#xff08;控制&#xff09; 在前文《强化学习的数学框架&#xff1a;马尔科夫决策过程 MDP》中&#xff0c;我们用马尔可夫过程抽象…

Android JetPack Compose+Room----实现搜索记录功能

文章目录 需求概述功能展示实现搜索功能使用的技术1.Android Jetpack room2.Android JetPack Compose 代码实现编写搜索界面接入Room实现搜索功能的管理引入依赖定义包结构定义操作表的Dao类定义数据库的基础配置定义数据库的Dao管理类使用数据库升级 源码地址 需求概述 搜索功…

Mac搭建Java环境【环境搭建】

Mac搭建Java环境【环境搭建】 1 安装Java SDK 官网地址&#xff1a;https://www.oracle.com/java/technologies/downloads/archive/ 下载dmg&#xff0c;双击之后无脑安装即可。 # 进入 JDK 安装目录 cd /Library/Java/JavaVirtualMachines# 查看文件 ls# 输入 cd ~# 打开环…

基于CNN的棉花不同病害叶识别(Python代码,pytorch框架,代码有详细中文注释,准确率在90%以上)

1.效果视频&#xff08;训练过程&#xff1a;基于CNN模型的棉花不同病害叶识别&#xff08;Python代码&#xff0c;pytorch框架&#xff09;_哔哩哔哩_bilibili&#xff08;为减小视频时长&#xff0c;epoch为30&#xff0c;准确率在85%左右&#xff0c;epoch为60后&#xff0c…

goland2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 Goland 是一款由 JetBrains 公司开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于 Go 语言的开发。它提供了丰富的功能和工具&#xff0c;帮助开发者更高效地编写、调试和管理 Go 语言项目。 功能特点&#x…

李沐-动手学深度学习-Pytorch神经网络基础总结

注&#xff1a;1. 沐神对应章节视频出处 2.代码使用Jupyter Notebook运行更方便 3.文章笔记出处 一、层和块 层&#xff1a;层&#xff08;1&#xff09;接受一组输入&#xff0c; &#xff08;2&#xff09;生成相应的输出&#xff0c; &#xff08;3&#xff09;由一组可调整…

基于变压器的手持式超声图像中乳腺病变的分类不一致性测量表征

超声成像作为一种替代的低成本、易于获取的非电离成像方式已显示出巨大的前景&#xff0c;可用于乳腺癌筛查。特别是&#xff0c;随着最近便携式设备的出现&#xff0c;超声检查预计将在中低收入国家中越来越普及。然而&#xff0c;超声成像在乳腺癌诊断中的可靠性高度依赖于操…