当前位置: 首页 > news >正文

儿童疫苗接种溯源程序,批次,厂家,接种时间上链,杜绝问题疫苗。

目标是:用 Python 构建一个“儿童疫苗接种溯源”原型系统,把「疫苗批次、生产厂家、接种时间」等信息写入区块链,实现可追溯、防篡改。

一、实际应用场景描述

在某社区卫生服务中心,儿童接种疫苗时,护士会记录:

- 疫苗名称

- 疫苗批次号

- 生产厂家

- 接种日期与时间

- 接种儿童编号(脱敏)

传统方式依赖数据库或纸质台账,存在以下问题:

- 数据可被事后修改

- 不同机构数据标准不统一

- 出现疫苗安全事件时,溯源成本高

本示例设计一个 基于区块链的疫苗溯源原型系统:

- 每一次接种生成一笔“交易”

- 交易被打包进区块

- 区块通过哈希链式连接

- 所有节点可验证数据是否被篡改

二、引入痛点(为什么要用区块链)

传统方式 区块链方式

中心化数据库 分布式账本

数据可后台修改 一旦上链不可篡改

溯源依赖人工 自动、可验证

信任成本高 技术背书信任

注意:

本示例并不替代真实医疗信息系统,而是用于理解「区块链如何在溯源场景中发挥作用」。

三、核心逻辑讲解(简化模型)

1️⃣ 数据结构设计

- 接种记录(Transaction)

儿童ID

疫苗名称

疫苗批次

厂家

接种时间

上一区块哈希

- 区块(Block)

索引

时间戳

交易列表

前一区块哈希

当前区块哈希

2️⃣ 核心流程

录入接种信息

构造交易

加入交易池

矿工打包区块

区块上链

任意节点可验证

3️⃣ 防篡改原理

- 每个区块保存

"previous_hash"

- 区块内容变化 → 哈希变化 → 链条断裂

- 验证时只需遍历哈希链

四、代码模块化(Python)

📁 项目结构

vaccine_trace/

├── block.py # 区块定义

├── blockchain.py # 区块链逻辑

├── transaction.py # 接种记录(交易)

├── main.py # 示例运行入口

├── README.md

└── USAGE.md

1️⃣ transaction.py(接种记录)

import hashlib

import json

from datetime import datetime

class VaccinationRecord:

"""

儿童疫苗接种记录(交易)

"""

def __init__(self, child_id, vaccine_name, batch_no, manufacturer, timestamp=None):

self.child_id = child_id

self.vaccine_name = vaccine_name

self.batch_no = batch_no

self.manufacturer = manufacturer

self.timestamp = timestamp or datetime.utcnow().isoformat()

def to_dict(self):

return {

"child_id": self.child_id,

"vaccine_name": self.vaccine_name,

"batch_no": self.batch_no,

"manufacturer": self.manufacturer,

"timestamp": self.timestamp

}

def compute_hash(self):

"""

计算接种记录的哈希值

"""

record_string = json.dumps(self.to_dict(), sort_keys=True)

return hashlib.sha256(record_string.encode()).hexdigest()

2️⃣ block.py(区块结构)

import hashlib

import json

class Block:

"""

区块链中的区块

"""

def __init__(self, index, transactions, previous_hash, nonce=0):

self.index = index

self.transactions = transactions

self.previous_hash = previous_hash

self.nonce = nonce

self.hash = self.compute_hash()

def compute_hash(self):

"""

计算区块哈希

"""

block_content = {

"index": self.index,

"transactions": [tx.to_dict() for tx in self.transactions],

"previous_hash": self.previous_hash,

"nonce": self.nonce

}

block_string = json.dumps(block_content, sort_keys=True)

return hashlib.sha256(block_string.encode()).hexdigest()

3️⃣ blockchain.py(链逻辑)

from block import Block

from transaction import VaccinationRecord

class VaccineBlockchain:

"""

疫苗溯源区块链

"""

def __init__(self):

self.chain = []

self.pending_transactions = []

self.create_genesis_block()

def create_genesis_block(self):

"""

创建创世区块

"""

genesis_block = Block(0, [], "0")

self.chain.append(genesis_block)

def add_transaction(self, record: VaccinationRecord):

"""

添加接种记录到交易池

"""

self.pending_transactions.append(record)

def mine_pending_transactions(self):

"""

挖矿:将交易打包成新区块

"""

if not self.pending_transactions:

return None

last_block = self.chain[-1]

new_block = Block(

index=len(self.chain),

transactions=self.pending_transactions,

previous_hash=last_block.hash

)

self.pending_transactions = []

self.chain.append(new_block)

return new_block

def is_chain_valid(self):

"""

校验整条链是否被篡改

"""

for i in range(1, len(self.chain)):

current = self.chain[i]

previous = self.chain[i - 1]

if current.previous_hash != previous.hash:

return False

if current.hash != current.compute_hash():

return False

return True

4️⃣ main.py(示例运行)

from blockchain import VaccineBlockchain

from transaction import VaccinationRecord

# 初始化链

blockchain = VaccineBlockchain()

# 模拟接种记录

record_1 = VaccinationRecord(

child_id="CHILD_001",

vaccine_name="乙肝疫苗",

batch_no="HB202401",

manufacturer="某生物制药"

)

record_2 = VaccinationRecord(

child_id="CHILD_002",

vaccine_name="麻疹疫苗",

batch_no="MR202402",

manufacturer="另一制药公司"

)

# 上链

blockchain.add_transaction(record_1)

blockchain.add_transaction(record_2)

blockchain.mine_pending_transactions()

# 查询

for block in blockchain.chain:

print(f"区块 {block.index}")

print("交易:")

for tx in block.transactions:

print(tx.to_dict())

print("-" * 30)

# 校验

print("区块链是否合法:", blockchain.is_chain_valid())

五、README.md(示例)

# 儿童疫苗接种溯源区块链原型

## 项目简介

本项目是一个基于 Python 的区块链教学示例,

用于演示如何将儿童疫苗接种信息上链,实现溯源与防篡改。

## 功能

- 接种记录建模

- 区块与区块链实现

- 简易挖矿机制

- 链完整性校验

## 适用场景

- 区块链课程示例

- 创新实践项目

- 技术原理演示

## 运行方式

bash

python main.py

六、使用说明(USAGE.md)

1. 安装 Python 3.8+

2. 克隆或下载本项目

3. 进入项目目录

4. 执行:

python main.py

5. 查看控制台输出的区块与交易信息

七、核心知识点卡片(便于学习)

知识点 说明

区块 存储多条接种记录的数据容器

交易 单条接种记录

哈希 数据的唯一指纹

链式结构 区块通过 previous_hash 相连

不可篡改 修改任一区块会导致哈希失效

共识(简化) 本例采用顺序打包,未引入复杂共识

八、总结

本示例展示了:

- 如何用 Python 构建最小可用的区块链系统

- 如何将疫苗批次、厂家、接种时间等关键字段上链

- 如何通过哈希链实现数据溯源与防篡改

✅ 优点:逻辑清晰、易教学、易扩展

⚠️ 局限:未包含网络层、权限控制、隐私保护(如零知识证明)

如果你愿意,可以下一步:

- ✅ 增加「按批次查询疫苗流向」

- ✅ 改成 Flask API 形式

- ✅ 加入 Merkle Tree 提高验证效率

- ✅ 对比 Hyperledger Fabric / Ethereum 方案差异

利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!

http://www.jsqmd.com/news/761075/

相关文章:

  • 对比直接使用官方api体验taotoken在容灾与路由上的差异
  • 深入paho.mqtt.c源码:自动重连机制是如何在C语言层面实现的?
  • 从ResolvePackageNotFound到Found conflicts:一文读懂Conda环境迁移的底层依赖冲突原理与排查思路
  • 告别玄学调试:用示波器实测PCIe 3.0/4.0参考时钟(REFCLK)的12个关键参数
  • PHP 的Opcache加速的使用方法
  • 告别裸奔spdlog:手把手教你封装一个生产级C++日志宏(附线程安全与性能调优)
  • 我用deepseek做了个免费在线工具箱网站ud5.com
  • Refine框架:基于React的Headless元框架,快速构建企业级后台应用
  • Python信号处理实战:用SciPy和NumPy给振动信号做个‘高阶体检’(双谱图入门)
  • 从 Python 到 Node.js:我把两个开源项目揉成一个,在 DeepSeek 上跑出 76% 的 Token 节省率(附完整架构和 35 次真实测试数据)
  • 2026生物医用泡沫箱多维度评测报告:冰袋生产厂家/大号加厚泡沫箱/生物医用泡沫箱/干冰配送/泡沫箱生产厂家/选择指南 - 优质品牌商家
  • 保姆级避坑指南:在Ubuntu 20.04双系统上搞定Nvidia V100驱动与CUDA 11.1(附关闭自动更新关键步骤)
  • 当安装教程遇上ai:用快马打造能听懂问题的pycharm智能配置助手
  • 自托管任务管理工具Questlog:全栈技术解析与实战部署指南
  • UE GAS 实战(六)完美格挡与动画分层融合
  • 华硕笔记本终极优化指南:用G-Helper实现AMD CPU降压调优
  • ESP32-P4开发板评测:7英寸HMI屏与AIoT应用实践
  • 如何用思维导图拆解项目范围
  • 3个致命误区导致国密支付上线失败!PHP工程师必查的国密证书链校验、时间戳RFC3161标准、随机数熵源合规性清单
  • Balena Etcher三步指南:免费开源工具,安全烧录系统镜像到SD卡和U盘
  • Dify对接MES/ERP非结构化日志的智能检索方案(含日志时间序列语义增强模块开源代码)
  • 从传感器开发到Modbus从机:用STM32 HAL库+FreeModbus快速搭建你的工业协议栈
  • Taotoken用量看板如何帮助团队清晰管理AI调用成本
  • OpenUI深度解析:AI驱动界面生成从原理到实战部署
  • 基于飞书与Claude Code的AI Agent自动化工作流构建指南
  • 为什么你的PHP AI校验总被绕过?7个被90%开发者忽略的安全盲区,今天必须修复
  • AI辅助开发:基于快马多模型能力打造你的智能终端,让xshell8具备AI思考力
  • 如何用开源工具让旧Mac重获新生?三步解锁硬件隐藏潜力
  • Docker化Emacs开发环境:跨版本测试与CI/CD集成实践
  • VIOLA框架:小样本视频理解的技术突破与实践