Pact-Community-Organization/pact-contract-catalog
GitHub: Pact-Community-Organization/pact-contract-catalog
由 PCO 维护的 Pact 智能合约目录,提供经过审计的可复用合约模板和链上合约注册表参考。
Stars: 1 | Forks: 1
# Pact 合约目录
可复用、受信任的 Pact 智能合约,由 Pact 社区组织 (PCO) 维护,致力于实现一个使命:**让企业能够轻松、安全地开始使用智能合约进行构建。**
该目录提供了两个明确区分的产品(参见 [ADR-001](docs/adr/ADR-001-registry-library-split.md)):
- **[`contracts/library/`](contracts/library/) — 库 (Library)**:由 PCO 编写的可部署模板。从这里开始。
- **[`contracts/registry/`](contracts/registry/) — 注册表 (Registry)**:一个观测站,记录已经存在于链上的合约,原封不动地进行编目以供参考。
## 库
八个生产级模板,涵盖了大多数项目所需的基础设施。每一个都必须经过同样三道关卡:**阻塞性 CI 测试套件**、**静态分析检查**,以及**独立的对抗性安全审查**,其审查结果和修复方案都记录在条目的 `AUDIT.md` 中——包括尝试过并被成功防御的攻击。
| 模板 | 它是什么 |
|---|---|
| [token-fungible](contracts/library/token-fungible/) | 一个强化版的 `fungible-v2` + `fungible-xchain-v1` token:coin 模式守护强制执行、受治理的铸造、保留名称保护、跨链步骤语义。 |
| [gas-station](contracts/library/gas-station/) | 防止资金被抽干的 gas 赞助:基于*实际*链上 gas(绝不使用签名者提供的数值)的边界限制和核算,以及基于用户的链上白名单。 |
| [multisig-treasury](contracts/library/multisig-treasury/) | M-of-N 金库:存放在受 capability 保护的保险库中的 KDA,异步的提议/批准/执行机制,以及撤销过期批准的轮换机制。 |
| [vesting](contracts/library/vesting/) | 预先托管的悬崖期 + 线性归属:受益人绝不依赖于资助者的偿付能力;撤销仅返还尚未归属的部分;治理合约没有任何资金提取路径。 |
| [dao-voting](contracts/library/dao-voting/) | 带有法定人数 + 阈值的会员投票制:针对每个提案的通过标准快照,轮换机制会撤销被泄露成员尚未完成的投票。与金库模板配合使用。 |
| [nft-collection-policy](contracts/library/nft-collection-policy/) | 一个 marmalade-v2 具体策略:具有规模上限的创建者权限集合和严格的一对一 NFT 不变量,并针对真实的 marmalade 账本进行了测试。 |
| [oracle-feed](contracts/library/oracle-feed/) | 具有故障关闭消费机制的中位数数据/价格馈送:链上分配的时间戳、过期时间窗口、作为即时撤销手段的发布者轮换,外加一个实用的消费者模式示例。 |
| [hello-world](contracts/library/hello-world/) | 最简启动模板:模块结构、治理机制和真实的测试套件。 |
所有条目目前都带有 `audit_status: self-reviewed` 标签——这是一个明确的声明,而不是凭感觉:请参阅 [审计状态阶梯](docs/CONTRACT_POLICIES.md)(§3.1),了解每个级别的确切含义以及所需的证据。本目录中没有任何内容在不指明审计者身份的情况下自称“已通过审计”。
### 开始一个项目
1. 浏览上表或自动生成的[合约索引](docs/index.md)。
2. 将模板目录复制到你的项目中;根据需要调整 namespace、keyset 和业务规则。
3. 阅读条目的 `README.md`(用法、部署清单、已知限制)和 `AUDIT.md`(威胁模型、历史发现记录)——它们篇幅很短,专为易于阅读而编写。
4. 运行并扩展同目录下的测试套件(见下文)。
5. **在主网上线前,先在 devnet 上进行验证。** 每个条目的 README 都会提到这一点,因为这至关重要:某一类 KDA-CE bug(在 `enforce` 条件内进行表读取)在 REPL 中是不可见的。这些模板采用了节点安全的模式编写,但你所作的调整同样需要这种验证。
### 测试
库的测试套件是**自包含的**——它们会从此仓库的注册表树中加载自身的依赖项(coin、kip 接口、marmalade)。在你的 PATH 中配置好 [Pact 5 二进制文件](https://github.com/kadena-io/pact-5) 后:
```
cd contracts/library/multisig-treasury/examples
pact treasury-test.repl
```
CI 会在每个 PR 上将每个库套件作为阻塞检查运行,此外还会运行目录验证器和索引新鲜度检查。
## 注册表
[`contracts/registry/`](contracts/registry/) 对已经存在的合约进行了编目,并按依赖层进行了分组:`kip/`(标准接口)、`core/`(预部署的链基础设施)、`marmalade/`(NFT 框架)、`ecosystem/`(经普查精选的第三方主网模块)以及 `community/`。这些是**逐字快照**——用作集成的只读参考、教育和尽职调查,而不是项目的起点。有关分层模型和普查方法,请参见 [ARCHITECTURE.md](ARCHITECTURE.md)。
## 治理
本仓库遵循 [PCO Foundation](https://github.com/Pact-Community-Organization/foundation) 中定义的治理模型。合约策略:[docs/CONTRACT_POLICIES.md](docs/CONTRACT_POLICIES.md)。架构决策:[docs/adr/](docs/adr/)。安全披露:[SECURITY.md](SECURITY.md)。
## 许可证
Apache-2.0 — 详见 [LICENSE](LICENSE)。
标签:Pact, Web3, 区块链, 智能合约, 模板库