租房水电自动核算程序,表计数据上链,按用量自动结算,避免房东乱加价,数据造假。
一、实际应用场景描述
在一线城市合租场景中:
- 租客每月缴纳水电费
- 表计数据由房东/管家人工抄录
- 费用通过微信 / 现金结算
- 缺乏透明依据,争议频发
👉 本系统目标:
- 水表 / 电表数据上链
- 自动按用量结算
- 规则公开、不可篡改
- 避免房东随意加价、造假
二、引入痛点(Why Blockchain?)
传统方式 问题
人工抄表 易篡改、记错
口头/微信 无凭证
房东单方定价 不透明
无历史可查 纠纷无解
✅ 区块链能带来什么?
- ✅ 数据不可篡改
- ✅ 全过程可审计
- ✅ 规则代码化(自动结算)
- ✅ 多方信任(租客 + 房东)
⚠️ 本 Demo 使用 Python 私有链模型
不依赖以太坊,降低部署成本
三、核心创新点 & 设计思路
1️⃣ 核心模型
表计读数 → 上链存证 → 自动计算用量
↓
按规则自动结算
↓
账单上链 / 可查询
2️⃣ 防作弊机制
- ✅ 每次读数必须递增
- ✅ 历史数据不可修改
- ✅ 结算规则写入代码
- ✅ 所有账单可溯源
3️⃣ 创新点
✅ “读数即事实”
✅ “账单即智能合约”
✅ 租金水电分离、透明化
四、核心逻辑讲解
🔗 数据结构
Block:
├── index
├── timestamp
├── meter_reading (表计数据)
├── landlord_signature
├── previous_hash
└── hash
⚙️ 业务流程
1. 房东或智能表上传读数
2. 系统校验是否递增
3. 读数上链
4. 自动计算本月用量
5. 按单价生成账单
6. 账单上链
五、Python 核心代码(模块化)
📁 项目结构
rent_chain/
│
├── block.py # 区块
├── blockchain.py # 链
├── meter.py # 表计读数
├── billing.py # 自动结算
├── main.py # 入口
└── README.md
1️⃣ block.py(区块)
import hashlib
import time
class Block:
def __init__(self, index, data, previous_hash):
self.index = index
self.timestamp = time.time()
self.data = data
self.previous_hash = previous_hash
self.hash = self.calculate_hash()
def calculate_hash(self):
content = f"{self.index}{self.timestamp}{self.data}{self.previous_hash}"
return hashlib.sha256(content.encode()).hexdigest()
2️⃣ meter.py(表计读数)
class MeterReading:
def __init__(self, property_id, meter_type, reading):
self.property_id = property_id # 房屋ID
self.meter_type = meter_type # water / electric
self.reading = reading # 当前读数
self.timestamp = time.time()
def to_dict(self):
return {
"property": self.property_id,
"type": self.meter_type,
"reading": self.reading,
"time": self.timestamp
}
3️⃣ billing.py(自动结算)
PRICE = {
"electric": 1.2, # 元/度
"water": 5.0 # 元/吨
}
def calculate_bill(prev_reading, curr_reading):
usage = curr_reading - prev_reading
rate = PRICE[curr_reading.meter_type]
total = usage * rate
return {
"usage": usage,
"rate": rate,
"total": round(total, 2)
}
✅ 结算规则写死在代码里,谁也改不了
4️⃣ blockchain.py(链)
from block import Block
class Blockchain:
def __init__(self):
self.chain = [self.genesis_block()]
def genesis_block(self):
return Block(0, {"msg": "Genesis"}, "0")
def add_block(self, data):
last = self.chain[-1]
block = Block(len(self.chain), data, last.hash)
self.chain.append(block)
5️⃣ main.py(演示)
from blockchain import Blockchain
from meter import MeterReading
from billing import calculate_bill
chain = Blockchain()
# 上月读数
prev = MeterReading("R001", "electric", 100)
# 本月读数
curr = MeterReading("R001", "electric", 130)
# 上链
chain.add_block(curr.to_dict())
# 自动结算
bill = calculate_bill(prev.reading, curr)
print("本月电费账单:", bill)
print("区块链是否合法:", chain.chain[0].hash == chain.chain[1].previous_hash)
六、README 示例
# Rent Utility Blockchain
基于区块链的租房水电自动核算系统
## 功能
- 表计读数上链
- 自动计算水电费
- 防篡改、防乱加价
## 使用方式
bash
python main.py
## 适用场景
- 长租公寓
- 合租水电分摊
- 二房东透明化管理
七、核心知识点卡片
📌 知识点卡片
- ✅ 区块链基础结构
- ✅ 哈希防篡改
- ✅ 链式数据验证
- ✅ 读数递增校验
- ✅ 规则代码化(类智能合约)
- ✅ 资产数字化(水电即费用)
八、总结
本项目将“租房水电结算”这一高频民生问题,
通过 区块链 + 自动结算逻辑 重构为可信流程。
✅ 读数不可改
✅ 算法算钱
✅ 规则公开
虽然当前为 Python 单机 Demo,
但已具备向 IoT 智能表 + 联盟链 演进的完整路径,
是典型的“区块链 + 民生治理”创新应用。
如果你需要,可以继续:
- ✅ 改成 Flask Web 可视化版
- ✅ 增加 租客签名 / 房东私钥
- ✅ 扩展为 多房屋、多表计
- ✅ 写成 课程答辩演讲稿
- ✅ 输出成 技术博客(含配图)
利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!
