⚠️ 说明:这是本地模拟区块链思路的演示程序,用于说明“民宿入住规则与损坏赔偿自动化执行”的技术逻辑,不等同于法律合同或仲裁系统。
一、实际应用场景描述
民宿/短租场景中,房东与房客常见矛盾包括:
- 入住规则理解不一致(人数、宠物、吸烟)
- 退房时物品损坏责任不清
- 赔偿金额口头约定,执行困难
- 纠纷依赖平台客服,处理周期长
本方案目标:
✅ 入住规则、押金规则、赔偿标准上链固化
✅ 入住、退房、损坏申报形成不可篡改记录
✅ 赔偿逻辑自动执行(教学级模拟)
✅ 减少人为争议,提高透明度
二、引入痛点(技术视角)
痛点 传统方式 问题
入住规则 文字描述 可事后否认
损坏认定 照片/聊天 易扯皮
赔偿执行 人工协商 执行难
记录保存 平台内部 不透明
区块链适合解决的问题特征:
- 多方协作
- 规则需事先明确
- 行为需留痕
- 执行逻辑可验证
三、核心逻辑讲解(简化模型)
1️⃣ 上链对象
CheckInRule
DamagePolicy
CheckInRecord
DamageClaim
CompensationExecution
2️⃣ 区块结构(通用)
Block:
├─ index
├─ timestamp
├─ record_type
├─ payload (JSON)
├─ actor (房东 / 房客)
├─ prev_hash
└─ hash
3️⃣ 自动执行逻辑(模拟)
入住:
规则已上链 → 房客确认 → 入住记录上链
退房:
无损坏 → 正常结算
有损坏 → 匹配损坏策略 → 自动计算赔偿
✅ 不代替法律
✅ 只保证:规则在事前已公开、不可更改
四、代码模块化实现(Python)
📁 项目结构
bnb_contract_chain/
├── block.py # 区块结构
├── blockchain.py # 链管理
├── rule.py # 入住与赔偿规则
├── checkin.py # 入住记录
├── damage.py # 损坏申报
├── executor.py # 自动执行逻辑
└── main.py # 示例运行
1️⃣ block.py
import hashlib
import json
import time
class Block:
def __init__(self, index, record_type, payload, actor, prev_hash):
self.index = index
self.timestamp = time.time()
self.record_type = record_type
self.payload = payload
self.actor = actor
self.prev_hash = prev_hash
self.hash = self.calculate_hash()
def calculate_hash(self):
data = json.dumps({
"index": self.index,
"timestamp": self.timestamp,
"record_type": self.record_type,
"payload": self.payload,
"actor": self.actor,
"prev_hash": self.prev_hash
}, sort_keys=True)
return hashlib.sha256(data.encode()).hexdigest()
2️⃣ blockchain.py
from block import Block
class Blockchain:
def __init__(self):
self.chain = [self.create_genesis_block()]
def create_genesis_block(self):
return Block(0, "genesis", {}, "SYSTEM", "0")
def add_record(self, record_type, payload, actor):
latest = self.chain[-1]
new_block = Block(
index=latest.index + 1,
record_type=record_type,
payload=payload,
actor=actor,
prev_hash=latest.hash
)
self.chain.append(new_block)
def is_chain_valid(self):
for i in range(1, len(self.chain)):
curr = self.chain[i]
prev = self.chain[i - 1]
if curr.prev_hash != prev.hash:
return False
return True
3️⃣ rule.py
class CheckInRule:
def __init__(self, max_guest, allow_pet, allow_smoke, deposit):
self.max_guest = max_guest
self.allow_pet = allow_pet
self.allow_smoke = allow_smoke
self.deposit = deposit
def to_dict(self):
return {
"max_guest": self.max_guest,
"allow_pet": self.allow_pet,
"allow_smoke": self.allow_smoke,
"deposit": self.deposit
}
class DamagePolicy:
def __init__(self, item, compensation):
self.item = item
self.compensation = compensation
def to_dict(self):
return {
"item": self.item,
"compensation": self.compensation
}
4️⃣ checkin.py
class CheckInRecord:
def __init__(self, guest, guest_count, has_pet, has_smoke):
self.guest = guest
self.guest_count = guest_count
self.has_pet = has_pet
self.has_smoke = has_smoke
def to_dict(self):
return {
"guest": self.guest,
"guest_count": self.guest_count,
"has_pet": self.has_pet,
"has_smoke": self.has_smoke
}
5️⃣ damage.py
class DamageClaim:
def __init__(self, guest, item, description):
self.guest = guest
self.item = item
self.description = description
def to_dict(self):
return {
"guest": self.guest,
"item": self.item,
"description": self.description
}
6️⃣ executor.py
from blockchain import Blockchain
class CompensationExecutor:
def __init__(self, chain: Blockchain, damage_policies):
self.chain = chain
self.damage_policies = damage_policies
def execute(self, guest):
# 查找最新损坏申报
damage_record = None
for block in reversed(self.chain.chain):
if block.record_type == "damage" and block.payload.get("guest") == guest:
damage_record = block.payload
break
if not damage_record:
return {"status": "no_damage", "deduct": 0}
item = damage_record["item"]
policy = self.damage_policies.get(item)
if not policy:
return {"status": "policy_not_found", "deduct": 0}
return {
"status": "compensation_executed",
"deduct": policy.compensation
}
7️⃣ main.py
from blockchain import Blockchain
from rule import CheckInRule, DamagePolicy
from checkin import CheckInRecord
from damage import DamageClaim
from executor import CompensationExecutor
chain = Blockchain()
# 规则上链
rule = CheckInRule(max_guest=2, allow_pet=False, allow_smoke=False, deposit=500)
chain.add_record("rule", rule.to_dict(), "HOST")
# 损坏赔偿规则
damage_policies = {
"sofa": DamagePolicy("sofa", 200),
"lamp": DamagePolicy("lamp", 100)
}
for item, policy in damage_policies.items():
chain.add_record("damage_policy", policy.to_dict(), "HOST")
# 入住记录
checkin = CheckInRecord("GuestA", 2, False, False)
chain.add_record("checkin", checkin.to_dict(), "GuestA")
# 损坏申报
damage = DamageClaim("GuestA", "sofa", "沙发划痕")
chain.add_record("damage", damage.to_dict(), "HOST")
# 自动执行赔偿
executor = CompensationExecutor(chain, damage_policies)
result = executor.execute("GuestA")
print(result)
print("链是否合法:", chain.is_chain_valid())
五、README(精简版)
# B&B Stay Contract Chain (Demo)
## 功能
- 入住规则与损坏赔偿标准上链
- 入住与损坏行为记录不可篡改
- 赔偿逻辑自动执行(模拟)
## 运行
bash
python main.py
## 适用场景
- 民宿合约教学
- 自动化执行模型研究
- 区块链规则固化示例
## 限制
- 不替代法律合同
- 不验证现实事实真伪
- 非真实资金执行
六、核心知识点卡片
模块 知识点
Hash 数据指纹
区块链 不可篡改
规则上链 合约前置
自动执行 确定性逻辑
行为记录 事后可查
边界 技术 ≠ 司法
七、去营销化与中立声明
- 本示例不构成法律合同
- 不替代平台规则与客服仲裁
- 不处理真实资金
- 仅用于软件工程与信息系统教学
八、总结
✅ 本方案展示了:
- 如何将民宿入住规则转化为链上合约
- 如何通过事前规则 + 行为记录减少争议
- 如何用 Python 构建一个最小自动化执行模型
📌 核心思想是:
把“事后吵架”变成“事前写进代码”
如果你愿意,下一步可以:
- 增加 条件触发式智能合约风格逻辑
- 模拟 多房源、多房东
- 或结合 数字签名 + 身份体系
利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!