NAC_Blockchain/memory/decisions/acc20c_implementation.md

241 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ACC-20C兼容层实现记录
## 决策日期
2026-02-07
## 背景
### 为什么需要ACC-20C
ACC-20C不是"妥协",而是**战略性桥梁**
1. **现实情况**
- 以太坊生态拥有数百万用户和成熟基础设施
- NAC是新生态需要冷启动
- 完全隔离会导致流动性不足
2. **战略价值**
- **短期1-2年**: 让ACC-20资产在OpenSea等市场流通
- **中期2-3年**: 逐步引导用户使用NAC原生工具
- **长期3年+**: ACC-20C变成可选而非必需
3. **合规不妥协**
- 即使包装成ERC-721仍保留KYC/AML检查
- 合规状态在NAC链上验证
- 冻结机制跨链同步
## 架构设计
```
┌─────────────────────────────────────────────────────────┐
│ NAC原生生态核心
│ ┌──────────────────────────────────────────────────┐ │
│ │ ACC-20 Enhanced + GNACS + 主权管理 + 合规引擎 │ │
│ └──────────────────────────────────────────────────┘ │
│ ↕ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ ACC-20C兼容层战略桥梁 │ │
│ │ - 包装器合约 │ │
│ │ - 状态同步引擎 │ │
│ │ - 元数据生成器 │ │
│ │ - 权限代理系统 │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ 以太坊生态(流动性来源) │
│ ERC-721标准 + OpenSea + MetaMask + DeFi协议 │
└─────────────────────────────────────────────────────────┘
```
## 实现的模块
### 1. 包装器合约wrapper.rs- 537行
**核心功能**
- 锁定ACC-20资产
- 铸造ERC-721 NFT
- 解包装流程
- 冻结/解冻机制
**关键结构**
```rust
pub struct ACC20CWrapper {
pub nac_contract_address: Address,
pub erc721_contract_address: Address,
pub underlying_asset: Address,
pub config: WrapperConfig,
pub wrapped_assets: HashMap<u256, WrappedAsset>,
pub locked_holdings: HashMap<Address, u128>,
}
```
**包装流程**
1. 验证包装器状态
2. 验证合规性
3. 锁定ACC-20资产
4. 生成ERC-721 NFT
5. 记录包装信息
**解包装流程**
1. 验证TokenId存在
2. 验证所有权
3. 销毁ERC-721 NFT
4. 解锁ACC-20资产
5. 转回原始所有者
### 2. 状态同步引擎sync_engine.rs- 695行
**核心功能**
- 监听两条链的事件
- 同步状态变更
- 处理跨链消息
- 重试机制
**同步类型**
- Wrap: NAC → ETH包装
- Unwrap: ETH → NAC解包装
- Transfer: ETH内部转账
- Freeze: NAC → ETH冻结
- Unfreeze: NAC → ETH解冻
**关键结构**
```rust
pub struct SyncEngine {
pub nac_chain_id: u64,
pub eth_chain_id: u64,
pub nac_bridge_address: Address,
pub eth_bridge_address: EthAddress,
pub pending_syncs: VecDeque<SyncTask>,
pub completed_syncs: HashMap<Hash, SyncTask>,
}
```
### 3. 元数据生成器metadata_generator.rs- 328行
**核心功能**
- 生成ERC-721元数据
- 包含GNACS信息
- 符合OpenSea标准
**元数据属性**
1. Asset Symbol - 资产符号
2. Wrapped Amount - 包装数量
3. GNACS Code - GNACS编码
4. Asset Category - 资产类别
5. Sovereignty Type - 主权类型
6. Compliance Level - 合规级别
7. Jurisdiction - 司法辖区
8. Risk Level - 风险等级
9. Compliance Status - 合规状态
10. Fragmentable - 是否可碎片化
11. Cross-Chain Enabled - 是否启用跨链
12. Valuation (XTZH) - 估值
13. Created At - 创建时间
**关键结构**
```rust
pub struct ERC721Metadata {
pub name: String,
pub description: String,
pub image: String,
pub external_url: Option<String>,
pub attributes: Vec<MetadataAttribute>,
pub background_color: Option<String>,
}
```
### 4. 权限代理系统permission_proxy.rs- 481行
**核心功能**
- 跨链权限验证
- 合规检查代理
- 白名单/黑名单管理
- KYC/AML缓存
**检查流程**
1. 获取NAC地址从以太坊地址映射
2. 检查黑名单
3. 检查白名单(如果启用)
4. 检查KYC
5. 检查AML
**关键结构**
```rust
pub struct PermissionProxy {
pub nac_proxy_address: Address,
pub eth_proxy_address: EthAddress,
pub address_mapping: HashMap<EthAddress, Address>,
pub kyc_cache: HashMap<Address, KYCRecord>,
pub aml_cache: HashMap<Address, AMLRecord>,
pub whitelist: HashMap<Address, WhitelistEntry>,
pub blacklist: HashMap<Address, BlacklistEntry>,
}
```
## 代码统计
| 模块 | 文件 | 行数 | 功能 |
|------|------|------|------|
| 模块主文件 | mod.rs | 111 | 模块导出和文档 |
| 包装器合约 | wrapper.rs | 537 | 包装/解包装逻辑 |
| 状态同步引擎 | sync_engine.rs | 695 | 跨链状态同步 |
| 元数据生成器 | metadata_generator.rs | 328 | ERC-721元数据 |
| 权限代理系统 | permission_proxy.rs | 481 | 权限验证 |
| **总计** | **5个文件** | **2,152行** | **完整实现** |
## NAC合规性
**术语NAC化**
- Holdings不是balance
- Asset不是Token
- Certificate不是NFT
- Address不是account
**哈希算法**
- Blake3不是SHA256/Keccak256
**合规内置**
- KYC级别验证
- AML状态检查
- 司法辖区验证
- 白名单/黑名单
**主权管理**
- A0-G5主权类型
- 主权规则验证
- 转让限制检查
## 重要说明
⚠️ **ACC-20C不是NAC的核心而是生态扩展**
- NAC的核心是ACC-20 Enhanced + GNACS + 主权管理
- ACC-20C只是为了冷启动和流动性
- 随着NAC生态成熟ACC-20C的重要性会逐渐降低
- 最终目标是建立完全独立的NAC原生生态
## 下一步
### 阶段3完善主权管理系统
- 实现主权转换逻辑
- 添加主权规则验证
- 实现主权历史追踪
### 阶段4扩展Charter标准库
- 添加`charter-std/acc/acc20c.ch`
- 添加`charter-std/bridge/`模块
- 创建完整示例
### 阶段5集成测试和打包交付
- 端到端测试
- 性能测试
- 文档完善
- 打包交付
## 参考文档
- 《NAC原生技术栈完全去以太坊化架构设计GNACS增强版
- 《ACC-20兼容层协议ACC-20C完整阐述》
- NAC核心原则nac_core_principles.md