区块链食品溯源系统(Vue3 + Gin + Hyperledger Fabric)_区块链溯源系统
食品溯源系统
这次提供的是基于fabric2.4.9开发的食品溯源系统,使用Go + Gin + Vue3,样式精美,代码简单,适合初学者学习
1. 系统概述
1.1 项目背景
食品溯源系统是一个基于区块链技术的食品安全追溯平台,旨在实现从生产、物流、零售到消费的全链路食品安全信息透明化。通过Hyperledger Fabric区块链技术,确保数据的不可篡改性和可追溯性。
1.2 系统特点
- 去中心化:基于区块链的分布式架构
- 数据不可篡改:利用区块链技术保证数据完整性
- 全链路追溯:覆盖生产、物流、零售、销售全过程
- 多角色协作:支持生产者、物流商、零售商、消费者等多角色参与
- 实时监控:实时记录温度、湿度等关键环境数据
1.3 技术栈
- 区块链平台:Hyperledger Fabric
- 后端语言:Go (Golang)
- 前端语言:JavaScript
- Web框架:Gin
- 前端框架:Vue3
- 数据库:SQLite
- 认证机制:JWT (JSON Web Token)
- 加密算法:bcrypt密码哈希
2. 系统架构
2.1 整体架构
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐│ 前端应用 │ │ 移动端应用 │ │ 第三方系统 │└─────────┬───────┘ └─────────┬───────┘ └─────────┬───────┘ │││ └──────────────────────┼──────────────────────┘ │ ┌─────────────┴─────────────┐ │ API Gateway │ │ (Go + Gin + JWT) │ └─────────────┬─────────────┘ │ ┌─────────────┴─────────────┐ │ Hyperledger Fabric │ │ 区块链网络 │ └─────────────┬─────────────┘ │ ┌─────────────┴─────────────┐ │ FoodTrace ChainCode │ │ 智能合约 │ └───────────────────────────┘
2.2 组件说明
- API Gateway:RESTful API服务,负责处理HTTP请求和响应
- 用户认证模块:基于JWT的用户认证和授权
- 区块链网络:Hyperledger Fabric网络,存储和处理业务数据
- 智能合约:链码实现业务逻辑和数据验证
- 数据库:SQLite存储用户信息和会话数据
3. 核心数据模型
3.1 产品模型 (Product)
type Product struct { ID string `json:\"id\"` // 产品唯一标识 Name string `json:\"name\"` // 产品名称 Description string `json:\"description\"` // 产品描述 ProducerID string `json:\"producerId\"` // 生产者ID ProductionDate string `json:\"productionDate\"` // 生产日期 ExpirationDate string `json:\"expirationDate\"` // 过期日期 BatchNumber string `json:\"batchNumber\"` // 批次号 Status string `json:\"status\"` // 产品状态 ProductionData Production `json:\"productionData\"` // 生产数据 LogisticsData []Logistics `json:\"logisticsData\"` // 物流数据数组 RetailData Retail `json:\"retailData\"` // 零售数据 CreatedTxID string `json:\"createdTxId\"` // 创建交易ID}
3.2 生产数据模型 (Production)
type Production struct { Location string `json:\"location\"` // 生产地点 Temperature float64 `json:\"temperature\"` // 生产环境温度 Humidity float64 `json:\"humidity\"` // 生产环境湿度 RawMaterials []string `json:\"rawMaterials\"` // 原材料列表 Certifications []string `json:\"certifications\"` // 认证信息 AdditionalInfo string `json:\"additionalInfo\"` // 额外信息 TxID string `json:\"txId\"` // 交易ID Timestamp string `json:\"timestamp\"` // 时间戳}
3.3 物流数据模型 (Logistics)
type Logistics struct { LogisticsID string `json:\"logisticsId\"` // 物流服务商ID FromLocation string `json:\"fromLocation\"` // 起始地点 ToLocation string `json:\"toLocation\"` // 目的地点 DepartureTime string `json:\"departureTime\"` // 出发时间 ArrivalTime string `json:\"arrivalTime\"` // 到达时间 Temperature float64 `json:\"temperature\"` // 运输环境温度 Humidity float64 `json:\"humidity\"` // 运输环境湿度 TransportType string `json:\"transportType\"` // 运输方式 AdditionalInfo string `json:\"additionalInfo\"` // 额外信息 TxID string `json:\"txId\"` // 交易ID Timestamp string `json:\"timestamp\"` // 时间戳}
3.4 零售数据模型 (Retail)
type Retail struct { RetailerID string `json:\"retailerId\"` // 零售商ID StoreLocation string `json:\"storeLocation\"` // 商店位置 ReceiveDate string `json:\"receiveDate\"` // 接收日期 SaleDate string `json:\"saleDate\"` // 销售日期 Price float64 `json:\"price\"` // 销售价格 QualityCheck bool `json:\"qualityCheck\"` // 质量检查结果 AdditionalInfo string `json:\"additionalInfo\"` // 额外信息 TxID string `json:\"txId\"` // 交易ID Timestamp string `json:\"timestamp\"` // 时间戳}
4. 数据库模型
4.1 用户表 (users)
CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, -- 用户ID username TEXT NOT NULL UNIQUE, -- 用户名 password TEXT NOT NULL, -- 密码哈希 role TEXT NOT NULL,-- 用户角色 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 创建时间);
4.2 产品状态枚举
const ( StatusProduced = \"PRODUCED\" // 已生产 StatusShipping = \"SHIPPING\" // 运输中 StatusReceived = \"RECEIVED\" // 已接收 StatusSold = \"SOLD\" // 已销售)
5. 系统角色
5.1 角色定义
const ( RoleProducer = \"PRODUCER\" // 生产者 RoleLogistics = \"LOGISTICS\" // 物流商 RoleRetailer = \"RETAILER\" // 零售商 RoleConsumer = \"CONSUMER\" // 消费者)
5.2 角色权限
POST /api/producer/product
POST /api/producer/product/:id/production
POST /api/logistics/product/:id/logistics
POST /api/retailer/product/:id/receive
POST /api/retailer/product/:id/quality
POST /api/retailer/product/:id/sell
6. 核心业务流程
6.1 产品生命周期
创建产品 → 添加生产数据 → 物流运输 → 零售商接收 → 质量检查 → 销售给消费者 ↓ ↓ ↓ ↓ ↓ ↓PRODUCED → PRODUCED → SHIPPING → RECEIVED → RECEIVED → SOLD
6.2 详细业务流程
6.2.1 产品创建流程
- 生产者注册并登录系统
- 创建新产品:调用
CreateProduct
链码方法 - 添加生产数据:记录生产环境、原材料等信息
- 产品状态:设置为
PRODUCED
6.2.2 物流运输流程
- 物流商接收产品
- 添加物流数据:记录运输路线、环境条件等
- 产品状态:更新为
SHIPPING
- 支持多段物流:可添加多个物流记录
6.2.3 零售销售流程
- 零售商接收产品:产品状态从
SHIPPING
更新为RECEIVED
- 质量检查:进行质量检验,记录检查结果
- 销售产品:只有通过质量检查的产品才能销售
- 产品状态:最终更新为
SOLD
6.3 状态转换规则
PRODUCED
→SHIPPING
:添加物流数据时SHIPPING
→RECEIVED
:零售商接收产品时RECEIVED
→SOLD
:零售商销售产品时(需先通过质量检查)