150 lines
5.3 KiB
Markdown
150 lines
5.3 KiB
Markdown
# 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 字节)
|
||
|
||
---
|
||
|
||
## 七、后台管理信息
|
||
|
||
- **Gitea 代码库**: https://git.newassetchain.io/nacadmin/NAC_Blockchain
|
||
- **Gitea 账号**: nacadmin / NACadmin2026!
|
||
- **备份服务器**: 103.96.148.7:22000(root)
|
||
- **宝塔面板**: http://103.96.148.7:12/btwest(cproot / vajngkvf)
|
||
|
||
---
|
||
|
||
## 八、依赖关系与后续工单
|
||
|
||
| 依赖 | 状态 |
|
||
| :--- | :--- |
|
||
| CBPP 共识节点(nac-cbpp-node) | 已运行 |
|
||
| NAC-Lens SDK(nac-lens crate) | 已集成 |
|
||
| CBPP 扫描器(nac-cbpp-scanner) | 已运行(未修改,尊重前任编译者) |
|
||
| Charter 编译器(NVM) | 待后续工单 |
|
||
| CEE 宪法执行引擎集成 | 待后续工单 |
|
||
|
||
---
|
||
|
||
## 九、重要原则记录
|
||
|
||
本次工单实施过程中确立的核心原则(已写入项目知识库):
|
||
|
||
1. **Manus 没有长期记忆,代码库本身就是记忆**:尊重前面的编译者,通过阅读现有代码找到原始编译痕迹,新代码必须适应现有编译环境,而不是重写现有代码。
|
||
2. **NAC 去以太坊化原则**:NAC 没有注册任何 RPC 方法,不使用 JSON-RPC/EVM/Solidity,数据访问通过 NAC-Lens SDK 进行。
|
||
3. **最小化修改原则**:对现有运行正常的模块只做最小化修改(如 main.rs 仅添加 mod 声明和路由注册),新功能以独立文件形式添加。
|