一、实际应用场景描述某高校技术类社团如区块链/全栈开发社团每学期有固定经费来源- 学校下拨经费- 企业赞助- 活动报名费支出包括- 场地租赁- 物料采购- 讲师礼品- 餐饮报销当前管理方式多为 Excel 微信群截图透明度不足历史记录易被修改。本程序用于- 所有收支行为写入区块链- 成员可通过 CLI 查询任意一笔记录- 负责人无法事后篡改数据二、引入痛点分析传统方式 存在问题Excel / 手工记账 易误删、易篡改群公告截图 无法验证真实性中心化数据库 管理员权限过大无审计机制 挪用难以发现核心诉求不依赖信任人而依赖可验证的数据结构。三、核心逻辑讲解简化区块链模型1️⃣ 数据结构设计每一笔经费记录为一条 BlockBlock:├─ index├─ timestamp├─ transaction_type (收入 / 支出)├─ amount├─ description├─ operator├─ previous_hash└─ hash2️⃣ 防篡改机制- 每个区块包含 前一区块哈希- 任意历史数据被修改 → 哈希断裂 → 链失效- 成员可校验整条链完整性3️⃣ 存储方式- 本地 JSON 文件教学场景- 不依赖第三方链如 Ethereum- 适合社团内部可信环境四、代码模块化设计fund_chain/├── block.py # 区块定义├── blockchain.py # 链管理├── cli.py # 命令行入口├── utils.py # 哈希工具├── data/│ └── chain.json # 本地账本└── README.md五、核心代码实现Python✅ block.pyimport hashlibimport jsonfrom datetime import datetimeclass Block:def __init__(self, index, transaction_type, amount, description, operator, previous_hash):self.index indexself.timestamp datetime.now().isoformat()self.transaction_type transaction_typeself.amount amountself.description descriptionself.operator operatorself.previous_hash previous_hashself.hash self.calculate_hash()def calculate_hash(self):block_string json.dumps(self.__dict__, sort_keysTrue)return hashlib.sha256(block_string.encode()).hexdigest()✅ blockchain.pyimport jsonimport osfrom block import BlockCHAIN_PATH data/chain.jsonclass Blockchain:def __init__(self):self.chain []self.load_chain()def create_genesis_block(self):genesis Block(0, init, 0, Genesis Block, system, 0)self.chain.append(genesis)self.save_chain()def add_transaction(self, t_type, amount, description, operator):last_block self.chain[-1]new_block Block(indexlast_block.index 1,transaction_typet_type,amountamount,descriptiondescription,operatoroperator,previous_hashlast_block.hash)self.chain.append(new_block)self.save_chain()def save_chain(self):os.makedirs(data, exist_okTrue)with open(CHAIN_PATH, w, encodingutf-8) as f:json.dump([b.__dict__ for b in self.chain], f, indent2)def load_chain(self):if not os.path.exists(CHAIN_PATH):self.create_genesis_block()else:with open(CHAIN_PATH, r, encodingutf-8) as f:data json.load(f)self.chain [Block(**b) for b in data]def is_valid(self):for i in range(1, len(self.chain)):curr self.chain[i]prev self.chain[i - 1]if curr.previous_hash ! prev.hash:return Falsereturn True✅ cli.pyfrom blockchain import Blockchaindef main():bc Blockchain()print(社团经费区块链系统)print(1. 添加收入)print(2. 添加支出)print(3. 查看账本)print(4. 校验链完整性)choice input(选择操作)if choice 1:amount float(input(金额))desc input(说明)operator input(负责人)bc.add_transaction(income, amount, desc, operator)print(✅ 已上链)elif choice 2:amount float(input(金额))desc input(说明)operator input(负责人)bc.add_transaction(expense, amount, desc, operator)print(✅ 已上链)elif choice 3:for b in bc.chain:print(f{b.index} | {b.timestamp} | {b.transaction_type} | {b.amount} | {b.description} | {b.operator})elif choice 4:print(链状态, 合法 ✅ if bc.is_valid() else 异常 ❌)if __name__ __main__:main()六、README 文件节选# 社团经费区块链公示系统## 功能- 收支记录上链- 历史不可篡改- 成员可查- 链完整性校验## 使用方式bashpip install -r requirements.txtpython cli.py## 适用场景- 高校社团- 学生组织- 内部财务公示七、使用说明简要1. 负责人录入每笔收支2. 系统自动写入区块3. 成员运行程序查看完整账本4. 定期执行「链校验」确认未被篡改八、核心知识点卡片教学用概念 说明区块 单次交易的数据容器哈希 数据指纹防篡改链式结构 前后关联形成信任链去中心思想 不依赖单一管理者审计机制 可验证、可追溯九、总结本项目并非追求复杂公链技术而是- 将区块链核心思想应用到真实社团治理- 用最小可行方案解决“信任成本”问题- 强调工程透明性 技术炫技对社团而言这是一次低成本、高可解释性的信任升级实验对学生而言是一次完整的全栈 区块链思维训练。如果你愿意可以再- 扩展为 Web 可视化版本- 增加多签审批逻辑- 或改写为课程实验指导书风格利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛