# 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 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; let _allowances: Map>; let _frozen_accounts: Set
; let _compliance_status: Map; 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(统一定义模块)