# 玉米溯源管理系统 **Repository Path**: imeric/corn-trace ## Basic Information - **Project Name**: 玉米溯源管理系统 - **Description**: 2022微众区块链比赛项目---玉米溯源管理系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-01-19 - **Last Updated**: 2023-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ***项目名:基于区块链的玉米溯源系统*** ## ***项目简介*** 本项目针对溯源环节的各个场景的数据特点,编写对应的智能合约,进行场景中相关数据的处理操作,不同场景下的IOT设备或者参与人员调用对应的智能合约接口实现当前场景下的信息数据的链上操作。 ## ***项目背景*** 党的二十大指出加快发展数字经济,促进数字经济和实体经济深度融合,打造具有国际竞争力的数字产业集群。这一系列内容明确了中国未来经济发展的重点和实现路径,而区块链技术是数字经济时代重要实现手段。数据基于区块链技术可以作为信用的媒介,利用区块链技术的确权和不可篡改性可以基于数据的价值交换,协同共享,构造一个价值网络。 玉米是我国的三大主粮之一,从过去以粮食供应为主的时代,到随着养殖、工业发展饲用及工业用粮开始成为主要需求,再到全球疫情爆发,玉米的需求更加凸显。好的农产品需要好的质量,食品安全问题是食物消费的最低要求,同时也是最高要求,它关系到人民的健康甚至生命。 本系统利用区块链技术的数据不可篡改特性,使溯源流程中各环节人员互不干扰,不受限于某一中心机构,将玉米种植、加工、售卖三个环节的相关数据上传到区块链,以确保所追溯的信息是真实可信的,从而达到保证消费者利益的目的。 ## ***项目目标:*** 食材全程可溯源,确保真的是真的 玉米溯源系统通过给每个玉米配置溯源码,让玉米有“身份证”,将玉米从种植到加工,再到最后销售的每一环节变得公开透明化,消费者可以通过查询溯源码对玉米“追根溯源”,获得更多生产信息,加工信息和销售信息,若出现问题,则查清出现问题的环节,给玉米贴上“身份证”,实现玉米市场管理的信息化。 ## ***项目方案*** 智能合约将每个上传数据的用户分为种植人员、加工人员和销售人员,每个人员只能上传自己负责环节的相关数据,且不可篡改,保证了数据的真实性 前端以一个微信小程序进行展现,通过扫描溯源码,消费者可以溯源质量权威检测信息、产地信息、加工企业和销售企业。 ## ***项目架构*** 1.于CentOS 7系统基于FISCO BCOS搭建单群组4节点联盟链 2.一键部署WeBASE管理台环境,搭建管理平台,节点管理子系统和签名服务 3.基于Solidity语言于WeBASE-Front集成IDE上进行合约的开发 4.基于WEBASE子系统的节点前置服务接口进行交易 5.开发环境基于本地签名交易处理接口,发布环境将会调用WeBASE-Sign签名服务 6.后端基于Flask框架开发,实现对智能合约接口调用 7.前端基于uniapp框架进行微信小程序开发,实现生产,加工,销售三大环节的溯源可视化 ## ***部署流程*** 1.单机上部署一条4节点的FISCO BCOS联盟链: [搭建区块链](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/installation.html) 2.一键部署WeBASE 区块链中间件平台:[一键部署WeBASE管理台环境](https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE/install.html) 3.将项目根目录下**contracts**里的文件全部导入WeBASE-Front中的合约IDE中,分别使用参数1、2、3、4(这四个参数可以任取)利用WeBASE节点前置服务中的**privateKey**接口得到四个账户地址**address**(此步骤可以调用**app.py**中的**privateKey**接口获取),分别利用四个账户地址作为**Device.sol,Planter.sol,Processor.sol,Retailer.sol**四个合约构造器参数部署合约,再利用这四个账户地址作为**Trace.sol**合约构造器参数部署合约 4.后端**app.py**文件 * pip3 install flask requests flask_cors paho-mqtt * python3 app.py运行 ```python # 替换为自己的虚拟机的IP或域名 BASE_URL = 'http://xyclstudy.cn:5002/WeBASE-Front' ``` ```python # 智能合约相关信息 CONTRACT_NAME = 'Trace' # 分别填入Trace部署生成后的ADDRESS和ABI CONTRACT_ADDRESS = '0x4c034f72dd1de85d6196981809c794afd9ee0b3e' CONTRACT_ABI = '...' # 分别填入步骤三中获取到的四个账户地址address,注意要和合约一一对应 DEVICE_ADDRESS = '0x74ef053dec4f8af89f49285ffc25a83a3e8beb5a' PROCESSOR_ADDRESS = '0x0f0c7a47a631edb3bdfec7fec511ff6a5882242d' PLANTER_ADDRESS = '0xc1caf4a2316355e488e81c10c0881377723cfefe' RETAILER_ADDRESS = '0x8de431418a156b479891ef80c26589d3f9979e59' ``` 5.微信小程序端**uniappTrace** - 修改**manifest.json**文件中的微信小程序AppID为自己的AppID - 修改**main.js**文件 ```js // 请求的根路径 修改为app.py中对应的IP:端口 $http.baseUrl = 'https://IP:3008' ``` ## ***参与贡献*** - 李嘉浩 - 程广浩 - 孙月 - 莫雄森 - 李康