目标是用 Python 构建一个“儿童疫苗接种溯源”原型系统把「疫苗批次、生产厂家、接种时间」等信息写入区块链实现可追溯、防篡改。一、实际应用场景描述在某社区卫生服务中心儿童接种疫苗时护士会记录- 疫苗名称- 疫苗批次号- 生产厂家- 接种日期与时间- 接种儿童编号脱敏传统方式依赖数据库或纸质台账存在以下问题- 数据可被事后修改- 不同机构数据标准不统一- 出现疫苗安全事件时溯源成本高本示例设计一个 基于区块链的疫苗溯源原型系统- 每一次接种生成一笔“交易”- 交易被打包进区块- 区块通过哈希链式连接- 所有节点可验证数据是否被篡改二、引入痛点为什么要用区块链传统方式 区块链方式中心化数据库 分布式账本数据可后台修改 一旦上链不可篡改溯源依赖人工 自动、可验证信任成本高 技术背书信任注意本示例并不替代真实医疗信息系统而是用于理解「区块链如何在溯源场景中发挥作用」。三、核心逻辑讲解简化模型1️⃣ 数据结构设计- 接种记录Transaction儿童ID疫苗名称疫苗批次厂家接种时间上一区块哈希- 区块Block索引时间戳交易列表前一区块哈希当前区块哈希2️⃣ 核心流程录入接种信息↓构造交易↓加入交易池↓矿工打包区块↓区块上链↓任意节点可验证3️⃣ 防篡改原理- 每个区块保存previous_hash- 区块内容变化 → 哈希变化 → 链条断裂- 验证时只需遍历哈希链四、代码模块化Python 项目结构vaccine_trace/│├── block.py # 区块定义├── blockchain.py # 区块链逻辑├── transaction.py # 接种记录交易├── main.py # 示例运行入口├── README.md└── USAGE.md1️⃣ transaction.py接种记录import hashlibimport jsonfrom datetime import datetimeclass VaccinationRecord:儿童疫苗接种记录交易def __init__(self, child_id, vaccine_name, batch_no, manufacturer, timestampNone):self.child_id child_idself.vaccine_name vaccine_nameself.batch_no batch_noself.manufacturer manufacturerself.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_keysTrue)return hashlib.sha256(record_string.encode()).hexdigest()2️⃣ block.py区块结构import hashlibimport jsonclass Block:区块链中的区块def __init__(self, index, transactions, previous_hash, nonce0):self.index indexself.transactions transactionsself.previous_hash previous_hashself.nonce nonceself.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_keysTrue)return hashlib.sha256(block_string.encode()).hexdigest()3️⃣ blockchain.py链逻辑from block import Blockfrom transaction import VaccinationRecordclass 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 Nonelast_block self.chain[-1]new_block Block(indexlen(self.chain),transactionsself.pending_transactions,previous_hashlast_block.hash)self.pending_transactions []self.chain.append(new_block)return new_blockdef 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 Falseif current.hash ! current.compute_hash():return Falsereturn True4️⃣ main.py示例运行from blockchain import VaccineBlockchainfrom transaction import VaccinationRecord# 初始化链blockchain VaccineBlockchain()# 模拟接种记录record_1 VaccinationRecord(child_idCHILD_001,vaccine_name乙肝疫苗,batch_noHB202401,manufacturer某生物制药)record_2 VaccinationRecord(child_idCHILD_002,vaccine_name麻疹疫苗,batch_noMR202402,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 的区块链教学示例用于演示如何将儿童疫苗接种信息上链实现溯源与防篡改。## 功能- 接种记录建模- 区块与区块链实现- 简易挖矿机制- 链完整性校验## 适用场景- 区块链课程示例- 创新实践项目- 技术原理演示## 运行方式bashpython main.py六、使用说明USAGE.md1. 安装 Python 3.82. 克隆或下载本项目3. 进入项目目录4. 执行python main.py5. 查看控制台输出的区块与交易信息七、核心知识点卡片便于学习知识点 说明区块 存储多条接种记录的数据容器交易 单条接种记录哈希 数据的唯一指纹链式结构 区块通过 previous_hash 相连不可篡改 修改任一区块会导致哈希失效共识简化 本例采用顺序打包未引入复杂共识八、总结本示例展示了- 如何用 Python 构建最小可用的区块链系统- 如何将疫苗批次、厂家、接种时间等关键字段上链- 如何通过哈希链实现数据溯源与防篡改✅ 优点逻辑清晰、易教学、易扩展⚠️ 局限未包含网络层、权限控制、隐私保护如零知识证明如果你愿意可以下一步- ✅ 增加「按批次查询疫苗流向」- ✅ 改成 Flask API 形式- ✅ 加入 Merkle Tree 提高验证效率- ✅ 对比 Hyperledger Fabric / Ethereum 方案差异利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛