ACC-20C 兼容层协议实施日志
工单编号: ACC-20C-001
实施日期: 2026-03-08
实施版本: v1.2.0
状态: 已完成并通过全覆盖测试
一、工单目标
将 ACC-20C 兼容层协议完整实现并部署到 NAC 主网,深度融合 CBPP 共识机制,使用 Charter 语言重写核心合约,废弃 PermissionProxy 改为 CNNL 宪法条款。
二、架构设计决策
2.1 ACC-20C 在 NAC 三层架构中的位置
L2 宪法治理层 <-- acc20c_clauses.cnnl(CNNL 宪法条款 A53-A56)
|
L1 宪法协议层 <-- acc20c_wrapper.ch / acc20c_metadata.ch / acc20c_sync.ch(Charter 合约)
nac-acc-service(Rust API 服务,端口 9554)
|
L0 网络层 <-- nac-cbpp-scanner(区块扫描器,通过 NAC-Lens 获取数据)
2.2 关键架构变化(相对于原 ACC-20C 文档)
| 原设计(前 CBPP 时代) |
现实现(CBPP 主网) |
| PermissionProxy 合约白名单 |
CNNL 宪法条款 A53-A56,由 CEE 强制执行 |
| 以太坊事件监听 |
CBPP 区块扫描 + NAC-Lens SDK |
| EVM 合约 |
Charter 语言合约(NVM 执行) |
| JSON-RPC 接口 |
NAC 原生协议(无 RPC,去以太坊化) |
三、新增文件清单
3.1 Charter 合约层(charter-std/acc/)
| 文件 |
描述 |
acc20c.ch |
ACC-20C 主接口文件,整合各模块 |
acc20c_wrapper.ch |
资产包装器,纯粹的状态容器 |
acc20c_metadata.ch |
动态元数据生成器 |
acc20c_sync.ch |
状态同步执行器(被动接收模式) |
3.2 CNNL 宪法条款层(nac-constitution/clauses/)
| 文件 |
描述 |
acc20c_clauses.cnnl |
ACC-20C 专属宪法条款(A53-A56) |
3.3 Rust API 服务层(nac-acc-service/src/)
| 文件 |
描述 |
acc20c_judicial.rs |
新增:司法冻结/解冻 + 合规检查模块(416 行) |
main.rs |
最小化修改:添加 mod acc20c_judicial; + 3 条路由注册 |
四、API 端点完整清单(共 12 个 ACC-20C 端点)
基础 URL: http://127.0.0.1:9554
| 方法 |
路径 |
功能 |
对应宪法条款 |
| GET |
/health |
健康检查 |
- |
| GET |
/acc20c/assets |
列出所有包装资产 |
- |
| GET |
/acc20c/asset/{id} |
查询单个包装资产 |
- |
| POST |
/acc20c/wrap |
包装 ACC-20 资产 |
A53 |
| POST |
/acc20c/unwrap |
解包装资产(含冷却期检查) |
A54 |
| POST |
/acc20c/transfer |
转移包装资产所有权 |
A56 |
| POST |
/acc20c/freeze |
司法冻结 |
A55 |
| POST |
/acc20c/unfreeze |
解除司法冻结 |
A55 |
| POST |
/acc20c/compliance/check |
合规性检查 |
A53 |
| POST |
/acc20c/sync/valuation |
扫描器调用:更新估值 |
- |
| POST |
/acc20c/sync/status |
扫描器调用:状态变更 |
- |
五、全覆盖测试结果(2026-03-08 08:23 CST)
| 测试项 |
结果 |
| 端口 9554(ACC 服务) |
通过 |
| 端口 9545(CBPP 节点) |
通过 |
| nac-l1-acc20 服务 |
active (running) |
| nac-cbpp-scanner 服务 |
active (running) |
| nac-cbpp-node 服务 |
active (running) |
| GET /health |
HTTP 200 |
| GET /acc20c/assets |
HTTP 200 |
| POST /acc20c/wrap |
包装成功 |
| GET /acc20c/asset/{id} |
HTTP 200 |
| POST /acc20c/compliance/check(正常) |
通过 |
| POST /acc20c/freeze |
冻结成功 |
| POST /acc20c/compliance/check(冻结后) |
正确拒绝(A55 生效) |
| POST /acc20c/unfreeze |
解冻成功 |
| POST /acc20c/transfer |
转移成功 |
| POST /acc20c/unwrap(冷却期内) |
正确拒绝(A54 生效) |
| POST /acc20c/sync/valuation |
HTTP 200 |
| POST /acc20c/sync/status |
HTTP 200 |
结论:12/12 功能测试全部通过,零失败,零警告,零错误。
六、编译信息
- 编译器: rustc 1.93.1-x86_64-unknown-linux-gnu
- 编译模式: release(LTO 优化)
- 警告数: 0
- 错误数: 0
- 二进制大小: 5,776,672 字节(v1.2.0,较 v1.1.0 增加 93,192 字节)
七、后台管理信息
八、依赖关系与后续工单
| 依赖 |
状态 |
| CBPP 共识节点(nac-cbpp-node) |
已运行 |
| NAC-Lens SDK(nac-lens crate) |
已集成 |
| CBPP 扫描器(nac-cbpp-scanner) |
已运行(未修改,尊重前任编译者) |
| Charter 编译器(NVM) |
待后续工单 |
| CEE 宪法执行引擎集成 |
待后续工单 |
九、重要原则记录
本次工单实施过程中确立的核心原则(已写入项目知识库):
- NAC_AI 没有长期记忆,代码库本身就是记忆:尊重前面的编译者,通过阅读现有代码找到原始编译痕迹,新代码必须适应现有编译环境,而不是重写现有代码。
- NAC 去以太坊化原则:NAC 没有注册任何 RPC 方法,不使用 JSON-RPC/EVM/Solidity,数据访问通过 NAC-Lens SDK 进行。
- 最小化修改原则:对现有运行正常的模块只做最小化修改(如 main.rs 仅添加 mod 声明和路由注册),新功能以独立文件形式添加。