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. 项目展示

系统首页

登录页面

注册页面

生产者页面

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

物流服务商页面

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

零售商页面

接收产品



质量检查



销售管理
销售产品


零售信息
交易详情

消费者页面

产品查询

相关推荐
再见晴天*_*9 分钟前
超图superMap iObjects for Java的Jar使用中遇到的问题
运维·服务器
Azure DevOps17 分钟前
Azure DevOps Server:使用FTP工具上传文件
运维·microsoft·azure·devops
qq_50242899025 分钟前
如何搭建战神冰雪传奇手游 从零开始学习游戏架设,玩转云服务器,如何利用云服务器搭建一款属于自己的传奇手游
运维·服务器
懒大王、34 分钟前
Vue添加图片作为水印
前端·javascript·vue.js
暖苏1 小时前
Vue.js第一节
前端·javascript·css·vue.js·ecmascript
我言秋日胜春朝★1 小时前
【Linux网络编程】守护进程
linux·运维·服务器
jason_yang1 小时前
watchEffect的flush属性你都用过不?
前端·vue.js
uio1 小时前
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
前端·vue.js
Mikhail_G2 小时前
Python初学者入门指南
大数据·运维·开发语言·python·数据分析
萌萌哒草头将军2 小时前
⚡️⚡️⚡️ 开源了!原来 Vite 加载图片还可以这样啊!🚀🚀🚀
javascript·vue.js·react.js