12 KiB
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设计
接口定义:
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- 解冻事件
标准实现:
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特色功能:
- 账户冻结: 支持冻结/解冻账户,用于合规管理
- 合规状态: 每个账户有合规状态标记
- GNACS编码: 集成GNACS资产分类系统
- 主权类型: 支持主权类型标记(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行
核心功能: 管理资产从创建到销毁的完整生命周期
生命周期阶段:
- 创建 (Creation)
- 激活 (Activation)
- 流通 (Circulation)
- 冻结 (Frozen)
- 暂停 (Suspended)
- 退出 (Exit)
- 销毁 (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行
核心功能: 七层合规验证框架
验证层级:
- KYC/AML验证
- 资产真实性验证
- 法律合规验证
- 财务合规验证
- 技术合规验证
- 运营合规验证
- 宪政合规验证
3.5.2 registry.ch - 主权注册表
文件大小: 765行
核心功能: 主权实体注册和管理
注册类型:
- 个人(A0)
- 企业(C0-C2)
- 政府(D0-D2)
3.5.3 rules.ch - 主权规则
文件大小: 592行
核心功能: 主权类型规则定义
主权类型:
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代币
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 // 初始供应量
);
}
}
使用借贷协议
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: 编译标准库代码
六、优缺点分析
优点
- ✅ 功能完整,覆盖ACC协议、DeFi、治理、合规等
- ✅ 代码量大(11,364行),实现详细
- ✅ 模块化设计,易于导入使用
- ✅ RWA特色功能(GNACS、主权类型、合规)
- ✅ 文档注释完善(Charter文档注释)
- ✅ 支持契约式编程(requires/ensures)
缺点
- ⚠️ README文档不完整("待补充")
- ⚠️ 缺少使用示例和教程
- ⚠️ 缺少单元测试
- ⚠️ 缺少版本管理(没有Cargo.toml)
- ⚠️ 缺少标准库文档网站
七、待完成工作
- ⏳ 完善README文档
- ⏳ 添加完整的使用示例
- ⏳ 编写单元测试(使用Charter测试框架)
- ⏳ 创建标准库文档网站
- ⏳ 添加版本管理
- ⏳ 创建标准库包管理器
- ⏳ 添加更多DeFi协议(Staking、Options等)
- ⏳ 添加跨链桥接标准
八、与其他模块的关系
上游依赖
- 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(统一定义模块)