news 2026/5/6 3:02:27

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
儿童疫苗接种溯源程序,批次,厂家,接种时间上链,杜绝问题疫苗。

目标是:用 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解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 3:01:28

R 4.5正式版发布仅48小时,我们已跑通全市场A股高频回测 pipeline(含tick级重采样与微秒级事件对齐)

更多请点击: https://intelliparadigm.com 第一章:R 4.5正式版核心回测能力概览 R 4.5正式版显著增强了量化金融建模中的回测基础设施,尤其在时间序列对齐、事件驱动执行与多资产组合评估方面引入了原生支持。其核心回测引擎 now 包含 backt…

作者头像 李华
网站建设 2026/5/6 3:01:26

解密BepInEx:突破性Unity游戏插件框架的实战应用与架构解析

解密BepInEx:突破性Unity游戏插件框架的实战应用与架构解析 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 想象一下,你正在玩一款热门的Unity游戏&#xf…

作者头像 李华
网站建设 2026/5/6 2:59:51

AI驱动的git-release-notes:自动化生成发布文档的智能工具

1. 项目概述与核心价值如果你和我一样,长期维护着几个开源项目或者负责团队的版本发布工作,那么每次发布新版本时,撰写更新日志(Changelog)和发布说明(Release Notes)绝对是个既重要又繁琐的活儿…

作者头像 李华
网站建设 2026/5/6 2:59:50

0xArchive CLI:为AI与自动化工作流设计的加密市场数据获取利器

1. 项目概述:一个为AI与自动化而生的加密市场数据CLI工具 如果你和我一样,经常需要从不同的去中心化交易所(DEX)或永续合约平台获取历史市场数据来做分析、回测,或者为你的交易机器人、AI智能体提供实时信号&#xff…

作者头像 李华
网站建设 2026/5/6 2:53:36

Pixie Cursors:零基础制作Windows自定义鼠标指针的像素级工具

1. 项目概述如果你和我一样,对Windows系统千篇一律的鼠标指针感到审美疲劳,总想换上一些能彰显个性的图案,但又苦于找不到合适的工具或者制作过程过于繁琐,那么今天分享的这个项目——Pixie Cursors,绝对值得你花时间了…

作者头像 李华