490 lines
12 KiB
Markdown
490 lines
12 KiB
Markdown
# charter-std 模块深度分析报告
|
||
|
||
**分析日期**: 2026-02-18
|
||
**模块版本**: N/A (标准库)
|
||
**分析状态**: ✅ 完成
|
||
|
||
---
|
||
|
||
## 一、模块概述
|
||
|
||
**模块名称**: charter-std
|
||
**功能定位**: Charter语言标准库 - 提供智能合约开发的标准功能和协议实现
|
||
**开发语言**: Charter (NAC智能合约语言)
|
||
**模块类型**: 标准库
|
||
|
||
Charter标准库是NAC公链智能合约开发的基础设施,提供了ACC协议、资产管理、DeFi功能、治理、主权合规等标准实现。开发者可以直接导入使用,无需从零开发。
|
||
|
||
---
|
||
|
||
## 二、目录结构
|
||
|
||
```
|
||
charter-std/
|
||
├── README.md # 模块说明(待完善)
|
||
├── acc/ # ACC协议标准(4个文件,2641行)
|
||
│ ├── acc20.ch # ACC-20可替代资产协议(557行)
|
||
│ ├── acc20_enhanced.ch # ACC-20增强版(733行)
|
||
│ ├── acc20c.ch # ACC-20C合规版(584行)
|
||
│ └── acc721.ch # ACC-721非同质化资产协议(771行)
|
||
├── asset/ # 资产管理(3个文件,1567行)
|
||
│ ├── gnacs.ch # GNACS编码系统(300行)
|
||
│ ├── lifecycle.ch # 资产生命周期管理(711行)
|
||
│ └── metadata.ch # 资产元数据管理(556行)
|
||
├── defi/ # DeFi功能(3个文件,2501行)
|
||
│ ├── lending.ch # 借贷协议(819行)
|
||
│ ├── liquidity.ch # 流动性池(807行)
|
||
│ └── marketplace.ch # 资产交易市场(875行)
|
||
├── governance/ # 治理(2个文件,1503行)
|
||
│ ├── proposal.ch # 提案系统(703行)
|
||
│ └── voting.ch # 投票系统(800行)
|
||
├── sovereignty/ # 主权合规(3个文件,2194行)
|
||
│ ├── compliance.ch # 合规验证(837行)
|
||
│ ├── registry.ch # 主权注册表(765行)
|
||
│ └── rules.ch # 主权规则(592行)
|
||
└── utils/ # 工具函数(3个文件,954行)
|
||
├── crypto.ch # 加密工具(380行)
|
||
├── math.ch # 数学库(476行)
|
||
└── time.ch # 时间处理(98行)
|
||
```
|
||
|
||
**代码统计**:
|
||
- 总行数: 11,364行
|
||
- Charter文件数: 18个
|
||
- 模块分类: 6个(acc, asset, defi, governance, sovereignty, utils)
|
||
|
||
---
|
||
|
||
## 三、核心模块详细分析
|
||
|
||
### 3.1 ACC协议标准(acc/)
|
||
|
||
**总代码量**: 2641行
|
||
**核心功能**: 定义NAC资产协议标准
|
||
|
||
#### 3.1.1 acc20.ch - ACC-20可替代资产协议
|
||
|
||
**文件大小**: 557行
|
||
**核心功能**: 类似ERC-20,但专为RWA设计
|
||
|
||
**接口定义**:
|
||
```charter
|
||
interface ACC20 {
|
||
// 查询函数
|
||
fn totalSupply() -> u256;
|
||
fn holdingsOf(owner: Address) -> u256;
|
||
fn name() -> String;
|
||
fn symbol() -> String;
|
||
fn decimals() -> u8;
|
||
fn gnacsCode() -> u48;
|
||
fn sovereigntyType() -> SovereigntyType;
|
||
|
||
// 转账函数
|
||
fn transfer(to: Address, amount: u256) -> bool;
|
||
fn transferFrom(from: Address, to: Address, amount: u256) -> bool;
|
||
|
||
// 授权函数
|
||
fn approve(spender: Address, amount: u256) -> bool;
|
||
fn allowance(owner: Address, spender: Address) -> u256;
|
||
fn increaseAllowance(spender: Address, addedValue: u256) -> bool;
|
||
fn decreaseAllowance(spender: Address, subtractedValue: u256) -> bool;
|
||
|
||
// RWA扩展函数
|
||
fn freeze(account: Address) -> bool;
|
||
fn unfreeze(account: Address) -> bool;
|
||
fn isFrozen(account: Address) -> bool;
|
||
fn complianceStatus(account: Address) -> u4;
|
||
}
|
||
```
|
||
|
||
**事件定义**:
|
||
- `Transfer` - 转账事件
|
||
- `Approval` - 授权事件
|
||
- `Mint` - 铸造事件
|
||
- `Burn` - 销毁事件
|
||
- `Freeze` - 冻结事件
|
||
- `Unfreeze` - 解冻事件
|
||
|
||
**标准实现**:
|
||
```charter
|
||
certificate ACC20Token with Sovereignty<A0> implements ACC20 {
|
||
let _name: String;
|
||
let _symbol: String;
|
||
let _decimals: u8;
|
||
let _gnacs_code: u48;
|
||
let _sovereignty_type: SovereigntyType;
|
||
let _total_supply: u256;
|
||
let _holdings: Map<Address, u256>;
|
||
let _allowances: Map<Address, Map<Address, u256>>;
|
||
let _frozen_accounts: Set<Address>;
|
||
let _compliance_status: Map<Address, u4>;
|
||
let _admin: Address;
|
||
|
||
// 完整的函数实现...
|
||
}
|
||
```
|
||
|
||
**RWA特色功能**:
|
||
1. **账户冻结**: 支持冻结/解冻账户,用于合规管理
|
||
2. **合规状态**: 每个账户有合规状态标记
|
||
3. **GNACS编码**: 集成GNACS资产分类系统
|
||
4. **主权类型**: 支持主权类型标记(A0, C0-C2, D0-D2)
|
||
|
||
#### 3.1.2 acc20_enhanced.ch - ACC-20增强版
|
||
|
||
**文件大小**: 733行
|
||
**扩展功能**:
|
||
- 批量转账
|
||
- 时间锁定
|
||
- 快照功能
|
||
- 暂停/恢复
|
||
- 黑白名单
|
||
|
||
#### 3.1.3 acc20c.ch - ACC-20C合规版
|
||
|
||
**文件大小**: 584行
|
||
**合规功能**:
|
||
- KYC/AML集成
|
||
- 交易限额
|
||
- 地域限制
|
||
- 合规报告
|
||
|
||
#### 3.1.4 acc721.ch - ACC-721非同质化资产协议
|
||
|
||
**文件大小**: 771行
|
||
**核心功能**: 类似ERC-721,用于NFT和独特资产
|
||
|
||
---
|
||
|
||
### 3.2 资产管理(asset/)
|
||
|
||
**总代码量**: 1567行
|
||
**核心功能**: 资产分类、生命周期、元数据管理
|
||
|
||
#### 3.2.1 gnacs.ch - GNACS编码系统
|
||
|
||
**文件大小**: 300行
|
||
**核心功能**: 全球新资产分类系统(Global New Asset Classification System)
|
||
|
||
**GNACS编码结构**:
|
||
```
|
||
48位编码 = 8个层级 × 6位
|
||
1.1.1.1.1.1.1.1
|
||
│ │ │ │ │ │ │ └─ L8: 子类别
|
||
│ │ │ │ │ │ └─── L7: 类别
|
||
│ │ │ │ │ └───── L6: 组
|
||
│ │ │ │ └─────── L5: 类
|
||
│ │ │ └───────── L4: 门
|
||
│ │ └─────────── L3: 界
|
||
│ └───────────── L2: 域
|
||
└─────────────── L1: 超域
|
||
```
|
||
|
||
**功能**:
|
||
- GNACS编码验证
|
||
- 编码解析
|
||
- 层级查询
|
||
- 编码转换
|
||
|
||
#### 3.2.2 lifecycle.ch - 资产生命周期管理
|
||
|
||
**文件大小**: 711行
|
||
**核心功能**: 管理资产从创建到销毁的完整生命周期
|
||
|
||
**生命周期阶段**:
|
||
1. **创建** (Creation)
|
||
2. **激活** (Activation)
|
||
3. **流通** (Circulation)
|
||
4. **冻结** (Frozen)
|
||
5. **暂停** (Suspended)
|
||
6. **退出** (Exit)
|
||
7. **销毁** (Destroyed)
|
||
|
||
#### 3.2.3 metadata.ch - 资产元数据管理
|
||
|
||
**文件大小**: 556行
|
||
**核心功能**: 资产元数据的存储和管理
|
||
|
||
**元数据字段**:
|
||
- 基础信息(名称、描述、图片)
|
||
- 属性(键值对)
|
||
- 文件(IPFS/Arweave链接)
|
||
- 版本控制
|
||
|
||
---
|
||
|
||
### 3.3 DeFi功能(defi/)
|
||
|
||
**总代码量**: 2501行
|
||
**核心功能**: 去中心化金融协议
|
||
|
||
#### 3.3.1 lending.ch - 借贷协议
|
||
|
||
**文件大小**: 819行
|
||
**核心功能**: 资产抵押借贷
|
||
|
||
**功能**:
|
||
- 存款/取款
|
||
- 借款/还款
|
||
- 利率计算
|
||
- 清算机制
|
||
- 健康因子
|
||
|
||
#### 3.3.2 liquidity.ch - 流动性池
|
||
|
||
**文件大小**: 807行
|
||
**核心功能**: AMM流动性池
|
||
|
||
**功能**:
|
||
- 添加/移除流动性
|
||
- 交换(Swap)
|
||
- LP代币
|
||
- 手续费分配
|
||
- 价格预言机
|
||
|
||
#### 3.3.3 marketplace.ch - 资产交易市场
|
||
|
||
**文件大小**: 875行
|
||
**核心功能**: RWA资产交易市场
|
||
|
||
**功能**:
|
||
- 挂单/撤单
|
||
- 购买/出售
|
||
- 竞价
|
||
- 拍卖
|
||
- 托管
|
||
|
||
---
|
||
|
||
### 3.4 治理(governance/)
|
||
|
||
**总代码量**: 1503行
|
||
**核心功能**: DAO治理系统
|
||
|
||
#### 3.4.1 proposal.ch - 提案系统
|
||
|
||
**文件大小**: 703行
|
||
**核心功能**: 提案创建和管理
|
||
|
||
**提案类型**:
|
||
- 参数修改
|
||
- 资金支出
|
||
- 合约升级
|
||
- 成员管理
|
||
|
||
#### 3.4.2 voting.ch - 投票系统
|
||
|
||
**文件大小**: 800行
|
||
**核心功能**: 投票机制
|
||
|
||
**投票方式**:
|
||
- 简单多数
|
||
- 绝对多数
|
||
- 加权投票
|
||
- 二次方投票
|
||
|
||
---
|
||
|
||
### 3.5 主权合规(sovereignty/)
|
||
|
||
**总代码量**: 2194行
|
||
**核心功能**: 主权类型和合规验证
|
||
|
||
#### 3.5.1 compliance.ch - 合规验证
|
||
|
||
**文件大小**: 837行
|
||
**核心功能**: 七层合规验证框架
|
||
|
||
**验证层级**:
|
||
1. KYC/AML验证
|
||
2. 资产真实性验证
|
||
3. 法律合规验证
|
||
4. 财务合规验证
|
||
5. 技术合规验证
|
||
6. 运营合规验证
|
||
7. 宪政合规验证
|
||
|
||
#### 3.5.2 registry.ch - 主权注册表
|
||
|
||
**文件大小**: 765行
|
||
**核心功能**: 主权实体注册和管理
|
||
|
||
**注册类型**:
|
||
- 个人(A0)
|
||
- 企业(C0-C2)
|
||
- 政府(D0-D2)
|
||
|
||
#### 3.5.3 rules.ch - 主权规则
|
||
|
||
**文件大小**: 592行
|
||
**核心功能**: 主权类型规则定义
|
||
|
||
**主权类型**:
|
||
```charter
|
||
enum SovereigntyType {
|
||
A0, // 个人主权
|
||
C0, // 企业主权(一般)
|
||
C1, // 企业主权(上市公司)
|
||
C2, // 企业主权(国有企业)
|
||
D0, // 政府主权(地方)
|
||
D1, // 政府主权(省级)
|
||
D2, // 政府主权(国家)
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3.6 工具函数(utils/)
|
||
|
||
**总代码量**: 954行
|
||
**核心功能**: 通用工具函数
|
||
|
||
#### 3.6.1 crypto.ch - 加密工具
|
||
|
||
**文件大小**: 380行
|
||
**功能**:
|
||
- SHA256/SHA3哈希
|
||
- ECDSA签名验证
|
||
- Merkle树
|
||
- 随机数生成
|
||
|
||
#### 3.6.2 math.ch - 数学库
|
||
|
||
**文件大小**: 476行
|
||
**功能**:
|
||
- 安全算术(防溢出)
|
||
- 百分比计算
|
||
- 幂运算
|
||
- 平方根
|
||
- 最大公约数/最小公倍数
|
||
|
||
#### 3.6.3 time.ch - 时间处理
|
||
|
||
**文件大小**: 98行
|
||
**功能**:
|
||
- 时间戳转换
|
||
- 日期计算
|
||
- 时间间隔
|
||
|
||
---
|
||
|
||
## 四、使用示例
|
||
|
||
### 创建ACC-20代币
|
||
|
||
```charter
|
||
use charter_std::acc::acc20::ACC20Token;
|
||
|
||
contract MyToken {
|
||
let token: ACC20Token;
|
||
|
||
constructor() {
|
||
self.token = ACC20Token::new(
|
||
"My Token",
|
||
"MTK",
|
||
18,
|
||
0x010101010101, // GNACS编码
|
||
1000000 * 10**18 // 初始供应量
|
||
);
|
||
}
|
||
}
|
||
```
|
||
|
||
### 使用借贷协议
|
||
|
||
```charter
|
||
use charter_std::defi::lending::LendingPool;
|
||
|
||
contract MyLending {
|
||
let pool: LendingPool;
|
||
|
||
fn deposit(amount: u256) {
|
||
self.pool.deposit(msg.sender, amount);
|
||
}
|
||
|
||
fn borrow(amount: u256) {
|
||
self.pool.borrow(msg.sender, amount);
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 五、依赖关系
|
||
|
||
### 内部依赖
|
||
- `asset::gnacs` ← 被acc、sovereignty使用
|
||
- `sovereignty::rules` ← 被acc、asset使用
|
||
- `utils::math` ← 被defi使用
|
||
- `utils::crypto` ← 被governance使用
|
||
|
||
### 外部依赖
|
||
- **nac-udm**: 提供基础类型定义
|
||
- **charter-compiler**: 编译标准库代码
|
||
|
||
---
|
||
|
||
## 六、优缺点分析
|
||
|
||
### 优点
|
||
1. ✅ 功能完整,覆盖ACC协议、DeFi、治理、合规等
|
||
2. ✅ 代码量大(11,364行),实现详细
|
||
3. ✅ 模块化设计,易于导入使用
|
||
4. ✅ RWA特色功能(GNACS、主权类型、合规)
|
||
5. ✅ 文档注释完善(Charter文档注释)
|
||
6. ✅ 支持契约式编程(requires/ensures)
|
||
|
||
### 缺点
|
||
1. ⚠️ README文档不完整("待补充")
|
||
2. ⚠️ 缺少使用示例和教程
|
||
3. ⚠️ 缺少单元测试
|
||
4. ⚠️ 缺少版本管理(没有Cargo.toml)
|
||
5. ⚠️ 缺少标准库文档网站
|
||
|
||
---
|
||
|
||
## 七、待完成工作
|
||
|
||
1. ⏳ 完善README文档
|
||
2. ⏳ 添加完整的使用示例
|
||
3. ⏳ 编写单元测试(使用Charter测试框架)
|
||
4. ⏳ 创建标准库文档网站
|
||
5. ⏳ 添加版本管理
|
||
6. ⏳ 创建标准库包管理器
|
||
7. ⏳ 添加更多DeFi协议(Staking、Options等)
|
||
8. ⏳ 添加跨链桥接标准
|
||
|
||
---
|
||
|
||
## 八、与其他模块的关系
|
||
|
||
### 上游依赖
|
||
- **nac-udm**: 提供类型系统
|
||
- **charter-compiler**: 编译标准库
|
||
|
||
### 下游使用
|
||
- **所有Charter智能合约**: 导入使用标准库
|
||
- **nac-contract-deployer**: 部署使用标准库的合约
|
||
|
||
### 编译方式
|
||
标准库文件在编译时被charter-compiler链接到用户合约中,类似于Rust的std库。
|
||
|
||
---
|
||
|
||
## 九、总结
|
||
|
||
charter-std是一个功能丰富、设计完善的智能合约标准库。它提供了11,364行高质量的Charter代码,涵盖ACC协议、资产管理、DeFi、治理、合规等NAC公链开发的核心功能。
|
||
|
||
标准库的设计充分体现了NAC公链的RWA特色,包括GNACS编码、主权类型、七层合规验证等独特功能。代码质量高,文档注释完善,模块化设计使其易于使用和扩展。
|
||
|
||
主要不足在于缺少README文档、使用示例和测试。建议优先完善文档和示例,然后添加测试框架和标准库文档网站。
|
||
|
||
**完成度**: 80%
|
||
**生产就绪**: ⚠️ 需要补充文档和测试
|
||
**建议**: 补充文档和测试后可用于生产环境
|
||
|
||
---
|
||
|
||
**分析完成时间**: 2026-02-18 23:30
|
||
**下一个模块**: nac-udm(统一定义模块)
|