Blockchain-APTrace-Fabric-master农产品溯源开源项目详解

农产品溯源系统是对农产品从种植到销售的全生命周期进行跟踪的系统。基于农产品溯源数据对相关人员进行追责是保障农产品食品质量安全的重要手段。目前,许多地区已经使用信息系统实现了农产品的溯源跟踪,但相关数据易篡改,溯源信息难可信,事故责任难落实。溯源系统的信用危机严重影响了优质企业的发展。

区块链作为一种去中心化的数据存储技术,其维护的数据具备公开透明、不可篡改等特性。利用区块链技术为相关企业建立信任中心,可以有效地解决农产品溯源系统不安全不可信的问题。

本文总结区块链和溯源技术的发展现状,分析农产品溯源的需求特点,基于Hyperledger Fabric构架 [1],设计一种改进的联盟区块链农产品溯源方案。方案的实施可以进一步巩固相关企业在农产品产销领域的领先地位,对提升全社会农产品安全具有重要意义。

拉取开源项目:blockchain-fabric-trace: 基于区块链(fabric)农产品溯源平台 (gitee.com)

blockchain-fabric-trace: 基于区块链(fabric)农产品溯源平台

1.确保环境配置好 
安装node.js 12

注意:node.js尽量用12,如果不想用12也可以使用14,然后安装npm,注意npm一定要用6版本

安装npm6

Ubuntu/Centos中安装最新版node12.*.*版本和npm6.*版本并设置国内镜像

安装g++

yum install gcc gcc-c++ 

安装docker和docker-compose

(注意要先安装mysql在安装redis,这个redis版本是5.0.7如果需要安装其他版本自己百度)

安装fastDFS

 安装go语言

2.拉取docker镜像 
pull

docker pull hyperledger/fabric-peer:1.2.0 && 
docker pull hyperledger/fabric-orderer:1.2.0 && 
docker pull hyperledger/fabric-ca:1.2.0 && 
docker pull hyperledger/fabric-tools:1.2.0 && 
docker pull hyperledger/fabric-ccenv:1.2.0 && 
docker pull hyperledger/fabric-baseimage:0.4.10 && 
docker pull hyperledger/fabric-baseos:0.4.10 && 
docker pull hyperledger/fabric-couchdb:0.4.10

tag

docker tag hyperledger/fabric-peer:1.2.0 hyperledger/fabric-peer && 
docker tag hyperledger/fabric-orderer:1.2.0 hyperledger/fabric-orderer && 
docker tag hyperledger/fabric-ca:1.2.0 hyperledger/fabric-ca && 
docker tag hyperledger/fabric-tools:1.2.0 hyperledger/fabric-tools && 
docker tag hyperledger/fabric-ccenv:1.2.0 hyperledger/fabric-ccenv && 
docker tag hyperledger/fabric-baseimage:0.4.10  hyperledger/fabric-baseimage && 
docker tag hyperledger/fabric-baseos:0.4.10 hyperledger/fabric-baseos && 
docker tag hyperledger/fabric-couchdb:0.4.10 hyperledger/fabric-couchdb 

这一步按照步骤执行,正常不会出错(出错先看docker是否装好)

3.上传代码到linux服务器/或者直接git拉取


直接从idea中把文件blockchain-trace-bcnetwork拖拽的linux上的随机目录下

4.运行basic_network目录下的start.sh文件 


chmod -R 777 start.sh

./start.sh

到这一步,首先进入要求的目录下,更改start.sh文件的格式(因为是直接从windows上拖过来的,要更改start.sh的格式 )

方法一进入文件内部 vim start.sh     更改格式(esc) :set ff=unix+回车   查看格式:set ff+回车 然后wq!保存文件格式
方法二简单粗暴点直接点开start.sh文件

 点击小企鹅按钮,然后ctrl+s保存(会弹出一下按钮)直接点击 是的,全部(完成格式修改)

 完成更改格式的步骤后,按照要求赋予权限,运行./start文件

(然后大概率会出错,非常正常第一次执行错误码是7051)解决方法:

docker-compose -f docker-compose.yml down
docker volume rm $(docker volume list -q)

有可能有一行执行不成功,只要执行就可以了。

这段代码可以解决这个问题。(然后会出现下一个错误)

版本错误,这个错误也是正常的错误

(注意以下三步都已执行,这个错误是会叠加的具体理解为7051+版本错误)

 第一步:先要进入配置文件etc/resolv.conf 然后把前两行注释掉

 第二步:清除通道(解决版本问题)

docker-compose -f docker-compose-cli.yaml down --volumes --remove-orphans
docker rm -f $(docker ps -a | grep "hyperledger/*" | awk "{print \$1}")
docker volume prune

有可能有一行执行不成功,只要执行就可以了。注意:最后一行要删除成功

第三步:解决7051问题

docker-compose -f docker-compose.yml down
docker volume rm $(docker volume list -q)

再次运行start.sh文件可以执行成功

5.运行webapp目录下的./start.sh 
chmod -R 777 startFarmerCC.sh  
先要更改文件格式,按照要求赋予权限

注:给webapp录下的所用后缀为.sh文件修改格式且赋予权限

注:执行结束后如果第一次执行状态码是200如果再次执行状态码为500,因为已经执行成功一次了,如果出现500的执行状态大可以忽视问题。

6.执行npm install安装依赖 


npm install 如果前面都执行成功的话,这个代码在执行过程中一般不会出错,如果出错问百度。

7.注册用户


node enrollAdmin.js

node registerUser.js

按照要求,第一次大概率出问题,删除掉key重新再试就可以了

8.启动node服务


node app.js

 启动如果node没有问题的话,不会有问题。如果有问题重装node,重新再来吧。

启动:pm2 start app.js

停止:pm2 stop app.js

可以安装pm2,一行命令解决问题:npm install pm2@latest -g

9然后按照三四正常执行,把项目起来,进入页面查看结果


 如果成功点击消费者溯源会有一下效果,前置Hash下会有内容

 如果没有也不要慌

首先,请确保你使用的地址是正确的,且对应的服务器可以正常访问。如果目标服务器可以正常访问,但你仍然遇到了连接超时错误,可能有以下原因:

网络故障导致请求没有被正确响应。你可以尝试使用其他网络进行请求。
请求被防火墙或其他网络安全设备拦截。请检查你的网络配置,确保请求被正确路由。如果需要,则需添加相应的规则或例外来允许请求通过。
请求的处理时间过长导致超时。你可以尝试调整请求的超时时间,或优化处理过程以提高响应速度。
在尝试以上解决方法后,如果问题仍然存在,你可以尝试联系服务器管理员或相关支持团队来获取更具体的帮助。

关闭防火墙,前往服务器控制台开启所有端口再次查看结果。

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

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

相关文章

HTML5网站小游戏源码系统:各种各样小游戏集合,你想要的这里都有+完整的安装代码包以及搭建教程

现如今,科技的不断发展,HTML5技术逐渐成为网页游戏开发的主流。为了满足广大游戏爱好者的需求,罗峰给大家推荐一款基于HTML5的网站小游戏源码系统。这款系统集成了众多经典小游戏,涵盖了各种类型,无论您是寻找休闲益智…

@基于大模型的旅游路线推荐方案

@基于大模型的旅游路线推荐方案 文章目录 大模型用于推荐大模型选型推荐旅游路径业务知识探索推荐实现方案准备工作数据准备通用模型准备模型微调向量数据库建设大模型用于推荐 目前将大模型应用于推荐领域的研究热度渐长。因为如下原因: 大模型可以结合文本给出有价值的排序…

0基础学习VR全景平台篇第136篇:720VR全景,认识无人机

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 无人驾驶飞行器,简称“无人机”,英文缩写为“UAV”。是利用无线电控制设备和自备程序控制操纵的不载人飞机。 (一)无人机介绍 较…

Linux 网络层收发包流程及 Netfilter 框架浅析

1. 前言 本文主要对 Linux 系统内核协议栈中网络层接收,发送以及转发数据包的流程进行简要介绍,同时对 Netfilter 数据包过滤框架的基本原理以及使用方式进行简单阐述。 内容如有理解错误而导致说明错误的地方,还请指正。如存在引用而没有添…

R语言学习入门(一)

什么是R语言 R语言是一种用于统计分析和图形表示的编程语言和环境。它由新西兰奥克兰大学的统计学家Ross Ihaka和Robert Gentleman开发,并于1993年首次发布。R语言是基于S语言的一种方言,它提供了广泛的统计和图形技术,包括线性和非线性建模…

vue的学习方法

学习Vue.js的方法如下: 先了解基本概念和语法:学习Vue.js的第一步是了解它的基本概念,例如组件、指令、数据绑定等。你可以开始阅读Vue官方文档并参考教程和示例来掌握这些基本概念和语法。 实践项目:在理解了Vue.js的基本概念和…

Shopee买家通系统助力虾皮买手号轻松获取

Shopee买家通系统可以进行虾皮买手号的全自动注册。这款先进的软件目前覆盖了菲律宾、泰国、马来西亚、越南、巴西、印度尼西亚等多个国家,为用户提供了便捷、高效的注册途径。 想要注册虾皮买家号号,首先需要准备一个支持接收短信的手机号。因为虾皮买家…

MATLAB读取图片并转换为二进制数据格式

文章目录 前言一、MATLAB 文件读取方法1、文本文件读取2、二进制文件读取3、 图像文件读取4、其他文件读取 二、常用的图像处理标准图片链接三、MATLAB读取图片并转换为二进制数据格式1、matlab 源码2、运行结果 前言 本文记录使用 MATLAB 读取图片并转换为二进制数据格式的方…

React入门 - 04(从编写一个简单的 TodoList 说起)

继上一节我们已经对 React组件和 ”JSX语法“有了大概的了解,这一节我们继续在 react-demo这个工程里编写代码。这一节我们来简单实现一个 TodoList来更加了解编写组件的一些细节。 1、在编辑器中打开 react-demo这个工程 2、打开 index.js文件,将组件 …

Spark---RDD(Key-Value类型转换算子)

文章目录 1.RDD Key-Value类型1.1 partitionBy1.2 reduceByKey1.3 groupByKeyreduceByKey和groupByKey的区别分区间和分区内 1.4 aggregateByKey获取相同key的value的平均值 1.5 foldByKey1.6 combineByKey1.7 sortByKey1.8 join1.9 leftOuterJoin1.10 cogroup 1.RDD Key-Value…

C //练习 4-4 在栈操作中添加几个命令,分别用在不弹出元素的情况下打印栈顶元素;复制栈顶元素;交换栈顶两个元素的值。另外增加一个命令用于清空栈。

C程序设计语言 (第二版) 练习 4-4 练习 4-4 在栈操作中添加几个命令,分别用在不弹出元素的情况下打印栈顶元素;复制栈顶元素;交换栈顶两个元素的值。另外增加一个命令用于清空栈。 注意:代码在win32控制台…

鸿蒙南向开发—PWM背光(OpenHarmony技术)

背光驱动模型也是基于HDF框架开发的,整个框架如下: 现在以RK3568为例,来看看PWM背光整个驱动,这里使用的是PWM占空比控制的背光,默认基于hdf的pwm驱动已经OK! 需要注意的是:这里是基于HDF实现的…

Python有优点有哪些 为什么近些年使用的人越来越多

Python是一种广泛使用的高级编程语言,以其简洁、易读和强大的功能而著称。近年来,Python使用人数不断增加。 Python有以下优点: 语法简洁 Python的语法简洁易懂,使得编写代码变得容易和高效。 跨平台 Python支持多种操作系统…

安卓Android Studioy读写NXP ICODE2 15693标签源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma1z10.5-c-s.w4002-21818769070.11.4391789eCLwm3t&id615391857885 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xm…

低轨卫星最低轨道高度及发展意义

一、天与空的区别 “空”指的是地球表面到大气层之内的高度范围&#xff0c;通过气球、飞机、飞艇等航空器可达&#xff1b;而大气层之外的空间&#xff0c;才可以称之为“天”&#xff0c;一般需要通过火箭才可到达。 1960年第53届巴塞罗那国际航空联合大会决议规定&#xf…

mysql列题

mysql列题 1.查询学过「张三」老师授课的同学的信息2.查询没有学全所有课程的同学的信息3.查询没学过"张三"老师讲授的任一门课程的学生姓名4.查询两门及其以上不及格课程的同学的学号&#xff0c;姓名及其平均成绩5.检索" 01 "课程分数小于 60&#xff0c…

阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接

阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接 第一步&#xff1a;安装 SQL Server 数据库 这是一个很详细的安装教程&#xff0c;可以参考一下 安装SQL Server详细教程 需要注意&#xff1a;安装实例时&#xff0c;建议在‘身份验证模式’直接选择“混合模式”…

编码技巧(二) element-ui table中根据状态控制是否可以勾选

项目中使用element-ui时,表格中的数据有不同的状态,需要对某个状态的数据进行 勾选操作 如图所示: 只有id为12的符合条件可以进行勾选 <el-table-column type="selection" header-align="center" :selectable="selectable" align="c…

Maven 基础总结篇

Maven 基础总结篇 Maven是专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构&#xff1a;用于解决不同IDE&#xff08;例如eclipse与IDEA&#xff09;不同的项目结构的问题 提供了一套标准化的构建流程&#xff08;编译&…

C++经典程序(2)

要读取报文内容&#xff0c;你可以使用C语言的socket编程库来读取报文。下面是一个简单的示例代码&#xff0c;演示了如何使用C语言读取HTTP报文内容&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h&g…