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)

go 复制代码
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)

go 复制代码
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)

go 复制代码
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)

go 复制代码
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)

sql 复制代码
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 产品状态枚举

go 复制代码
const (
    StatusProduced = "PRODUCED"  // 已生产
    StatusShipping = "SHIPPING"  // 运输中
    StatusReceived = "RECEIVED"  // 已接收
    StatusSold     = "SOLD"      // 已销售
)

5. 系统角色

5.1 角色定义

go 复制代码
const (
    RoleProducer  = "PRODUCER"  // 生产者
    RoleLogistics = "LOGISTICS" // 物流商
    RoleRetailer  = "RETAILER"  // 零售商
    RoleConsumer  = "CONSUMER"  // 消费者
)

5.2 角色权限

角色 权限 可执行操作
生产者 (PRODUCER) 创建产品、添加生产数据 POST /api/producer/product POST /api/producer/product/:id/production
物流商 (LOGISTICS) 添加物流数据 POST /api/logistics/product/:id/logistics
零售商 (RETAILER) 接收产品、质量检查、销售产品 POST /api/retailer/product/:id/receive POST /api/retailer/product/:id/quality POST /api/retailer/product/:id/sell
消费者 (CONSUMER) 查询产品信息 所有查询接口

6. 核心业务流程

6.1 产品生命周期

复制代码
创建产品 → 添加生产数据 → 物流运输 → 零售商接收 → 质量检查 → 销售给消费者
   ↓           ↓           ↓         ↓         ↓         ↓
PRODUCED → PRODUCED → SHIPPING → RECEIVED → RECEIVED → SOLD

6.2 详细业务流程

6.2.1 产品创建流程
  1. 生产者注册并登录系统
  2. 创建新产品 :调用 CreateProduct 链码方法
  3. 添加生产数据:记录生产环境、原材料等信息
  4. 产品状态 :设置为 PRODUCED
6.2.2 物流运输流程
  1. 物流商接收产品
  2. 添加物流数据:记录运输路线、环境条件等
  3. 产品状态 :更新为 SHIPPING
  4. 支持多段物流:可添加多个物流记录
6.2.3 零售销售流程
  1. 零售商接收产品 :产品状态从 SHIPPING 更新为 RECEIVED
  2. 质量检查:进行质量检验,记录检查结果
  3. 销售产品:只有通过质量检查的产品才能销售
  4. 产品状态 :最终更新为 SOLD

6.3 状态转换规则

  • PRODUCEDSHIPPING:添加物流数据时
  • SHIPPINGRECEIVED:零售商接收产品时
  • RECEIVEDSOLD:零售商销售产品时(需先通过质量检查)

7. 项目展示

系统首页

登录页面

注册页面

生产者页面

创建产品
我的产品
添加生产数据
生产信息查询
交易详情

物流服务商页面

运输管理
添加物流信息
物流信息详情
交易详情

零售商页面

接收产品



质量检查



销售管理
销售产品


零售信息
交易详情

消费者页面

产品查询

相关推荐
自出洞来无敌手(曾令瑶)2 分钟前
浏览器 实时监听音量 实时语音识别 vue js
前端·javascript·vue.js·语音识别
F36_9_8 分钟前
团队协作效率低影响项目进度,如何提升效率
运维
Hilaku25 分钟前
“虚拟DOM”到底是什么?我们用300行代码来实现一个
前端·javascript·vue.js
CodeWithMe1 小时前
【Note】Linux Kernel 之 内核架构、源码文件、API/ABI 、FHS
linux·运维·架构
漫步向前1 小时前
beegoMVC问题知识点汇总
go
快起来别睡了2 小时前
Vue 3 中的 Watch、WatchEffect 和 Computed:深入解析与案例分析
vue.js
盏茶作酒292 小时前
打造自己的组件库(三)打包及发布
前端·vue.js
你喜欢喝可乐吗?3 小时前
RuoYi-Cloud 验证码处理流程
java·spring cloud·微服务·vue
Rainbow_Pearl3 小时前
Vue2_element 表头查询功能
javascript·vue.js·elementui
zkmall3 小时前
企业电商平台搭建:ZKmall开源商城服务器部署与容灾方案
运维·服务器·开源