NAC_Blockchain/docs/modules/charter-std分析报告.md

12 KiB
Raw Permalink Blame History

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特色功能:

  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行
核心功能: 主权类型规则定义

主权类型:

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: 编译标准库代码

六、优缺点分析

优点

  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统一定义模块