name: compact-core:contract-patterns description: 用于实现常见的Compact合约模式,例如投票系统、托管、代币转移、访问控制、拍卖、注册表,或寻找用于Midnight区块链开发的可重用合约模板和设计模式时使用。
合约模式
用于Midnight开发的可重用Compact合约模式和最佳实践
概述
本技能提供了Midnight区块链的Compact合约模式综合目录。模式范围从简单的构建块到复杂的多合约系统。
模式类别
-
简单模式(约10个重点示例)
- 基础状态管理
- 访问控制原语
- 基于时间的逻辑
- 密码学承诺
-
深度实现(3个综合系统)
- 隐私投票系统
- 多方代币托管
- 基于角色的访问注册表
快速导航
简单模式
| 模式 | 文件 | 使用场景 |
|---|---|---|
| 计数器 | examples/simple/counter.compact |
基础状态递增 |
| 所有权 | examples/simple/ownership.compact |
单所有者控制 |
| 时间锁 | examples/simple/time-lock.compact |
延迟执行 |
| 白名单 | examples/simple/whitelist.compact |
成员资格验证 |
| 速率限制 | examples/simple/rate-limit.compact |
操作限流 |
| 多重签名 | examples/simple/multi-sig.compact |
N-of-M 批准 |
| 可暂停 | examples/simple/pausable.compact |
紧急停止 |
| 可升级 | examples/simple/upgradeable.compact |
逻辑迁移 |
| 费用收集器 | examples/simple/fee-collector.compact |
支付处理 |
| 随机选择 | examples/simple/random-selection.compact |
提交-揭示随机性 |
深度系统
| 系统 | 目录 | 描述 |
|---|---|---|
| 隐私投票 | examples/deep-dives/private-voting/ |
使用ZK证明的完整匿名投票 |
| 代币托管 | examples/deep-dives/token-escrow/ |
带条件的多方托管 |
| 访问注册表 | examples/deep-dives/access-registry/ |
基于角色和Merkle证明的访问控制 |
参考资料
使用示例
查找模式
“给我看看计数器模式”
→ 阅读 examples/simple/counter.compact
理解复杂系统
“如何实现隐私投票?”
→ 先阅读 references/private-voting.md,然后探索 examples/deep-dives/private-voting/
适配模式
“我需要带时间锁的多重签名”
→ 组合 time-lock.compact + multi-sig.compact 模式
最佳实践
- 从简单开始:使用简单模式作为构建块
- 理解隐私:了解每个模式中什么是公开的,什么是私有的
- 充分测试:每个模式都包含测试注意事项
- 谨慎组合:混合模式时,验证隐私保证
- 记录意图:添加注释解释业务逻辑
依赖项
所有模式都使用标准库导入:
import CompactStandardLibrary;
一些高级模式可能需要额外导入:
import CompactStandardLibrary.Merkle;
import CompactStandardLibrary.Crypto;