家庭收支链上记账小程序,每笔收支写入链式结构,不可删除,支持家庭成员共同查看,解决账目争议,隐瞒消费问题。
「家庭收支链上记账小程序Family Ledger Chain」适用于✅ 夫妻共同记账✅ 合租室友 AA 结算✅ 父母子女共管账户✅ 解决“钱花哪了”“谁没出钱”的信任问题一、实际应用场景描述Scenario你和家人共用一个家庭消费记账群- 老公刷信用卡- 老婆付房租- 孩子买了游戏- 偶尔现金支出但经常出现- “我明明付了你怎么不记”- “这笔钱不是我花的”- 一方删记录、改金额- Excel 被覆盖、聊天记录过期 你们需要一个像区块链一样“谁也改不了”的家庭账本二、引入痛点Pain Points现有方式 问题Excel / 微信表 可随意修改记账 App 单人控制、不透明聊天记录 易丢失口头对账 无证据✅ 核心诉求每一笔收支谁记的 什么时候 金额多少 无法删除或修改三、核心逻辑讲解Core Logic 设计思想来自区块链课程我们用简化版区块链结构Block├─ index├─ timestamp├─ payer支付人├─ amount├─ category├─ prev_hash└─ hash三大保障机制1️⃣ 链式哈希- 当前块 hash f(数据 上一个 hash)- 改一笔 → 整条链失效2️⃣ 全员可读- 账本存储在本地 JSON / 文件中- 家庭成员可随时验证3️⃣ 不可删除- 删除即破坏 hash 连续性四、代码模块化设计Python 项目结构family_ledger_chain/│├── main.py # 入口├── block.py # 区块结构├── chain.py # 链逻辑├── utils.py # 哈希 时间├── ledger.json # 账本存储└── README.md1️⃣ utils.py工具函数import hashlibimport jsonimport timedef calculate_hash(data: dict) - str:计算区块哈希SHA-256data_string json.dumps(data, sort_keysTrue)return hashlib.sha256(data_string.encode()).hexdigest()def get_timestamp() - int:获取当前时间戳return int(time.time())2️⃣ block.py区块结构from utils import calculate_hash, get_timestampclass Block:def __init__(self, index, payer, amount, category, prev_hash):self.index indexself.timestamp get_timestamp()self.payer payerself.amount amountself.category categoryself.prev_hash prev_hashself.hash self.compute_hash()def compute_hash(self):data {index: self.index,timestamp: self.timestamp,payer: self.payer,amount: self.amount,category: self.category,prev_hash: self.prev_hash}return calculate_hash(data)3️⃣ chain.py家庭账本链import jsonfrom block import Blockclass FamilyLedger:def __init__(self, storage_fileledger.json):self.chain []self.storage_file storage_fileself.load_chain()def create_genesis_block(self):创建创世区块genesis Block(0, SYSTEM, 0, INIT, 0)self.chain.append(genesis)self.save_chain()def add_record(self, payer, amount, category):prev_block self.chain[-1]new_block Block(indexlen(self.chain),payerpayer,amountamount,categorycategory,prev_hashprev_block.hash)self.chain.append(new_block)self.save_chain()def save_chain(self):with open(self.storage_file, w, encodingutf-8) as f:json.dump([block.__dict__ for block in self.chain], f, indent2)def load_chain(self):try:with open(self.storage_file, r, encodingutf-8) as f:data json.load(f)self.chain [Block(**b) for b in data]except FileNotFoundError:self.create_genesis_block()4️⃣ main.py示例运行from chain import FamilyLedgerledger FamilyLedger()ledger.add_record(爸爸, 300, 超市购物)ledger.add_record(妈妈, 1200, 房租)ledger.add_record(儿子, 68, 游戏充值)print(✅ 家庭账本已更新)五、README.md使用说明# Family Ledger Chain 简介基于区块链思想的家庭收支记账小程序每笔收支写入链式结构不可删除、不可篡改。 使用方法bashpython main.py 数据存储- ledger.json 保存全部账目- 家庭成员可随时查看与核对⚠️ 注意事项- 当前为本地单机版本- 不替代银行账单仅用于家庭内部对账六、核心知识点卡片Knowledge Cards模块 关键技术点区块链基础 区块、哈希链、创世区块数据不可篡 哈希依赖、链式校验家庭协作 多方可见、公开透明时间戳 顺序性、可追溯Python OOP 类封装、模块化设计创新思维 用“链”解决信任问题七、总结Conclusion✅ 本方案- ✅ 不需要数据库- ✅ 不需要服务器- ✅ 用“区块链思维”解决家庭信任- ✅ 每一笔钱都有“铁证” 一句话总结**让家庭账本像比特币一样可靠不再因为“谁花了钱”而吵架。**如果你愿意下一步可以- ✅ 升级为 多人签名记账- ✅ 增加 账目争议仲裁机制- ✅ 做成 Web / 微信小程序利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛