diff --git a/DELIVERY_SUMMARY.txt b/DELIVERY_SUMMARY.txt
index af93b18..192bf35 100644
--- a/DELIVERY_SUMMARY.txt
+++ b/DELIVERY_SUMMARY.txt
@@ -131,7 +131,7 @@ Phase 2: 密钥管理增强
- 实现AES-256-GCM加密
Phase 3: 网络通信
- - NRPC3.0客户端
+ - NAC Lens客户端
- CEE节点通信
- 交易广播
diff --git a/ISSUE_025_COMPLETION_REPORT.md b/ISSUE_025_COMPLETION_REPORT.md
index 37a286d..e4636da 100644
--- a/ISSUE_025_COMPLETION_REPORT.md
+++ b/ISSUE_025_COMPLETION_REPORT.md
@@ -139,7 +139,7 @@ nac-upgrade-framework/
- nac-deploy, nac-ftan
- nac-integration-tests
- nac-ma-rcm, nac-monitor
-- nac-nrpc, nac-lens, nac-nvm
+- nac-lens, nac-lens, nac-nvm
- nac-rwa-exchange
- nac-sdk, nac-serde, nac-test
- nac-uca, nac-udm
diff --git a/NAC_DEVELOPMENT_FINAL_SUMMARY.md b/NAC_DEVELOPMENT_FINAL_SUMMARY.md
index 352107e..a039eec 100644
--- a/NAC_DEVELOPMENT_FINAL_SUMMARY.md
+++ b/NAC_DEVELOPMENT_FINAL_SUMMARY.md
@@ -72,13 +72,13 @@
### NAC钱包 - RPC通信层修正
-**问题**: 错误使用JSON-RPC而非NRPC 3.0
+**问题**: 错误使用JSON-RPC而非NAC Lens
**已采取措施**:
-1. ✅ 找到nac-sdk中的NRPC3Client实现
+1. ✅ 找到nac-sdk中的NacLensClient实现
2. ✅ 添加nac-sdk依赖到钱包
3. ✅ 删除错误的JSON-RPC客户端
-4. ✅ 更新TransactionBuilder使用NRPC3Client
+4. ✅ 更新TransactionBuilder使用NacLensClient
**待完成**:
- ❌ 修复Transaction结构字段不匹配
@@ -108,7 +108,7 @@
| 智能合约语言 | Solidity | **Charter** | ✅ |
| 资产协议 | ERC-20/ERC-721 | **ACC-20/ACC-20C** | ✅ |
| 地址格式 | 20字节以太坊地址 | **32字节NAC地址** | ✅ |
-| RPC协议 | JSON-RPC | **NRPC 3.0** | 🔄 |
+| RPC协议 | JSON-RPC | **NAC Lens** | 🔄 |
| 共识协议 | PoW/PoS | **CBPP** | ✅ |
| 网络协议 | P2P | **CSNP** | ✅ |
@@ -142,12 +142,12 @@
**修正**: 全部使用Charter语言,零Solidity代码
**验证**: 3个Charter合约成功编译
-### 问题2: 使用JSON-RPC而非NRPC 3.0 🔄 修正中
+### 问题2: 使用JSON-RPC而非NAC Lens 🔄 修正中
**发现**: 钱包核心错误实现了JSON-RPC客户端
**修正**:
- ✅ 删除JSON-RPC客户端
-- ✅ 集成nac-sdk的NRPC3Client
+- ✅ 集成nac-sdk的NacLensClient
- 🔄 更新所有RPC调用
**待完成**:
@@ -308,7 +308,7 @@
- ✅ 完全独立的RWA原生公链
- ✅ 自有的Charter智能合约语言
- ✅ 自有的ACC-20/ACC-20C资产协议
-- ✅ 自有的NRPC 3.0通信协议
+- ✅ 自有的NAC Lens通信协议
- ✅ 自有的CBPP共识协议
- ✅ 自有的CSNP网络协议
@@ -324,7 +324,7 @@
✅ **正确的技术栈**:
- Rust (系统开发)
- Charter (智能合约)
-- NRPC 3.0 (RPC通信)
+- NAC Lens (RPC通信)
- tokio (异步运行时)
- ed25519-dalek (密码学)
diff --git a/NAC_Development_Work_Log_20260217.md b/NAC_Development_Work_Log_20260217.md
index 2656da9..b760a9c 100644
--- a/NAC_Development_Work_Log_20260217.md
+++ b/NAC_Development_Work_Log_20260217.md
@@ -37,7 +37,7 @@ NAC公链是一套完全自主开发的RWA(Real World Assets)专用区块链
#### ✅ nac-lens - NAC Lens元协议
-**功能描述:** NRPC(NAC Remote Procedure Call)4.0是NAC公链的核心通信协议,实现了六层协议栈(L1-L6),支持高效的节点间通信、数据传输和协议升级。
+**功能描述:** NAC Lens(NAC Remote Procedure Call)4.0是NAC公链的核心通信协议,实现了六层协议栈(L1-L6),支持高效的节点间通信、数据传输和协议升级。
**技术实现:**
diff --git a/NAC_WALLET_DELIVERY.md b/NAC_WALLET_DELIVERY.md
index e2d8c09..129f16a 100644
--- a/NAC_WALLET_DELIVERY.md
+++ b/NAC_WALLET_DELIVERY.md
@@ -163,7 +163,7 @@ BIP44派生 (m/44'/626'/0'/0/index)
### Phase 3 (网络通信)
-- [ ] NRPC3.0客户端实现
+- [ ] NAC Lens客户端实现
- [ ] CEE节点HTTP客户端
- [ ] 交易广播
- [ ] 余额查询
diff --git a/NAC_WALLET_FINAL_DELIVERY.md b/NAC_WALLET_FINAL_DELIVERY.md
index aa12d8a..f0d5b94 100644
--- a/NAC_WALLET_FINAL_DELIVERY.md
+++ b/NAC_WALLET_FINAL_DELIVERY.md
@@ -20,7 +20,7 @@
| 密钥管理 | key_manager.rs | Ed25519/BLS/Dilithium5、BIP39、BIP44 | ✅ 100% |
| 地址管理 | address.rs | 32字节结构化地址 | ✅ 100% |
| 存储模块 | storage.rs | AES-256-GCM加密、KeyStore | ✅ 100% |
-| NRPC通信 | nrpc_wrapper.rs | NRPC 3.0客户端、13个方法 | ✅ 100% |
+| NRPC通信 | nac_lens_wrapper.rs | NAC Lens客户端、13个方法 | ✅ 100% |
| CEE通信 | cee_client.rs | CR请求/验证、多节点管理 | ✅ 100% |
| 交易模块 | transaction.rs | 交易构造、签名 | ✅ 80% |
| 宪法收据 | constitutional_receipt.rs | CR数据结构、跨链扩展 | ✅ 90% |
@@ -95,9 +95,9 @@ $ nac-wallet-cli info --wallet wallet.json
- ✅ 区域代码(ISO 3166-1)
- ✅ 公钥哈希(SHA3-384前26字节)
-### 3. NRPC 3.0通信
+### 3. NAC Lens通信
-**13个NRPC方法**:
+**13个NAC Lens方法**:
- get_balance, get_nonce
- send_raw_transaction
- get_transaction, get_transaction_receipt
@@ -202,7 +202,7 @@ nac-wallet-cli balance \
### 关键技术
-1. **NRPC 3.0协议** - NAC原生RPC协议
+1. **NAC Lens协议** - NAC原生RPC协议
2. **Charter智能合约** - NAC原生合约语言
3. **ACC-20协议** - NAC资产标准
4. **GNACS编码** - 全球资产分类系统
@@ -219,7 +219,7 @@ nac-wallet-cli balance \
│ │ ├── key_manager.rs # 密钥管理
│ │ ├── address.rs # 地址管理
│ │ ├── storage.rs # 存储模块
-│ │ ├── nrpc_wrapper.rs # NRPC通信
+│ │ ├── nac_lens_wrapper.rs # NAC Lens通信
│ │ ├── cee_client.rs # CEE通信
│ │ ├── transaction.rs # 交易模块
│ │ └── ...
@@ -257,14 +257,14 @@ nac-wallet-cli balance \
| 合约语言 | Solidity | **Charter** |
| 资产协议 | ERC-20 | **ACC-20** |
| 地址格式 | 20字节 | **32字节** |
-| RPC协议 | JSON-RPC | **NRPC 3.0** |
+| RPC协议 | JSON-RPC | **NAC Lens** |
| 共识协议 | PoW/PoS | **CBPP** |
| 网络协议 | P2P | **CSNP** |
### 零Solidity、零JSON-RPC
- ✅ 所有合约使用Charter
-- ✅ 所有RPC使用NRPC 3.0
+- ✅ 所有RPC使用NAC Lens
- ✅ 所有地址使用32字节
- ✅ 所有资产使用ACC-20
@@ -375,7 +375,7 @@ tar -czf nac-wallet-v1.0.0.tar.gz \
- ✅ 零Solidity代码
- ✅ 零JSON-RPC代码
-- ✅ 完整的NRPC 3.0实现
+- ✅ 完整的NAC Lens实现
- ✅ 完整的Charter合约
- ✅ 完整的KeyStore加密
- ✅ 完整的CLI工具
diff --git a/NAC_主网部署交付文档_20260220.md b/NAC_主网部署交付文档_20260220.md
index 3851397..1fd20d7 100644
--- a/NAC_主网部署交付文档_20260220.md
+++ b/NAC_主网部署交付文档_20260220.md
@@ -237,7 +237,7 @@ cat /var/lib/prometheus/node_exporter/binary_metrics.prom
| 智能合约语言 | **Charter** | 非Solidity |
| 神经网络语言 | **CNNL** | 宪政神经网络语言 |
| 网络协议 | **CSNP** | 宪政同步网络协议 |
-| RPC协议 | **NRPC4.0** | 非JSON-RPC |
+| RPC协议 | **NAC Lens** | 非JSON-RPC |
| 类型系统 | Address 32字节
Hash 48字节 | SHA3-384 |
### 7.2 NAC与其他公链的区别
diff --git a/NAC_主网部署报告_20260220.md b/NAC_主网部署报告_20260220.md
index 84e0b03..c17bf21 100644
--- a/NAC_主网部署报告_20260220.md
+++ b/NAC_主网部署报告_20260220.md
@@ -237,7 +237,7 @@ journalctl -u nac-cbpp-node -n 100 --no-pager
- **智能合约语言**:Charter
- **神经网络语言**:CNNL
- **网络协议**:CSNP(宪政同步网络协议)
-- **RPC协议**:NRPC4.0
+- **RPC协议**:NAC Lens
- **类型系统**:
- Address: 32字节
- Hash: 48字节(SHA3-384)
diff --git a/NAC开发总结_2026-02-18.md b/NAC开发总结_2026-02-18.md
index 317bbce..ede7335 100644
--- a/NAC开发总结_2026-02-18.md
+++ b/NAC开发总结_2026-02-18.md
@@ -23,7 +23,7 @@ NAC公链系统已完成核心开发,共计**48个模块**已完成并通过
5. **nac-csnp** - 宪政结构化网络协议(1个Rust文件)
6. **nac-csnp-l0** - CSNP L0层(3个Rust文件)
7. **nac-csnp-l1** - CSNP L1层(1个Rust文件)
-8. **nac-nrpc** - NAC RPC协议(2个Rust文件)
+8. **nac-lens** - NAC RPC协议(2个Rust文件)
9. **nac-lens** - NAC RPC 4.0(9个Rust文件)
### AI智能系统(2个)
diff --git a/NAC系统完整清单_最终版.md b/NAC系统完整清单_最终版.md
index 2c01442..e3b387c 100644
--- a/NAC系统完整清单_最终版.md
+++ b/NAC系统完整清单_最终版.md
@@ -28,7 +28,7 @@
- ✅ **nac-csnp-l1** - CSNP L1层
### 5. RPC协议
-- ✅ **nac-nrpc** - NAC远程过程调用协议
+- ✅ **nac-lens** - NAC远程过程调用协议
- ✅ **nac-lens** - NAC Lens版本
### 6. AI系统
diff --git a/README.md b/README.md
index a966497..28dced1 100644
--- a/README.md
+++ b/README.md
@@ -44,7 +44,7 @@ NAC区块链的核心类型定义和协议实现,包含完整的三层架构
- `open_production_network.rs` - 开放生产网络
- `gossip_protocol.rs` - 收据验证Gossip协议
- `execution_engine.rs` - 执行引擎
- - `nrpc.rs` - NRPC3.0协议
+ - `nrpc.rs` - NAC Lens协议
- **GNACS编码系统**
- `category.rs` - 资产分类
@@ -229,7 +229,7 @@ NAC是完全自主开发的RWA原生公链,包括:
- ✅ **使用** NVM虚拟机(NAC Virtual Machine)
- ✅ **使用** Charter语言(NAC原生智能合约语言)
- ✅ **使用** CBPP共识(Constitutional Block Production Protocol)
-- ✅ **使用** NRPC3.0协议(NAC RPC Protocol 3.0)
+- ✅ **使用** NAC Lens协议(NAC RPC Protocol 3.0)
- ✅ **使用** CSNP网络(Constitutional State Network Protocol)
- ✅ **使用** ACC-20协议(Asset Certificate Contract)
- ✅ **使用** GNACS编码(Global NAC Asset Classification System)
@@ -371,7 +371,7 @@ NAC_Clean_Dev/
├── 【RPC与API】(3个模块)
├── ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│
-├── nac-nrpc/ # NRPC 1.0
+├── nac-lens/ # NAC Lens 1.0
├── nac-lens/ # NAC Lens
├── nac-api-server/ # API服务器
│
diff --git a/VERSION_v2.2.0.md b/VERSION_v2.2.0.md
index cfef1f7..e91e545 100644
--- a/VERSION_v2.2.0.md
+++ b/VERSION_v2.2.0.md
@@ -84,7 +84,7 @@
### 5. 其他组件
-- NRPC 3.0
+- NAC Lens
- CBPP共识协议
- CSNP网络协议
- 分片系统
diff --git a/_archive/v1_legacy_nrpc3/README.md b/_archive/v1_legacy_nac_lens/README.md
similarity index 61%
rename from _archive/v1_legacy_nrpc3/README.md
rename to _archive/v1_legacy_nac_lens/README.md
index 0799641..33390ae 100644
--- a/_archive/v1_legacy_nrpc3/README.md
+++ b/_archive/v1_legacy_nac_lens/README.md
@@ -1,4 +1,4 @@
-# 归档说明:NRPC 3.0 旧版本
+# 归档说明:NAC Lens 旧版本
**归档时间**: 2026-02-22
**归档原因**: 工单 #044 - 版本整理
@@ -8,9 +8,9 @@
| 文件/目录 | 原路径 | 归档原因 |
|---|---|---|
-| `nrpc3_client.rs` | `nac-sdk/src/client/nrpc3.rs` | 旧版 NRPC3.0 客户端,已被 NAC Lens 替代 |
-| `nac-nrpc-v3.0.0/` | `nac-nrpc/` | NRPC 3.0 协议实现,已被 `nac-lens/` 替代 |
-| `nac-csnp-nac-nrpc-v3.0.0/` | `nac-csnp/nac-nrpc/` | CSNP 内嵌的 NRPC3.0,已被 NAC Lens 替代 |
+| `nac_lens_client.rs` | `nac-sdk/src/client/nac_lens.rs` | 旧版 NAC Lens 客户端,已被 NAC Lens 替代 |
+| `nac-lens-v3.0.0/` | `nac-lens/` | NAC Lens 协议实现,已被 `nac-lens/` 替代 |
+| `nac-csnp-nac-lens-v3.0.0/` | `nac-csnp/nac-lens/` | CSNP 内嵌的 NAC Lens,已被 NAC Lens 替代 |
| `bak_files/` | 各处 `.bak*` 文件 | 历史备份文件 |
## 当前最新版本
diff --git a/_archive/v1_legacy_nrpc3/bak_files/acc721.rs.bak2 b/_archive/v1_legacy_nac_lens/bak_files/acc721.rs.bak2
similarity index 100%
rename from _archive/v1_legacy_nrpc3/bak_files/acc721.rs.bak2
rename to _archive/v1_legacy_nac_lens/bak_files/acc721.rs.bak2
diff --git a/_archive/v1_legacy_nrpc3/nac-csnp-nac-nrpc-v3.0.0/Cargo.toml b/_archive/v1_legacy_nac_lens/nac-csnp-nac-nac_lens-v3.0.0/Cargo.toml
similarity index 76%
rename from _archive/v1_legacy_nrpc3/nac-csnp-nac-nrpc-v3.0.0/Cargo.toml
rename to _archive/v1_legacy_nac_lens/nac-csnp-nac-nac_lens-v3.0.0/Cargo.toml
index dc68274..80fd9b5 100644
--- a/_archive/v1_legacy_nrpc3/nac-csnp-nac-nrpc-v3.0.0/Cargo.toml
+++ b/_archive/v1_legacy_nac_lens/nac-csnp-nac-nac_lens-v3.0.0/Cargo.toml
@@ -1,9 +1,9 @@
[package]
-name = "nac-nrpc"
+name = "nac-lens"
version = "3.0.0"
edition = "2021"
authors = ["NAC公链开发小组"]
-description = "NAC远程过程调用协议(NRPC3.0)"
+description = "NAC远程过程调用协议(NAC Lens)"
[dependencies]
tokio = { version = "1.0", features = ["full"] }
diff --git a/_archive/v1_legacy_nrpc3/nac-csnp-nac-nrpc-v3.0.0/src/lib.rs b/_archive/v1_legacy_nac_lens/nac-csnp-nac-nac_lens-v3.0.0/src/lib.rs
similarity index 100%
rename from _archive/v1_legacy_nrpc3/nac-csnp-nac-nrpc-v3.0.0/src/lib.rs
rename to _archive/v1_legacy_nac_lens/nac-csnp-nac-nac_lens-v3.0.0/src/lib.rs
diff --git a/_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/.gitignore b/_archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/.gitignore
similarity index 100%
rename from _archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/.gitignore
rename to _archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/.gitignore
diff --git a/_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/Cargo.lock b/_archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/Cargo.lock
similarity index 100%
rename from _archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/Cargo.lock
rename to _archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/Cargo.lock
diff --git a/_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/Cargo.toml b/_archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/Cargo.toml
similarity index 89%
rename from _archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/Cargo.toml
rename to _archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/Cargo.toml
index 7623bb8..8924402 100644
--- a/_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/Cargo.toml
+++ b/_archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/Cargo.toml
@@ -1,9 +1,9 @@
[package]
-name = "nac-nrpc"
+name = "nac-lens"
version = "3.0.0"
edition = "2021"
authors = ["NAC Development Team"]
-description = "NRPC 3.0 - NAC原生RPC协议服务器"
+description = "NAC Lens - NAC原生RPC协议服务器"
license = "MIT"
[dependencies]
@@ -50,9 +50,9 @@ blake3 = "1.5"
tokio-test = "0.4"
[lib]
-name = "nac_nrpc"
+name = "nac_lens"
path = "src/lib.rs"
[[bin]]
-name = "nac-nrpc-server"
+name = "nac-lens-server"
path = "src/bin/server.rs"
diff --git a/nac-nrpc/README.md b/_archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/README.md
similarity index 80%
rename from nac-nrpc/README.md
rename to _archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/README.md
index 898c199..d5fd10e 100644
--- a/nac-nrpc/README.md
+++ b/_archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/README.md
@@ -1,7 +1,7 @@
-# nac-nrpc-server
+# nac-lens-server
-**模块名称**: nac-nrpc-server
-**描述**: NRPC 3.0 - NAC原生RPC协议服务器
+**模块名称**: nac-lens-server
+**描述**: NAC Lens - NAC原生RPC协议服务器
**最后更新**: 2026-02-18
---
@@ -9,7 +9,7 @@
## 目录结构
```
-nac-nrpc/
+nac-lens/
├── Cargo.toml
├── README.md (本文件)
└── src/
diff --git a/_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/src/lib.rs b/_archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/src/lib.rs
similarity index 100%
rename from _archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/src/lib.rs
rename to _archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/src/lib.rs
diff --git a/nac-nrpc/src/protocol.rs b/_archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/src/protocol.rs
similarity index 89%
rename from nac-nrpc/src/protocol.rs
rename to _archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/src/protocol.rs
index 6f886fa..d139b22 100644
--- a/nac-nrpc/src/protocol.rs
+++ b/_archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/src/protocol.rs
@@ -1,14 +1,14 @@
-//! NRPC 3.0协议类型定义
+//! NAC Lens协议类型定义
//!
-//! 定义NRPC 3.0协议的核心数据结构
+//! 定义NAC Lens协议的核心数据结构
use nac_udm::primitives::{Hash, Timestamp};
use serde::{Deserialize, Serialize};
use serde_json::Value;
-/// NRPC 3.0请求
+/// NAC Lens请求
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3Request {
+pub struct NacLensRequest {
/// JSON-RPC版本(固定为"3.0")
pub jsonrpc: String,
@@ -34,9 +34,9 @@ pub struct NRPC3Request {
pub signature: Option,
}
-/// NRPC 3.0响应
+/// NAC Lens响应
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3Response {
+pub struct NacLensResponse {
/// JSON-RPC版本
pub jsonrpc: String,
@@ -49,7 +49,7 @@ pub struct NRPC3Response {
/// 错误(失败时)
#[serde(skip_serializing_if = "Option::is_none")]
- pub error: Option,
+ pub error: Option,
/// 时间戳(NAC扩展)
#[serde(skip_serializing_if = "Option::is_none")]
@@ -60,9 +60,9 @@ pub struct NRPC3Response {
pub server_signature: Option,
}
-/// NRPC 3.0错误
+/// NAC Lens错误
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3Error {
+pub struct NAC Lens3Error {
/// 错误代码
pub code: i32,
@@ -88,21 +88,21 @@ pub enum RequestId {
Null,
}
-/// NRPC 3.0批量请求
+/// NAC Lens批量请求
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3BatchRequest {
+pub struct NAC Lens3BatchRequest {
/// 批量请求列表
- pub requests: Vec,
+ pub requests: Vec,
}
-/// NRPC 3.0批量响应
+/// NAC Lens批量响应
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3BatchResponse {
+pub struct NAC Lens3BatchResponse {
/// 批量响应列表
- pub responses: Vec,
+ pub responses: Vec,
}
-/// NRPC 3.0错误代码
+/// NAC Lens错误代码
pub mod error_codes {
/// 解析错误
pub const PARSE_ERROR: i32 = -32700;
@@ -141,7 +141,7 @@ pub mod error_codes {
pub const INSUFFICIENT_PERMISSIONS: i32 = -33005;
}
-impl NRPC3Request {
+impl NacLensRequest {
/// 创建新请求
pub fn new(id: RequestId, method: impl Into, params: Value) -> Self {
Self {
@@ -180,7 +180,7 @@ impl NRPC3Request {
}
}
-impl NRPC3Response {
+impl NacLensResponse {
/// 创建成功响应
pub fn success(id: RequestId, result: Value) -> Self {
Self {
@@ -199,7 +199,7 @@ impl NRPC3Response {
jsonrpc: "3.0".to_string(),
id,
result: None,
- error: Some(NRPC3Error {
+ error: Some(NAC Lens3Error {
code,
message: message.into(),
data: None,
@@ -217,7 +217,7 @@ mod tests {
#[test]
fn test_request_creation() {
- let req = NRPC3Request::new(
+ let req = NacLensRequest::new(
RequestId::Number(1),
"test_method",
json!({"param": "value"}),
@@ -230,7 +230,7 @@ mod tests {
#[test]
fn test_request_validation() {
- let req = NRPC3Request::new(
+ let req = NacLensRequest::new(
RequestId::Number(1),
"test_method",
json!({}),
@@ -241,7 +241,7 @@ mod tests {
#[test]
fn test_response_creation() {
- let resp = NRPC3Response::success(
+ let resp = NacLensResponse::success(
RequestId::Number(1),
json!({"result": "success"}),
);
diff --git a/_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/src/upgrade.rs b/_archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/src/upgrade.rs
similarity index 100%
rename from _archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/src/upgrade.rs
rename to _archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0/src/upgrade.rs
diff --git a/_archive/v1_legacy_nrpc3/nrpc3_client.rs b/_archive/v1_legacy_nac_lens/nac_lens_client.rs
similarity index 84%
rename from _archive/v1_legacy_nrpc3/nrpc3_client.rs
rename to _archive/v1_legacy_nac_lens/nac_lens_client.rs
index 526f772..2e8aaa4 100644
--- a/_archive/v1_legacy_nrpc3/nrpc3_client.rs
+++ b/_archive/v1_legacy_nac_lens/nac_lens_client.rs
@@ -1,9 +1,9 @@
/*!
-# NRPC3.0 Client
+# NAC Lens Client
NAC原生RPC协议客户端,完全替代JSON-RPC。
-## NRPC3.0特性
+## NAC Lens特性
- ✅ 量子安全DNA编码
- ✅ 时空路由
@@ -29,9 +29,9 @@ use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::sync::atomic::{AtomicU64, Ordering};
-/// NRPC3.0请求
+/// NAC Lens请求
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3Request {
+pub struct NacLensRequest {
/// JSON-RPC版本(固定为"3.0")
pub jsonrpc: String,
@@ -53,9 +53,9 @@ pub struct NRPC3Request {
pub quantum_dna: Option,
}
-/// NRPC3.0响应
+/// NAC Lens响应
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3Response {
+pub struct NacLensResponse {
/// JSON-RPC版本
pub jsonrpc: String,
@@ -68,16 +68,16 @@ pub struct NRPC3Response {
/// 错误(失败时)
#[serde(skip_serializing_if = "Option::is_none")]
- pub error: Option,
+ pub error: Option,
/// 时间戳(NAC扩展)
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option,
}
-/// NRPC3.0错误
+/// NAC Lens错误
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3Error {
+pub struct NAC Lens3Error {
/// 错误代码
pub code: i32,
@@ -89,18 +89,18 @@ pub struct NRPC3Error {
pub data: Option,
}
-/// NRPC3.0客户端
+/// NAC Lens客户端
///
/// 提供与NAC节点通信的RPC客户端
///
/// # Examples
///
/// ```
-/// use nac_sdk::client::NRPC3Client;
+/// use nac_sdk::client::NacLensClient;
///
/// #[tokio::main]
/// async fn main() {
-/// let client = NRPC3Client::new("https://rpc.newassetchain.io");
+/// let client = NacLensClient::new("https://rpc.newassetchain.io");
///
/// let params = serde_json::json!({
/// "epoch": 100,
@@ -111,7 +111,7 @@ pub struct NRPC3Error {
/// println!("Result: {:?}", result);
/// }
/// ```
-pub struct NRPC3Client {
+pub struct NacLensClient {
/// RPC端点URL
endpoint: String,
@@ -122,8 +122,8 @@ pub struct NRPC3Client {
request_id: AtomicU64,
}
-impl NRPC3Client {
- /// 创建新的NRPC3.0客户端
+impl NacLensClient {
+ /// 创建新的NAC Lens客户端
///
/// # Arguments
///
@@ -131,14 +131,14 @@ impl NRPC3Client {
///
/// # Returns
///
- /// NRPC3.0客户端实例
+ /// NAC Lens客户端实例
///
/// # Examples
///
/// ```
- /// use nac_sdk::client::NRPC3Client;
+ /// use nac_sdk::client::NacLensClient;
///
- /// let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ /// let client = NacLensClient::new("https://rpc.newassetchain.io");
/// ```
pub fn new(endpoint: impl Into) -> Self {
Self {
@@ -167,11 +167,11 @@ impl NRPC3Client {
/// # Examples
///
/// ```
- /// use nac_sdk::client::NRPC3Client;
+ /// use nac_sdk::client::NacLensClient;
///
/// #[tokio::main]
/// async fn main() {
- /// let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ /// let client = NacLensClient::new("https://rpc.newassetchain.io");
///
/// let params = serde_json::json!({
/// "epoch": 100,
@@ -200,7 +200,7 @@ impl NRPC3Client {
Hash::sha3_384(&dna_data)
};
- let request = NRPC3Request {
+ let request = NacLensRequest {
jsonrpc: "3.0".to_string(),
id: request_id,
method: method_str,
@@ -223,7 +223,7 @@ impl NRPC3Client {
)));
}
- let rpc_response: NRPC3Response = response
+ let rpc_response: NacLensResponse = response
.json()
.await
.map_err(|e| NACError::SerializationError(e.to_string()))?;
@@ -258,11 +258,11 @@ impl NRPC3Client {
/// # Examples
///
/// ```
- /// use nac_sdk::client::NRPC3Client;
+ /// use nac_sdk::client::NacLensClient;
///
/// #[tokio::main]
/// async fn main() {
- /// let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ /// let client = NacLensClient::new("https://rpc.newassetchain.io");
///
/// let requests = vec![
/// ("nac_getEpochInfo".to_string(), serde_json::json!({"epoch": 100})),
@@ -274,9 +274,9 @@ impl NRPC3Client {
/// }
/// ```
pub async fn batch_call(&self, requests: Vec<(String, Value)>) -> Result> {
- let rpc_requests: Vec = requests
+ let rpc_requests: Vec = requests
.into_iter()
- .map(|(method, params)| NRPC3Request {
+ .map(|(method, params)| NacLensRequest {
jsonrpc: "3.0".to_string(),
id: self.next_request_id(),
method,
@@ -300,7 +300,7 @@ impl NRPC3Client {
)));
}
- let rpc_responses: Vec = response
+ let rpc_responses: Vec = response
.json()
.await
.map_err(|e| NACError::SerializationError(e.to_string()))?;
@@ -343,7 +343,7 @@ impl NRPC3Client {
}
}
-impl Clone for NRPC3Client {
+impl Clone for NacLensClient {
fn clone(&self) -> Self {
Self {
endpoint: self.endpoint.clone(),
@@ -358,8 +358,8 @@ mod tests {
use super::*;
#[test]
- fn test_nrpc3_request_serialization() {
- let request = NRPC3Request {
+ fn test_nac_lens_request_serialization() {
+ let request = NacLensRequest {
jsonrpc: "3.0".to_string(),
id: 1,
method: "nac_getEpochInfo".to_string(),
@@ -369,15 +369,15 @@ mod tests {
};
let json = serde_json::to_string(&request).unwrap();
- let deserialized: NRPC3Request = serde_json::from_str(&json).unwrap();
+ let deserialized: NacLensRequest = serde_json::from_str(&json).unwrap();
assert_eq!(request.id, deserialized.id);
assert_eq!(request.method, deserialized.method);
}
#[test]
- fn test_nrpc3_response_serialization() {
- let response = NRPC3Response {
+ fn test_nac_lens_response_serialization() {
+ let response = NacLensResponse {
jsonrpc: "3.0".to_string(),
id: 1,
result: Some(serde_json::json!({"epoch": 100})),
@@ -386,36 +386,36 @@ mod tests {
};
let json = serde_json::to_string(&response).unwrap();
- let deserialized: NRPC3Response = serde_json::from_str(&json).unwrap();
+ let deserialized: NacLensResponse = serde_json::from_str(&json).unwrap();
assert_eq!(response.id, deserialized.id);
assert!(deserialized.result.is_some());
}
#[test]
- fn test_nrpc3_error_serialization() {
- let error = NRPC3Error {
+ fn test_nac_lens_error_serialization() {
+ let error = NAC Lens3Error {
code: -32600,
message: "Invalid Request".to_string(),
data: Some(serde_json::json!({"details": "Missing method"})),
};
let json = serde_json::to_string(&error).unwrap();
- let deserialized: NRPC3Error = serde_json::from_str(&json).unwrap();
+ let deserialized: NAC Lens3Error = serde_json::from_str(&json).unwrap();
assert_eq!(error.code, deserialized.code);
assert_eq!(error.message, deserialized.message);
}
#[test]
- fn test_nrpc3_client_creation() {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ fn test_nac_lens_client_creation() {
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
assert_eq!(client.endpoint(), "https://rpc.newassetchain.io");
}
#[test]
fn test_request_id_increment() {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let id1 = client.next_request_id();
let id2 = client.next_request_id();
let id3 = client.next_request_id();
diff --git a/cnnl-compiler/src/bin/cnnl.rs b/cnnl-compiler/src/bin/cnnl.rs
index 5f9fd4a..f562f10 100644
--- a/cnnl-compiler/src/bin/cnnl.rs
+++ b/cnnl-compiler/src/bin/cnnl.rs
@@ -1,26 +1,44 @@
//! CNNL命令行编译器
-
-use cnnl_compiler::{compile, CompilerOptions};
+//!
+//! NAC 宪政神经网络语言编译器
+//! 包含去以太坊化 Lint 检查(--check)和自动修复(--fix)功能
+use cnnl_compiler::{compile, CompilerOptions, NacDeEthLint};
use std::fs;
use std::path::PathBuf;
+fn print_usage() {
+ eprintln!("CNNL 编译器 - NAC 宪政神经网络语言");
+ eprintln!("");
+ eprintln!("用法: cnnl [选项]");
+ eprintln!("");
+ eprintln!("选项:");
+ eprintln!(" --output 输出目录");
+ eprintln!(" --verify 启用形式化验证");
+ eprintln!(" --debug 生成调试信息");
+ eprintln!(" --no-state 不生成宪法状态文件");
+ eprintln!(" --check 去以太坊化检查(检测 RPC/EVM/Solidity 等错误术语)");
+ eprintln!(" --fix 自动修正去以太坊化问题(将 RPC→NAC Lens, EVM→NVM 等)");
+ eprintln!("");
+ eprintln!("NAC 原生技术栈:");
+ eprintln!(" 协议: NAC Lens(不是 RPC/JSON-RPC)");
+ eprintln!(" 虚拟机: NVM(不是 EVM)");
+ eprintln!(" 合约语言: Charter(不是 Solidity)");
+ eprintln!(" 共识: CBPP(不是 PoS/PoW)");
+ eprintln!(" 网络: CSNP(不是 P2P)");
+}
+
fn main() {
env_logger::init();
-
let args: Vec = std::env::args().collect();
-
if args.len() < 2 {
- eprintln!("Usage: cnnl [options]");
- eprintln!("\nOptions:");
- eprintln!(" --output 输出目录");
- eprintln!(" --verify 启用形式化验证");
- eprintln!(" --debug 生成调试信息");
- eprintln!(" --no-state 不生成宪法状态文件");
+ print_usage();
std::process::exit(1);
}
let input_file = &args[1];
let mut options = CompilerOptions::default();
+ let mut do_check = false;
+ let mut do_fix = false;
// 解析命令行参数
let mut i = 2;
@@ -31,7 +49,7 @@ fn main() {
options.output_dir = Some(args[i + 1].clone());
i += 2;
} else {
- eprintln!("Error: --output requires a directory path");
+ eprintln!("错误: --output 需要指定目录路径");
std::process::exit(1);
}
}
@@ -47,8 +65,16 @@ fn main() {
options.generate_state_file = false;
i += 1;
}
+ "--check" => {
+ do_check = true;
+ i += 1;
+ }
+ "--fix" => {
+ do_fix = true;
+ i += 1;
+ }
_ => {
- eprintln!("Unknown option: {}", args[i]);
+ eprintln!("未知选项: {}", args[i]);
std::process::exit(1);
}
}
@@ -58,48 +84,89 @@ fn main() {
let source = match fs::read_to_string(input_file) {
Ok(s) => s,
Err(e) => {
- eprintln!("Error reading file {}: {}", input_file, e);
+ eprintln!("读取文件 {} 失败: {}", input_file, e);
std::process::exit(1);
}
};
+ // 去以太坊化检查(--check 或编译前自动检查)
+ let lint = NacDeEthLint::new();
+
+ if do_fix {
+ // 自动修复模式
+ println!("🔧 [NAC-LINT] 正在自动修正去以太坊化问题...");
+ let (fixed_source, diagnostics) = lint.auto_fix(&source);
+ if diagnostics.is_empty() {
+ println!("✅ [NAC-LINT] 未发现以太坊化术语,无需修正");
+ } else {
+ println!("✅ [NAC-LINT] 已自动修正 {} 处以太坊化术语:", diagnostics.len());
+ for diag in &diagnostics {
+ let line_num = source[..diag.span.start].chars().filter(|&c| c == '\n').count() + 1;
+ println!(" 第{}行: '{}' → '{}'", line_num, diag.found, diag.suggestion);
+ }
+ // 写回文件
+ fs::write(input_file, &fixed_source).expect("写入修复后文件失败");
+ println!(" 已保存修复后的文件: {}", input_file);
+ }
+ if !do_check {
+ return;
+ }
+ }
+
+ // 去以太坊化检查(编译前强制检查)
+ let diagnostics = lint.check(&source);
+ if !diagnostics.is_empty() {
+ let report = lint.report(&source, input_file);
+ eprintln!("{}", report);
+ if !do_check {
+ // 编译前自动检查失败,阻止编译
+ eprintln!("");
+ eprintln!("⛔ 编译被阻止:发现 {} 处以太坊化术语", diagnostics.len());
+ eprintln!(" 运行 `cnnl {} --fix` 可自动修正", input_file);
+ std::process::exit(2);
+ } else {
+ // --check 模式只报告,不阻止
+ std::process::exit(1);
+ }
+ } else if do_check {
+ println!("✅ [NAC-LINT] {} 通过去以太坊化检查", input_file);
+ return;
+ }
+
// 编译
- println!("Compiling {}...", input_file);
+ println!("编译 {}...", input_file);
match compile(&source, options.clone()) {
Ok(result) => {
- println!("✓ Compilation successful!");
- println!(" Clauses: {}", result.ast.clauses.len());
- println!(" Bytecode size: {} bytes", result.bytecode.len());
-
+ println!("✓ 编译成功!");
+ println!(" 条款数: {}", result.ast.clauses.len());
+ println!(" 字节码大小: {} 字节", result.bytecode.len());
// 保存输出文件
if let Some(output_dir) = options.output_dir {
let output_path = PathBuf::from(output_dir);
fs::create_dir_all(&output_path)
- .expect("Failed to create output directory");
-
+ .expect("创建输出目录失败");
// 保存字节码
let bytecode_file = output_path.join("constitutional.bin");
fs::write(&bytecode_file, &result.bytecode)
- .expect("Failed to write bytecode file");
- println!(" Bytecode: {}", bytecode_file.display());
-
+ .expect("写入字节码文件失败");
+ println!(" 字节码: {}", bytecode_file.display());
// 保存宪法状态文件
if let Some(state_json) = result.state_json {
let state_file = output_path.join("constitutional_state.json");
fs::write(&state_file, state_json)
- .expect("Failed to write state file");
- println!(" State file: {}", state_file.display());
+ .expect("写入状态文件失败");
+ println!(" 状态文件: {}", state_file.display());
}
} else {
// 输出到标准输出
if let Some(state_json) = result.state_json {
- println!("\nConstitutional State:");
+ println!("\n宪法状态:");
println!("{}", state_json);
}
}
}
Err(e) => {
- eprintln!("✗ Compilation failed: {}", e);
+ eprintln!("✗ 编译失败: {}", e);
std::process::exit(1);
}
}
diff --git a/cnnl-compiler/src/lib.rs b/cnnl-compiler/src/lib.rs
index 855e2ce..6c96ef7 100644
--- a/cnnl-compiler/src/lib.rs
+++ b/cnnl-compiler/src/lib.rs
@@ -8,6 +8,8 @@ pub mod semantic;
pub mod verification;
pub mod codegen;
pub mod metadata;
+pub mod nac_lint;
+pub use nac_lint::{NacDeEthLint, EthLintDiagnostic};
pub use lexer::{Lexer, Token};
pub use parser::{Parser, Program, Clause, ClauseLevel};
diff --git a/cnnl-compiler/src/nac_lint.rs b/cnnl-compiler/src/nac_lint.rs
new file mode 100644
index 0000000..ceaad8b
--- /dev/null
+++ b/cnnl-compiler/src/nac_lint.rs
@@ -0,0 +1,391 @@
+//! NAC 去以太坊化 Lint 检查器
+//!
+//! 在 CNNL 编译器中检测并自动纠正以太坊化术语,
+//! 防止开发者误用 RPC、EVM、Solidity 等以太坊概念。
+//!
+//! # 设计原则
+//! - 输入 RPC → 错误,建议使用 NAC Lens
+//! - 输入 EVM → 错误,建议使用 NVM
+//! - 输入 Solidity → 错误,建议使用 Charter
+//! - 输入 JSON-RPC → 错误,建议使用 NAC Lens 协议
+//! - 输入 eth_ / net_ / web3_ 方法前缀 → 错误,建议使用 nac_ 方法
+
+use std::collections::HashMap;
+
+/// 以太坊化术语检测规则
+#[derive(Debug, Clone)]
+pub struct EthTermRule {
+ /// 错误的以太坊术语
+ pub eth_term: &'static str,
+ /// 正确的 NAC 术语
+ pub nac_term: &'static str,
+ /// 错误说明
+ pub message: &'static str,
+ /// 是否大小写不敏感匹配
+ pub case_insensitive: bool,
+}
+
+/// NAC 去以太坊化 Lint 诊断
+#[derive(Debug, Clone)]
+pub struct EthLintDiagnostic {
+ /// 发现位置(字节偏移)
+ pub span: std::ops::Range,
+ /// 发现的以太坊术语
+ pub found: String,
+ /// 建议的 NAC 术语
+ pub suggestion: String,
+ /// 错误消息
+ pub message: String,
+ /// 是否可自动修复
+ pub auto_fixable: bool,
+}
+
+impl std::fmt::Display for EthLintDiagnostic {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ write!(
+ f,
+ "[NAC-LINT-E001] 去以太坊化错误:在 {}..{} 发现 '{}'\n\
+ → 错误:{}\n\
+ → 建议:将 '{}' 替换为 '{}'",
+ self.span.start,
+ self.span.end,
+ self.found,
+ self.message,
+ self.found,
+ self.suggestion
+ )
+ }
+}
+
+/// NAC 去以太坊化 Lint 检查器
+pub struct NacDeEthLint {
+ rules: Vec,
+}
+
+impl NacDeEthLint {
+ /// 创建标准 NAC 去以太坊化检查器
+ pub fn new() -> Self {
+ let rules = vec![
+ // RPC 相关
+ EthTermRule {
+ eth_term: "RPC",
+ nac_term: "NAC Lens",
+ message: "NAC 公链不使用 RPC 协议。NAC 原生网络协议为 NAC Lens(元协议文明网络栈)",
+ case_insensitive: false,
+ },
+ EthTermRule {
+ eth_term: "rpc",
+ nac_term: "nac_lens",
+ message: "NAC 公链不使用 rpc。请使用 NAC Lens 协议(nac_lens)",
+ case_insensitive: false,
+ },
+ EthTermRule {
+ eth_term: "NRPC",
+ nac_term: "NAC Lens",
+ message: "NRPC 已更名为 NAC Lens。请使用 NAC Lens 协议",
+ case_insensitive: false,
+ },
+ EthTermRule {
+ eth_term: "JSON-RPC",
+ nac_term: "NAC Lens",
+ message: "NAC 公链不使用 JSON-RPC(以太坊协议)。请使用 NAC Lens 原生协议",
+ case_insensitive: true,
+ },
+ EthTermRule {
+ eth_term: "jsonrpc",
+ nac_term: "nac_lens",
+ message: "NAC 公链不使用 jsonrpc 字段(以太坊 JSON-RPC 格式)。请使用 NAC Lens 请求格式",
+ case_insensitive: false,
+ },
+ // 虚拟机相关
+ EthTermRule {
+ eth_term: "EVM",
+ nac_term: "NVM",
+ message: "NAC 公链不使用 EVM(以太坊虚拟机)。NAC 原生虚拟机为 NVM(NAC Virtual Machine)",
+ case_insensitive: false,
+ },
+ EthTermRule {
+ eth_term: "evm",
+ nac_term: "nvm",
+ message: "NAC 公链不使用 evm。请使用 NVM(nvm)",
+ case_insensitive: false,
+ },
+ // 智能合约语言
+ EthTermRule {
+ eth_term: "Solidity",
+ nac_term: "Charter",
+ message: "NAC 公链不使用 Solidity(以太坊合约语言)。NAC 原生智能合约语言为 Charter",
+ case_insensitive: false,
+ },
+ EthTermRule {
+ eth_term: "solidity",
+ nac_term: "charter",
+ message: "NAC 公链不使用 solidity。请使用 Charter 合约语言",
+ case_insensitive: false,
+ },
+ // 共识机制
+ EthTermRule {
+ eth_term: "PoS",
+ nac_term: "CBPP",
+ message: "NAC 公链不使用 PoS(权益证明)。NAC 原生共识为 CBPP(宪政区块生产协议)",
+ case_insensitive: false,
+ },
+ EthTermRule {
+ eth_term: "PoW",
+ nac_term: "CBPP",
+ message: "NAC 公链不使用 PoW(工作量证明)。NAC 原生共识为 CBPP",
+ case_insensitive: false,
+ },
+ // 网络协议
+ EthTermRule {
+ eth_term: "P2P",
+ nac_term: "CSNP",
+ message: "NAC 公链不使用传统 P2P 网络。NAC 原生网络协议为 CSNP(宪政感知神经网络协议)",
+ case_insensitive: false,
+ },
+ // 以太坊方法前缀
+ EthTermRule {
+ eth_term: "eth_",
+ nac_term: "nac_",
+ message: "NAC 公链不使用 eth_ 方法前缀(以太坊 JSON-RPC)。请使用 nac_ 方法前缀",
+ case_insensitive: false,
+ },
+ EthTermRule {
+ eth_term: "net_version",
+ nac_term: "nac_chainId",
+ message: "NAC 公链不使用 net_version(以太坊方法)。请使用 nac_chainId",
+ case_insensitive: false,
+ },
+ EthTermRule {
+ eth_term: "web3_",
+ nac_term: "nac_",
+ message: "NAC 公链不使用 web3_ 方法前缀。请使用 nac_ 方法前缀",
+ case_insensitive: false,
+ },
+ // 代币标准
+ EthTermRule {
+ eth_term: "ERC20",
+ nac_term: "ACC-20",
+ message: "NAC 公链不使用 ERC20(以太坊代币标准)。NAC 原生代币标准为 ACC-20",
+ case_insensitive: false,
+ },
+ EthTermRule {
+ eth_term: "ERC-20",
+ nac_term: "ACC-20",
+ message: "NAC 公链不使用 ERC-20。NAC 原生代币标准为 ACC-20",
+ case_insensitive: false,
+ },
+ EthTermRule {
+ eth_term: "ERC721",
+ nac_term: "ACC-721",
+ message: "NAC 公链不使用 ERC721(以太坊 NFT 标准)。NAC 原生 NFT 标准为 ACC-721",
+ case_insensitive: false,
+ },
+ // 地址类型
+ EthTermRule {
+ eth_term: "address(20)",
+ nac_term: "Address(32)",
+ message: "NAC 地址为 32 字节,不是以太坊的 20 字节地址",
+ case_insensitive: false,
+ },
+ ];
+
+ Self { rules }
+ }
+
+ /// 对源代码进行去以太坊化检查
+ pub fn check(&self, source: &str) -> Vec {
+ let mut diagnostics = Vec::new();
+
+ for rule in &self.rules {
+ let term = rule.eth_term;
+ let search = if rule.case_insensitive {
+ source.to_lowercase()
+ } else {
+ source.to_string()
+ };
+ let search_term = if rule.case_insensitive {
+ term.to_lowercase()
+ } else {
+ term.to_string()
+ };
+
+ let mut start = 0;
+ while let Some(pos) = search[start..].find(&search_term) {
+ let abs_pos = start + pos;
+ let end_pos = abs_pos + term.len();
+
+ // 检查是否是完整词(避免误匹配子字符串)
+ let before_ok = abs_pos == 0
+ || !source[..abs_pos]
+ .chars()
+ .last()
+ .map(|c| c.is_alphanumeric() || c == '_')
+ .unwrap_or(false);
+
+ let after_ok = end_pos >= source.len()
+ || !source[end_pos..]
+ .chars()
+ .next()
+ .map(|c| c.is_alphanumeric() || c == '_')
+ .unwrap_or(false)
+ || term.ends_with('_'); // 前缀匹配(如 eth_)
+
+ if before_ok && after_ok {
+ diagnostics.push(EthLintDiagnostic {
+ span: abs_pos..end_pos,
+ found: source[abs_pos..end_pos].to_string(),
+ suggestion: rule.nac_term.to_string(),
+ message: rule.message.to_string(),
+ auto_fixable: true,
+ });
+ }
+
+ start = abs_pos + 1;
+ }
+ }
+
+ // 按位置排序
+ diagnostics.sort_by_key(|d| d.span.start);
+ diagnostics
+ }
+
+ /// 自动修复:将所有以太坊化术语替换为 NAC 术语
+ pub fn auto_fix(&self, source: &str) -> (String, Vec) {
+ let diagnostics = self.check(source);
+ if diagnostics.is_empty() {
+ return (source.to_string(), diagnostics);
+ }
+
+ // 构建替换映射(按长度降序,避免短词替换长词的子串)
+ let mut replacement_map: HashMap<&str, &str> = HashMap::new();
+ for rule in &self.rules {
+ replacement_map.insert(rule.eth_term, rule.nac_term);
+ }
+
+ let mut result = source.to_string();
+ // 从后往前替换,避免位置偏移
+ let mut sorted_diags = diagnostics.clone();
+ sorted_diags.sort_by_key(|d| std::cmp::Reverse(d.span.start));
+
+ for diag in &sorted_diags {
+ if diag.auto_fixable {
+ result.replace_range(diag.span.clone(), &diag.suggestion);
+ }
+ }
+
+ (result, diagnostics)
+ }
+
+ /// 生成人类可读的错误报告
+ pub fn report(&self, source: &str, filename: &str) -> String {
+ let diagnostics = self.check(source);
+ if diagnostics.is_empty() {
+ return format!("✅ [NAC-LINT] {} 通过去以太坊化检查,无以太坊化术语", filename);
+ }
+
+ let mut report = format!(
+ "❌ [NAC-LINT] {} 发现 {} 处以太坊化术语,必须修正:\n\n",
+ filename,
+ diagnostics.len()
+ );
+
+ for (i, diag) in diagnostics.iter().enumerate() {
+ // 计算行号
+ let line_num = source[..diag.span.start].chars().filter(|&c| c == '\n').count() + 1;
+ report.push_str(&format!(
+ " [{}/{}] 第{}行:{}\n",
+ i + 1,
+ diagnostics.len(),
+ line_num,
+ diag
+ ));
+ report.push('\n');
+ }
+
+ report.push_str("\n💡 运行 `cnnl-compiler --fix` 可自动修正所有可修复的问题");
+ report
+ }
+}
+
+impl Default for NacDeEthLint {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test_rpc_detection() {
+ let lint = NacDeEthLint::new();
+ let source = "connect to RPC endpoint";
+ let diags = lint.check(source);
+ assert!(!diags.is_empty(), "应检测到 RPC");
+ assert_eq!(diags[0].suggestion, "NAC Lens");
+ }
+
+ #[test]
+ fn test_evm_detection() {
+ let lint = NacDeEthLint::new();
+ let source = "deploy to EVM";
+ let diags = lint.check(source);
+ assert!(!diags.is_empty(), "应检测到 EVM");
+ assert_eq!(diags[0].suggestion, "NVM");
+ }
+
+ #[test]
+ fn test_solidity_detection() {
+ let lint = NacDeEthLint::new();
+ let source = "write Solidity contract";
+ let diags = lint.check(source);
+ assert!(!diags.is_empty(), "应检测到 Solidity");
+ assert_eq!(diags[0].suggestion, "Charter");
+ }
+
+ #[test]
+ fn test_eth_method_prefix() {
+ let lint = NacDeEthLint::new();
+ let source = r#"call "eth_blockNumber""#;
+ let diags = lint.check(source);
+ assert!(!diags.is_empty(), "应检测到 eth_ 前缀");
+ assert_eq!(diags[0].suggestion, "nac_");
+ }
+
+ #[test]
+ fn test_auto_fix() {
+ let lint = NacDeEthLint::new();
+ let source = "use RPC to connect to EVM";
+ let (fixed, diags) = lint.auto_fix(source);
+ assert!(!diags.is_empty());
+ assert!(!fixed.contains("RPC") || fixed.contains("NAC Lens"));
+ }
+
+ #[test]
+ fn test_clean_source() {
+ let lint = NacDeEthLint::new();
+ let source = "use NAC Lens to connect to NVM via Charter";
+ let diags = lint.check(source);
+ assert!(diags.is_empty(), "干净的 NAC 代码不应有警告");
+ }
+
+ #[test]
+ fn test_nrpc_detection() {
+ let lint = NacDeEthLint::new();
+ let source = "NRPC protocol version";
+ let diags = lint.check(source);
+ assert!(!diags.is_empty(), "应检测到 NRPC");
+ assert_eq!(diags[0].suggestion, "NAC Lens");
+ }
+
+ #[test]
+ fn test_erc20_detection() {
+ let lint = NacDeEthLint::new();
+ let source = "implement ERC20 token";
+ let diags = lint.check(source);
+ assert!(!diags.is_empty(), "应检测到 ERC20");
+ assert_eq!(diags[0].suggestion, "ACC-20");
+ }
+}
diff --git a/config/mainnet_config.toml b/config/mainnet_config.toml
index 9841ddc..89af87e 100644
--- a/config/mainnet_config.toml
+++ b/config/mainnet_config.toml
@@ -35,7 +35,7 @@ protocol = "CSNP"
# CSNP端口(不使用30303)
csnp_port = 39303
# NAC Lens端口(不使用8545)
-nrpc_port = 9547
+nac_lens_port = 9547
# WebSocket端口
ws_port = 9548
# 最大连接数
diff --git a/create_remaining_issues.sh b/create_remaining_issues.sh
index 015785b..6979f1f 100644
--- a/create_remaining_issues.sh
+++ b/create_remaining_issues.sh
@@ -58,7 +58,7 @@ echo "工单17: #018 nac-acc-1400 ACC-1400证券协议完善 (P3-低)"
echo "完成度: 60% -> 100%"
echo ""
-echo "工单18: #019 nac-nrpc4 NRPC4.0完善 (P3-低)"
+echo "工单18: #019 nac-lens NAC Lens完善 (P3-低)"
echo "完成度: 65% -> 100%"
echo ""
diff --git a/docs/DEVELOPMENT_PLAN.md b/docs/DEVELOPMENT_PLAN.md
index c828667..df68137 100644
--- a/docs/DEVELOPMENT_PLAN.md
+++ b/docs/DEVELOPMENT_PLAN.md
@@ -45,7 +45,7 @@
| 碎片化协议 | 10% | ❌ 需要实现 |
| 加密DNA生成法则 | 10% | ❌ 需要实现 |
| NAC区块浏览器 | 30% | ❌ 需要实现 |
-| NRPC 3.0 | 8% | ❌ 需要实现 |
+| NAC Lens | 8% | ❌ 需要实现 |
---
@@ -194,7 +194,7 @@
- [ ] 估值历史记录
- [ ] 估值服务API
- [ ] RESTful API
- - [ ] NRPC 3.0接口
+ - [ ] NAC Lens接口
- [ ] 估值查询服务
- [ ] 估值更新通知
@@ -509,22 +509,22 @@
---
-#### 4.2 NRPC 3.0协议
+#### 4.2 NAC Lens协议
**目标**: 实现NAC原生RPC协议3.0
**任务清单**:
-- [ ] NRPC协议规范
+- [ ] NAC Lens协议规范
- [ ] 消息格式定义
- [ ] 请求/响应模型
- [ ] 错误处理机制
- [ ] 版本兼容性
-- [ ] NRPC服务端实现
+- [ ] NAC Lens服务端实现
- [ ] RPC服务器
- [ ] 方法注册和调用
- [ ] 权限验证
- [ ] 性能优化
-- [ ] NRPC客户端SDK
+- [ ] NAC Lens客户端SDK
- [ ] Rust SDK
- [ ] JavaScript SDK
- [ ] Python SDK
@@ -537,9 +537,9 @@
- [ ] 宪法收据查询方法
**交付物**:
-- NRPC 3.0协议规范文档
-- NRPC服务端实现
-- NRPC客户端SDK(4种语言)
+- NAC Lens协议规范文档
+- NAC Lens服务端实现
+- NAC Lens客户端SDK(4种语言)
- API文档
- 测试用例
- 开发者指南
@@ -592,7 +592,7 @@
| 第一阶段:执行层 | 1-2个月 | NVM-L0、CBPP、CSNP完整实现 |
| 第二阶段:宪法层 | 3-6个月 | AI估值、AI合规、DNA管理、五大闭环、GNACS Pro V2.0 |
| 第三阶段:资产上链 | 2-3个月 | 七大资产类别上链指引、资产生命周期管理 |
-| 第四阶段:生态工具 | 2-3个月 | 区块浏览器、NRPC 3.0、开发者工具链 |
+| 第四阶段:生态工具 | 2-3个月 | 区块浏览器、NAC Lens、开发者工具链 |
| **总计** | **8-14个月** | **NAC公链完整实现** |
---
@@ -675,7 +675,7 @@
| M7: 五大闭环完成 | 第8个月 | 五大核心闭环+测试 |
| M8: 资产上链指引完成 | 第10个月 | 七大资产类别上链指引 |
| M9: 区块浏览器完成 | 第12个月 | NAC区块浏览器 |
-| M10: NRPC 3.0完成 | 第13个月 | NRPC 3.0协议+SDK |
+| M10: NAC Lens完成 | 第13个月 | NAC Lens协议+SDK |
| M11: 开发者工具链完成 | 第14个月 | 完整开发者工具链 |
| M12: 测试网上线 | 第14个月 | NAC测试网 |
diff --git a/docs/NAC_2.0_Tagification_Plan.md b/docs/NAC_2.0_Tagification_Plan.md
index 755b253..dd55cac 100644
--- a/docs/NAC_2.0_Tagification_Plan.md
+++ b/docs/NAC_2.0_Tagification_Plan.md
@@ -26,7 +26,7 @@ NAC 1.0 (当前) NAC 2.0 (2026 Q2) NAC 3.0 (2027)
├─ CNNL宪法 ├─ 可视化编辑器 ├─ ASIC芯片
├─ NVM虚拟机 ├─ 零代码开发 ├─ DLL模块
├─ CBPP共识 ├─ 实时预览 ├─ 自定义内存
-└─ NRPC4.0 API └─ 一键部署 └─ 1 USB = 1 Block
+└─ NAC Lens API └─ 一键部署 └─ 1 USB = 1 Block
```
### 1.2 NAC 2.0定位
diff --git a/docs/NAC_Complete_Technical_Documentation.md b/docs/NAC_Complete_Technical_Documentation.md
index c3824d3..c643424 100644
--- a/docs/NAC_Complete_Technical_Documentation.md
+++ b/docs/NAC_Complete_Technical_Documentation.md
@@ -322,7 +322,7 @@ NAC链 以太坊链
- [ ] CBPP共识完整实现
- [ ] CSNP网络协议
- [ ] 量子浏览器
-- [ ] NRPC3.0
+- [ ] NAC Lens
- [ ] XTZH稳定币机制
### 📋 计划中(v3.0.0)
diff --git a/docs/NAC_Deployment_Delivery_Report_20260220.md b/docs/NAC_Deployment_Delivery_Report_20260220.md
index 87bf662..bc90b0d 100644
--- a/docs/NAC_Deployment_Delivery_Report_20260220.md
+++ b/docs/NAC_Deployment_Delivery_Report_20260220.md
@@ -48,7 +48,7 @@
| # | 模块名称 | 状态 | 评分 | 运行时间 | 备注 |
|---|---------|------|------|---------|------|
| 1 | **CBPP共识节点** | ✅ 运行中 | 5/5⭐ | 13小时+ | 区块高度15672+ |
-| 2 | **NAC API Server** | ✅ 运行中 | 5/5⭐ | 10小时+ | NRPC4.0协议 |
+| 2 | **NAC API Server** | ✅ 运行中 | 5/5⭐ | 10小时+ | NAC Lens协议 |
| 3 | **Charter编译器** | ✅ 可用 | 3/5⭐ | - | 文档已完成 |
| 4 | **CNNL编译器** | ✅ 可用 | 3/5⭐ | - | 文档已完成 |
| 5 | **Prometheus监控** | ✅ 运行中 | 5/5⭐ | 12小时+ | 监控4个目标 |
@@ -71,8 +71,8 @@
**L1层(协议层)**:
- 9545: CBPP共识节点(内部)
- 9546: CBPP共识节点(外部)
-- 9547: NRPC4.0 HTTP端点
-- 9548: NRPC4.0 WebSocket端点
+- 9547: NAC Lens HTTP端点
+- 9548: NAC Lens WebSocket端点
- 9549: NVM虚拟机端点
**L2层(应用层)**:
@@ -258,7 +258,7 @@
| **虚拟机** | NVM 2.0 | 非EVM,RWA专用OpCode |
| **共识** | CBPP | 非PoS/PoW,3秒出块,流体区块 |
| **网络** | CSNP | 非P2P,结构化网络协议 |
-| **RPC** | NRPC4.0 | 非JSON-RPC,原生协议 |
+| **RPC** | NAC Lens | 非JSON-RPC,原生协议 |
| **宪法** | CNNL | 宪政神经网络语言 |
### 7.2 与以太坊的区别
diff --git a/docs/NAC_Work_Log_20260220.md b/docs/NAC_Work_Log_20260220.md
index ae76240..7e6f73f 100644
--- a/docs/NAC_Work_Log_20260220.md
+++ b/docs/NAC_Work_Log_20260220.md
@@ -35,7 +35,7 @@
**执行内容**:
- 验证CBPP共识节点(区块高度、出块间隔)
-- 验证NAC API Server(NRPC4.0协议、端点响应)
+- 验证NAC API Server(NAC Lens协议、端点响应)
- 验证Charter编译器(版本、帮助信息、编译测试)
- 验证CNNL编译器(参数、语法解析)
- 验证Prometheus监控(端口、目标、数据)
diff --git a/docs/VISION_Wallet_核心要点.md b/docs/VISION_Wallet_核心要点.md
index 47fe76e..c1ab114 100644
--- a/docs/VISION_Wallet_核心要点.md
+++ b/docs/VISION_Wallet_核心要点.md
@@ -236,7 +236,7 @@ VISION内置宪政免疫系统客户端:
| nac-wallet-core | 账户管理、交易构造 |
| nac-cee | 宪法收据获取与验证 |
| nac-udm | GNACS解析 |
-| nac-nrpc | RPC通信 |
+| nac-lens | RPC通信 |
| nac-lens | 跨链与多宇宙功能 |
---
diff --git a/docs/deployment/NAC_Module_Verification_Report.md b/docs/deployment/NAC_Module_Verification_Report.md
index 7da5f6d..2f6791b 100644
--- a/docs/deployment/NAC_Module_Verification_Report.md
+++ b/docs/deployment/NAC_Module_Verification_Report.md
@@ -52,14 +52,14 @@
- ✅ 进程运行稳定
- ✅ 端口监听正常 (0.0.0.0:9550)
- ✅ /health端点响应正常
-- ✅ NRPC4.0协议正确
+- ✅ NAC Lens协议正确
- ✅ 版本信息: v2.0.0
- ✅ 流体区块模式标识正确
**API响应示例**:
```json
{
- "protocol": "NRPC/4.0",
+ "protocol": "NAC Lens",
"version": "2.0.0",
"status": "ok"
}
@@ -232,7 +232,7 @@ curl http://localhost:9090/api/v1/status/config
**功能验证**:
- ✅ 创世区块创建
- ✅ CBPP共识协议
-- ✅ NRPC3.0端点配置
+- ✅ NAC Lens端点配置
- ✅ WebSocket支持
**输出示例**:
diff --git a/docs/issues/ISSUE-001-Port-Standardization.md b/docs/issues/ISSUE-001-Port-Standardization.md
index 9ec0d8c..c01295c 100644
--- a/docs/issues/ISSUE-001-Port-Standardization.md
+++ b/docs/issues/ISSUE-001-Port-Standardization.md
@@ -46,8 +46,8 @@ NAC主网上线后,发现系统中仍存在以太坊端口使用习惯,违
```
9545 CBPP节点RPC(HTTP) - Constitutional Block Production Protocol
9546 CBPP WebSocket - CBPP实时通信
-9547 NRPC4.0 HTTP - NAC RPC Protocol 4.0
-9548 NRPC4.0 WebSocket - NRPC4.0实时通信
+9547 NAC Lens HTTP - NAC RPC Protocol 4.0
+9548 NAC Lens WebSocket - NAC Lens实时通信
9549 NVM RPC - NAC Virtual Machine
```
@@ -74,8 +74,8 @@ NAC主网上线后,发现系统中仍存在以太坊端口使用习惯,违
| 以太坊端口 | 原用途 | NAC替代端口 | 清理状态 |
|-----------|--------|------------|---------|
-| 8545 | Geth HTTP RPC | 9547 (NRPC4.0) | ✅ 已清理 |
-| 8546 | Geth WebSocket | 9548 (NRPC4.0 WS) | ✅ 已清理 |
+| 8545 | Geth HTTP RPC | 9547 (NAC Lens) | ✅ 已清理 |
+| 8546 | Geth WebSocket | 9548 (NAC Lens WS) | ✅ 已清理 |
| 30303 | P2P网络 | 39303 (CSNP) | ✅ 已清理 |
| 8080 | 通用API | 9550 (NAC API) | ✅ 已替换 |
@@ -105,11 +105,11 @@ NAC主网上线后,发现系统中仍存在以太坊端口使用习惯,违
1. **`/opt/nac/config/api-server.toml`**
- 端口: 9550 (NAC API Gateway)
- 移除了8545/8546引用
- - 更新为NRPC4.0协议
+ - 更新为NAC Lens协议
2. **`/opt/nac/config/mainnet_config.toml`**
- CBPP端口: 9545/9546
- - NRPC端口: 9547/9548
+ - NAC Lens端口: 9547/9548
- NVM端口: 9549
- CSNP端口: 39303
- 移除了所有以太坊端口引用
diff --git a/docs/issues/ISSUE-002-Module-Verification.md b/docs/issues/ISSUE-002-Module-Verification.md
index 4bec5db..82b7973 100644
--- a/docs/issues/ISSUE-002-Module-Verification.md
+++ b/docs/issues/ISSUE-002-Module-Verification.md
@@ -56,7 +56,7 @@ NAC主网已部署多个核心模块,需要逐一验证每个模块的功能
#### ✅ 模块2:NAC API Server(5/5分)
- 进程稳定运行10小时+
- 端口9550正常监听
-- NRPC4.0协议正确
+- NAC Lens协议正确
- API响应正常
- 版本v2.0.0
diff --git a/docs/issues/ISSUE-004-NAC-2.0-Planning.md b/docs/issues/ISSUE-004-NAC-2.0-Planning.md
index c00ba59..887cb1a 100644
--- a/docs/issues/ISSUE-004-NAC-2.0-Planning.md
+++ b/docs/issues/ISSUE-004-NAC-2.0-Planning.md
@@ -36,7 +36,7 @@ NAC 1.0已经实现了基于Charter和CNNL的编程模式,但仍需要专业
- CNNL宪法语言
- NVM虚拟机
- CBPP共识协议
-- NRPC4.0 API
+- NAC Lens API
**NAC 2.0(2026 Q2)- 标签化SDK模式**
- XML标签式开发
diff --git a/docs/issues/ISSUE-005-Complete-API-Server-Real-Data.md b/docs/issues/ISSUE-005-Complete-API-Server-Real-Data.md
index 6cb8680..8ff24e4 100644
--- a/docs/issues/ISSUE-005-Complete-API-Server-Real-Data.md
+++ b/docs/issues/ISSUE-005-Complete-API-Server-Real-Data.md
@@ -104,7 +104,7 @@
- 添加新的类和方法
**SDK必须支持**:
-- NRPC4.0协议
+- NAC Lens协议
- 所有API端点
- 错误处理
- 重试机制
@@ -128,7 +128,7 @@ consensus: "DAG" // 错误,应该是CBPP
1. 移除所有模拟数据
2. 使用真实API:`https://api.newassetchain.io`
3. 实时获取区块、交易、地址数据
-4. 修正技术信息(CBPP共识、NRPC4.0协议)
+4. 修正技术信息(CBPP共识、NAC Lens协议)
5. 添加实时更新(WebSocket)
**必须实现的功能**:
@@ -191,7 +191,7 @@ consensus: "DAG" // 错误,应该是CBPP
┌─────────────────────────────────────┐
│ NAC API Server (Go + Gin) │
│ 端口: 9551 (新端口) │
-│ 协议: NRPC4.0 │
+│ 协议: NAC Lens │
└─────────────────────────────────────┘
│
├─► CBPP节点 (端口9545)
@@ -331,7 +331,7 @@ CBPP节点 ──► API服务器 ──► 前端系统
## 相关文档
- NAC端口标准文档
-- NRPC4.0协议规范
+- NAC Lens协议规范
- CBPP共识协议文档
- ACC-20资产标准
- Charter智能合约语言规范
diff --git a/docs/issues/ISSUE-023_nac-sdk.md b/docs/issues/ISSUE-023_nac-sdk.md
index 53509d6..c733bb2 100644
--- a/docs/issues/ISSUE-023_nac-sdk.md
+++ b/docs/issues/ISSUE-023_nac-sdk.md
@@ -12,7 +12,7 @@
## 📋 模块信息
-**核心功能**: #### 1.1 NRPC3Client 结构体
+**核心功能**: #### 1.1 NacLensClient 结构体
**代码行数**: 302行
**剩余工作量**: 5%
diff --git a/docs/issues/ISSUE-012_nac-nrpc4.md b/docs/issues/issue-012_nac-nac_lens.md
similarity index 100%
rename from docs/issues/ISSUE-012_nac-nrpc4.md
rename to docs/issues/issue-012_nac-nac_lens.md
diff --git a/docs/modules/nac-cli分析报告.md b/docs/modules/nac-cli分析报告.md
index fbc08a0..d582dfc 100644
--- a/docs/modules/nac-cli分析报告.md
+++ b/docs/modules/nac-cli分析报告.md
@@ -65,7 +65,7 @@ nac-cli/
│ │ └── utils.rs - 工具命令
│ ├── client/ (80行) - RPC客户端
│ │ ├── mod.rs - 客户端模块
-│ │ └── nrpc.rs - NRPC客户端
+│ │ └── nrpc.rs - NAC Lens客户端
│ ├── toolbox/ (317行) - 开发工具箱v2.0
│ │ ├── templates.rs - 项目模板
│ │ ├── sandbox.rs - 宪法沙箱
@@ -537,7 +537,7 @@ pub async fn execute(cmd: &AccountCommands, cli: &Cli) -> Result<()> {
**描述**: client/nrpc.rs只有框架,没有实际RPC调用
-**建议**: 实现NRPC客户端
+**建议**: 实现NAC Lens客户端
```rust
// client/nrpc.rs
pub struct NrpcClient {
@@ -857,7 +857,7 @@ nac-cli
├── 应该依赖(未实现)
│ ├── nac-sdk (区块链SDK)
│ ├── nac-wallet-core (钱包核心)
-│ └── nac-nrpc (RPC协议)
+│ └── nac-lens (RPC协议)
└── 被依赖
└── 开发者使用
```
@@ -869,7 +869,7 @@ nac-cli
### 短期目标 (1周)
1. **实现RPC客户端** (优先级P1)
- - NRPC协议实现
+ - NAC Lens协议实现
- 所有RPC方法
- 错误处理
diff --git a/docs/modules/nac-nrpc4分析报告.md b/docs/modules/nac-nac_lens分析报告.md
similarity index 99%
rename from docs/modules/nac-nrpc4分析报告.md
rename to docs/modules/nac-nac_lens分析报告.md
index b4a87b2..c7f3fb5 100644
--- a/docs/modules/nac-nrpc4分析报告.md
+++ b/docs/modules/nac-nac_lens分析报告.md
@@ -267,10 +267,10 @@ pub struct ValueExchangeMessage {
- ✅ 自动汇率转换
- ✅ 支持XTZH、XIC等多种价值类型
-#### 2.8 NAC Lens消息类型 (Nrpc4Message)
+#### 2.8 NAC Lens消息类型 (NacLensMessage)
```rust
-pub enum Nrpc4Message {
+pub enum NacLensMessage {
CellRouting { ... }, // 元胞路由消息
CivilizationDiscovery { ... }, // 文明发现消息
SoulSignature { ... }, // 灵魂签名消息
@@ -582,7 +582,7 @@ pub struct UniversalConstitutionAuditor {
```rust
#[derive(Error, Debug)]
-pub enum Nrpc4Error {
+pub enum NacLensError {
CellRoutingError(String), // 元胞路由错误
CivilizationDiscoveryError(String), // 文明发现错误
SoulSignatureError(String), // 灵魂签名错误
diff --git a/docs/modules/nac-nrpc分析报告.md b/docs/modules/nac-nrpc分析报告.md
index 2c58b45..a3fc5d7 100644
--- a/docs/modules/nac-nrpc分析报告.md
+++ b/docs/modules/nac-nrpc分析报告.md
@@ -1,6 +1,6 @@
-# nac-nrpc 模块深度分析报告
+# nac-lens 模块深度分析报告
-**模块名称**: nac-nrpc
+**模块名称**: nac-lens
**分析日期**: 2026-02-18
**分析人员**: NAC开发团队
diff --git a/docs/modules/nac-sdk分析报告.md b/docs/modules/nac-sdk分析报告.md
index d4eed82..f85f894 100644
--- a/docs/modules/nac-sdk分析报告.md
+++ b/docs/modules/nac-sdk分析报告.md
@@ -15,7 +15,7 @@
**完成度**: 95%
**功能描述**:
-NAC公链的Rust SDK,提供与NAC区块链交互的完整API接口,包括NRPC3.0客户端、资产管理、区块查询等功能。
+NAC公链的Rust SDK,提供与NAC区块链交互的完整API接口,包括NAC Lens客户端、资产管理、区块查询等功能。
---
@@ -28,7 +28,7 @@ nac-sdk/
│ ├── lib.rs # 库入口
│ ├── client/ # 客户端模块
│ │ ├── mod.rs
-│ │ └── nrpc3.rs # NRPC3.0客户端实现
+│ │ └── nac_lens.rs # NAC Lens客户端实现
│ ├── types/ # 类型定义
│ │ └── mod.rs # SDK类型定义
│ ├── error.rs # 错误类型
@@ -40,14 +40,14 @@ nac-sdk/
## 🔍 核心模块分析
-### 1. client/nrpc3.rs (NRPC3.0客户端)
+### 1. client/nac_lens.rs (NAC Lens客户端)
**代码行数**: ~350行
**核心功能**:
-#### 1.1 NRPC3Client 结构体
+#### 1.1 NacLensClient 结构体
```rust
-pub struct NRPC3Client {
+pub struct NacLensClient {
endpoint: String, // RPC端点URL
http_client: Client, // HTTP客户端
request_id: AtomicU64, // 请求ID计数器
@@ -57,7 +57,7 @@ pub struct NRPC3Client {
#### 1.2 核心方法
**call() 方法** - 单次RPC调用
-- 支持任意NRPC3.0方法调用
+- 支持任意NAC Lens方法调用
- 自动生成量子DNA(Quantum DNA)
- 基于SHA3-384哈希的请求去重
- 因果链追踪支持
@@ -80,7 +80,7 @@ let quantum_dna = {
- 减少网络往返次数
- 提高查询效率
-#### 1.3 NRPC3.0协议特点
+#### 1.3 NAC Lens协议特点
**与传统JSON-RPC的区别**:
1. **协议版本**: "3.0"(不是"2.0")
@@ -122,9 +122,9 @@ let quantum_dna = {
#### 2.2 核心类型定义
-**NRPC3Request** - NRPC3.0请求
+**NacLensRequest** - NAC Lens请求
```rust
-pub struct NRPC3Request {
+pub struct NacLensRequest {
pub nrpc: String, // 协议版本
pub id: RequestId, // 请求ID
pub method: String, // 方法名
@@ -214,7 +214,7 @@ tokio = { version = "1.0", features = ["full"] }
**关键依赖**:
1. **nac-udm**: NAC的核心类型定义库(28,777行代码)
-2. **reqwest**: HTTP客户端,用于NRPC3.0通信
+2. **reqwest**: HTTP客户端,用于NAC Lens通信
3. **tokio**: 异步运行时
4. **serde**: 序列化/反序列化
@@ -225,7 +225,7 @@ tokio = { version = "1.0", features = ["full"] }
### 单元测试
**types/mod.rs 测试**:
-1. `test_nrpc3_request_serialization` - NRPC3请求序列化测试
+1. `test_nac_lens_request_serialization` - NRPC3请求序列化测试
2. `test_asset_holdings` - 资产持有量测试
3. `test_block_coordinates` - 区块坐标测试
@@ -237,14 +237,14 @@ tokio = { version = "1.0", features = ["full"] }
### 已完成功能 (95%)
-1. ✅ NRPC3.0客户端实现
+1. ✅ NAC Lens客户端实现
- ✅ 单次RPC调用
- ✅ 批量RPC调用
- ✅ 量子DNA生成
- ✅ 错误处理
2. ✅ 类型定义系统
- - ✅ NRPC3.0请求/响应类型
+ - ✅ NAC Lens请求/响应类型
- ✅ 资产相关类型
- ✅ 区块相关类型
- ✅ 证书相关类型
@@ -261,7 +261,7 @@ tokio = { version = "1.0", features = ["full"] }
- ⏳ 自动重连机制
2. ⏳ 完整的集成测试
- - ⏳ 与真实NRPC3.0节点的集成测试
+ - ⏳ 与真实NAC Lens节点的集成测试
- ⏳ 性能测试
3. ⏳ 文档完善
@@ -284,7 +284,7 @@ nac-sdk完全基于NAC原生概念设计,**不使用任何以太坊概念**:
### 2. 量子DNA技术
-每个NRPC3.0请求都包含量子DNA,用于:
+每个NAC Lens请求都包含量子DNA,用于:
1. 请求去重
2. 因果链追踪
3. 量子安全编码
@@ -323,7 +323,7 @@ nac-sdk
1. **完整的SDK实现**: nac-sdk提供了完整的NAC区块链交互接口
2. **NAC原生概念**: 完全不依赖以太坊概念,使用NAC原生设计
-3. **NRPC3.0协议**: 实现了NAC专有的NRPC3.0协议
+3. **NAC Lens协议**: 实现了NAC专有的NAC Lens协议
4. **量子DNA技术**: 独特的请求追踪和去重机制
5. **依赖nac-udm**: 核心类型来自nac-udm模块
diff --git a/docs/modules/nac-wallet-core分析报告.md b/docs/modules/nac-wallet-core分析报告.md
index e70cd85..4178d75 100644
--- a/docs/modules/nac-wallet-core分析报告.md
+++ b/docs/modules/nac-wallet-core分析报告.md
@@ -37,7 +37,7 @@ nac-wallet-core/
│ ├── network.rs # 网络通信
│ ├── storage.rs # 存储管理
│ ├── cee_client.rs # CEE客户端
-│ └── nrpc_wrapper.rs # NRPC包装器
+│ └── nac_lens_wrapper.rs # NAC Lens包装器
└── tests/
└── integration_test.rs # 集成测试
```
@@ -209,7 +209,7 @@ pub mod gnacs_parser;
pub mod network;
pub mod storage;
pub mod cee_client;
-pub mod nrpc_wrapper;
+pub mod nac_lens_wrapper;
```
#### 4.2 WalletError 错误类型
@@ -290,8 +290,8 @@ tokio = { version = "1.0", features = ["full"] }
- 宪法执行引擎(CEE)客户端
- 宪法验证
-### nrpc_wrapper.rs - NRPC包装器
-- NRPC3.0协议包装
+### nac_lens_wrapper.rs - NRPC包装器
+- NAC Lens协议包装
- 简化RPC调用
---
diff --git a/docs/modules/完整分析总结报告.md b/docs/modules/完整分析总结报告.md
index aa8f091..62f3425 100644
--- a/docs/modules/完整分析总结报告.md
+++ b/docs/modules/完整分析总结报告.md
@@ -82,7 +82,7 @@
| 模块 | 行数 | 完成度 | 核心功能 |
|------|------|--------|---------|
| nac-csnp | - | - | CSNP主模块 |
-| nac-nrpc | - | - | NRPC主模块 |
+| nac-lens | - | - | NRPC主模块 |
| nac-ftan | - | - | FTAN模块 |
| nac-uca | - | - | UCA模块 |
| nac-ma-rcm | - | - | MA-RCM模块 |
diff --git a/docs/modules/完整模块统计报告.md b/docs/modules/完整模块统计报告.md
index 41c94cf..d02694d 100644
--- a/docs/modules/完整模块统计报告.md
+++ b/docs/modules/完整模块统计报告.md
@@ -19,7 +19,7 @@
| nac-csnp | 1 | 15 | ❌ 未实现 | CSNP网络协议(仅框架) |
| nac-csnp-l0 | - | - | ⏳ 待查 | CSNP L0层 |
| nac-csnp-l1 | - | - | ⏳ 待查 | CSNP L1层 |
-| nac-nrpc | - | - | ⏳ 待查 | NRPC协议 |
+| nac-lens | - | - | ⏳ 待查 | NAC Lens协议 |
| nac-lens | 9 | 1146 | ✅ 完整 | NAC Lens六层架构 |
**小计**: 2843行代码(已统计部分)
diff --git a/docs/modules/模块分析索引.md b/docs/modules/模块分析索引.md
index e290012..ac771e4 100644
--- a/docs/modules/模块分析索引.md
+++ b/docs/modules/模块分析索引.md
@@ -48,7 +48,7 @@
- nac-integration-tests
- nac-ma-rcm
- nac-monitor
-- nac-nrpc
+- nac-lens
- nac-rwa-exchange
- nac-test
- nac-uca
diff --git a/docs/nac-admin/v24-auth-unification-v21-v22-v23.md b/docs/nac-admin/v24-auth-unification-v21-v22-v23.md
index 811ace8..9864854 100644
--- a/docs/nac-admin/v24-auth-unification-v21-v22-v23.md
+++ b/docs/nac-admin/v24-auth-unification-v21-v22-v23.md
@@ -19,7 +19,7 @@
### v22 XTZH质押查询
- 路由:/xtzh-staking
-- NRPC4.0实时查询 + 降级策略(NRPC→缓存→模拟)
+- NAC Lens实时查询 + 降级策略(NRPC→缓存→模拟)
- 显示:余额/质押量/可用余额/最大发行配额/进度条
### v23 交易所上市材料包
diff --git a/docs/NRPC4.0_实现报告.md b/docs/nac_lens.0_实现报告.md
similarity index 100%
rename from docs/NRPC4.0_实现报告.md
rename to docs/nac_lens.0_实现报告.md
diff --git a/docs/NRPC4.0_核心要点.md b/docs/nac_lens.0_核心要点.md
similarity index 99%
rename from docs/NRPC4.0_核心要点.md
rename to docs/nac_lens.0_核心要点.md
index 27832a8..3d4532c 100644
--- a/docs/NRPC4.0_核心要点.md
+++ b/docs/nac_lens.0_核心要点.md
@@ -221,7 +221,7 @@ def holographic_encode(constitution_bytes):
| 现有模块 | NAC Lens角色 | 升级路径 |
|----------|--------------|----------|
| nac-csnp-l0/l1 | 作为L1元胞通信层 | 增加元胞状态管理、梯度路由 |
-| nac-nrpc | NRPC 3.0基础 | 扩展为NAC Lens,增加L1-L6层 |
+| nac-lens | NAC Lens基础 | 扩展为NAC Lens,增加L1-L6层 |
| nac-constitution-* | 宪法层 | 增加全息编码、分片存储 |
| nac-sdk | SDK层 | 增加NAC Lens客户端API |
| nac-wallet-* | 钱包层 | 支持文明间路由、灵魂签名 |
diff --git a/docs/operations-logs/NAC_Server_Deep_Traverse_Report_20260223.md b/docs/operations-logs/NAC_Server_Deep_Traverse_Report_20260223.md
index ff4285d..6ae4026 100644
--- a/docs/operations-logs/NAC_Server_Deep_Traverse_Report_20260223.md
+++ b/docs/operations-logs/NAC_Server_Deep_Traverse_Report_20260223.md
@@ -40,7 +40,7 @@
| 配置文件 | 域名 | 后端服务 | 说明 |
|---------|------|---------|------|
-| nac-api.conf | api.newassetchain.io | localhost:9545 | NAC API 服务(NRPC 4.0) |
+| nac-api.conf | api.newassetchain.io | localhost:9545 | NAC API 服务(NAC Lens) |
| nac-blockchain.conf | explorer.newassetchain.io | localhost:9551 | 区块链浏览器 |
| nac-monitor.conf | monitor.newassetchain.io | localhost:9090 | Prometheus 监控 |
| nac-onboarding.conf | onboarding.newassetchain.io | 静态文件 | 一键上链前端 |
@@ -174,7 +174,7 @@ src/
**性质**:Go 语言编写的 NAC 认证服务
-**主要功能**:JWT 认证、用户管理、NRPC 4.0 接口调用
+**主要功能**:JWT 认证、用户管理、NAC Lens 接口调用
### 4.3 /opt/nac-explorer-api/(Explorer API TypeScript 源码)
@@ -361,7 +361,7 @@ id.newassetchain.io/
### 9.2 DID 格式
- 格式:`did:nac:cbp:<32字节地址>`
-- 注册流程:用户注册 → 生成 DID → 通过 NRPC 4.0 提交节点注册 → 链上确认
+- 注册流程:用户注册 → 生成 DID → 通过 NAC Lens 提交节点注册 → 链上确认
### 9.3 KYC 权限体系
@@ -438,7 +438,7 @@ Laravel + Filament(PHP 管理面板框架)
| L-001 | /root/ 下存在大量历史版本目录(v1.0.0~v1.0.13) | /root/ | 整理归档到统一备份目录 |
| L-002 | /root/nac-explorer-api/ 目录为空 | /root/nac-explorer-api/ | 清理或填充内容 |
| L-003 | ssl 证书文件存放在 /root/ssl/ 而非标准位置 | /root/ssl/ | 建议移至 /etc/ssl/nac/ |
-| L-004 | 多处 README.md 提到 JSON-RPC,应改为 NRPC 4.0 | /root/README.md | 更新文档 |
+| L-004 | 多处 README.md 提到 JSON-RPC,应改为 NAC Lens | /root/README.md | 更新文档 |
---
@@ -484,7 +484,7 @@ Laravel + Filament(PHP 管理面板框架)
### 优先级 3(本月内处理)
8. **整理 /root/ 历史版本目录**,归档到 /opt/nac-archive/
9. **将 SSL 证书移至标准位置** /etc/ssl/nac/
-10. **更新所有 README.md 中的 JSON-RPC 描述**为 NRPC 4.0
+10. **更新所有 README.md 中的 JSON-RPC 描述**为 NAC Lens
---
diff --git a/docs/operations-logs/NAC_Server_Deep_Traverse_Report_20260224.md b/docs/operations-logs/NAC_Server_Deep_Traverse_Report_20260224.md
index 95eefae..d416ad3 100644
--- a/docs/operations-logs/NAC_Server_Deep_Traverse_Report_20260224.md
+++ b/docs/operations-logs/NAC_Server_Deep_Traverse_Report_20260224.md
@@ -88,7 +88,7 @@
- **核心模块**:
- **共识 (CBPP)**: 代码位于`nac-cbpp-l0`和`nac-cbpp-l1`,实现了基于信誉和贡献的流体区块生产网络共识机制。
- **虚拟机 (NVM)**: 代码位于`nac-nvm`,是执行Charter智能合约的虚拟机环境。
- - **RPC (NRPC)**: 代码位于`nac-nrpc`,实现了节点间的通信协议。
+ - **RPC (NRPC)**: 代码位于`nac-lens`,实现了节点间的通信协议。
- **网络 (CSNP)**: 代码位于`nac-csnp`,实现了链上状态通知协议。
- **语言 (Charter)**: 编译器位于`charter-compiler`,标准库位于`charter-std`。
diff --git a/docs/reports/NAC-Complete-System-Documentation.md b/docs/reports/NAC-Complete-System-Documentation.md
index 3fda82f..debdc40 100644
--- a/docs/reports/NAC-Complete-System-Documentation.md
+++ b/docs/reports/NAC-Complete-System-Documentation.md
@@ -18,7 +18,7 @@ NAC (NewAssetChain) 是全球首个"合规内置+资产锚定"的RWA原生公链
- ✅ **Charter语言** - 原生智能合约语言
- ✅ **NVM虚拟机** - 350个OpCode操作码
- ✅ **CBPP共识** - 宪政区块生产协议
-- ✅ **NRPC 3.0** - 原生RPC协议
+- ✅ **NAC Lens** - 原生RPC协议
- ✅ **CSNP网络** - 宪政结构化网络协议
---
@@ -73,7 +73,7 @@ NAC (NewAssetChain) 是全球首个"合规内置+资产锚定"的RWA原生公链
- **版本**: v2.0.0
- **文件**: 28个
- **代码**: ~5,000行
-- **功能**: NRPC3.0客户端、ACC协议、密码学
+- **功能**: NAC Lens客户端、ACC协议、密码学
### 6. NAC-Protocols (协议实现)
- **版本**: v1.0.0
@@ -173,7 +173,7 @@ nac-devtools build all
- **编码系统**: GNACS Pro V4.1.0(34位)
- **共识协议**: CBPP
- **网络协议**: CSNP
-- **RPC协议**: NRPC 3.0
+- **RPC协议**: NAC Lens
- **虚拟机**: NVM(350个OpCode)
- **编程语言**: Charter + Rust
diff --git a/docs/reports/NAC-Complete-System-Manifest.md b/docs/reports/NAC-Complete-System-Manifest.md
index 08b304c..c6ddf80 100644
--- a/docs/reports/NAC-Complete-System-Manifest.md
+++ b/docs/reports/NAC-Complete-System-Manifest.md
@@ -33,7 +33,7 @@
5. **nac-sdk/** - NAC SDK
- 客户端库
- - NRPC 3.0实现
+ - NAC Lens实现
- 已更新为SHA3-384标准 ✨
#### 今天新增的核心成果 ✨
diff --git a/docs/reports/NAC-Memory-System-Complete-Inventory.md b/docs/reports/NAC-Memory-System-Complete-Inventory.md
index 503cba2..b66f8c1 100644
--- a/docs/reports/NAC-Memory-System-Complete-Inventory.md
+++ b/docs/reports/NAC-Memory-System-Complete-Inventory.md
@@ -240,7 +240,7 @@ python3 tools/export.py --type document --output documents.md
| Miner/Validator | CBP | 宪法区块生产者 | NAC原生节点角色 |
| Gas | Gas (保留) | Gas | 保留但计算方式不同 |
| P2P/Gossip | CSNP | 宪政结构化网络协议 | NAC原生网络协议 |
-| RPC/JSON-RPC | NRPC3.0 | NAC远程过程调用3.0 | NAC原生RPC协议 |
+| RPC/JSON-RPC | NAC Lens | NAC远程过程调用3.0 | NAC原生RPC协议 |
| EVM | NVM | NAC虚拟机 | NAC原生虚拟机 |
| SHA256/Keccak256 | SHA3-384 | SHA3-384哈希 | NAC统一哈希算法(48字节) |
| Governance Token | XIC | XIC治理币 | NAC治理代币 |
diff --git a/docs/reports/NAC-Original-Backup-Analysis.md b/docs/reports/NAC-Original-Backup-Analysis.md
index c1a8cb9..e5c3670 100644
--- a/docs/reports/NAC-Original-Backup-Analysis.md
+++ b/docs/reports/NAC-Original-Backup-Analysis.md
@@ -216,9 +216,9 @@ NAC_Complete_Project_20260208_114453.tar.gz (842 MB)
- ✅ `nvm_v2/NVM-l0/src/csnp/` - 6个文件
- ✅ 完整实现,包含GIDS/MA-RCM/AA-PE/FTAN/UCA
-### NRPC 3.0(NAC RPC协议)
+### NAC Lens(NAC RPC协议)
- ✅ `nac-udm/src/l1_protocol/CBPP/nrpc.rs`
-- ✅ `nac-sdk/src/client/nrpc3.rs`
+- ✅ `nac-sdk/src/client/nac_lens.rs`
- ✅ `nvm_v2/NVM-l1/src/CBPP/nrpc.rs`
- ✅ `nvm_v2/NVM-l1/nrpc-server.py`
- ✅ 完整实现,客户端和服务端都有
diff --git a/docs/reports/NAC-Protocol-Inventory.md b/docs/reports/NAC-Protocol-Inventory.md
index 090cd5e..8344b0a 100644
--- a/docs/reports/NAC-Protocol-Inventory.md
+++ b/docs/reports/NAC-Protocol-Inventory.md
@@ -29,24 +29,24 @@
---
-### 2. NRPC 3.0(NAC RPC协议)
+### 2. NAC Lens(NAC RPC协议)
**位置1: nac-udm/src/l1_protocol/CBPP/nrpc.rs**
- NAC自研RPC协议定义
- 10,416 字节
**位置2: nvm_v2/NVM-l1/src/CBPP/nrpc.rs**
-- NRPC服务端实现
+- NAC Lens服务端实现
- 11,604 字节
-**位置3: nac-sdk/src/client/nrpc3.rs**
-- NRPC客户端实现
+**位置3: nac-sdk/src/client/nac_lens.rs**
+- NAC Lens客户端实现
- SDK集成
**位置4: nvm_v2/NVM-l1/nrpc-server.py**
-- Python版NRPC服务器
+- Python版NAC Lens服务器
-**总计**: 完整的NRPC 3.0实现(客户端+服务端)
+**总计**: 完整的NAC Lens实现(客户端+服务端)
---
@@ -68,7 +68,7 @@
| 协议 | 实现位置 | 代码量 | 状态 |
|------|---------|--------|------|
| CBPP | 3个位置 | 100+ KB | ✅ 完整 |
-| NRPC 3.0 | 4个位置 | 30+ KB | ✅ 完整 |
+| NAC Lens | 4个位置 | 30+ KB | ✅ 完整 |
| CSNP | 2个位置 | 20+ KB | ✅ 完整 |
---
@@ -83,7 +83,7 @@
5. ✅ Open Production Network(开放生产网络)
6. ✅ NRPC集成
-### NRPC 3.0核心功能
+### NAC Lens核心功能
1. ✅ RPC请求/响应处理
2. ✅ 客户端SDK
3. ✅ 服务端实现
@@ -100,7 +100,7 @@
**NAC系统包含完整的三大核心协议**:
- ✅ CBPP(宪政区块生产协议)
-- ✅ NRPC 3.0(NAC RPC协议)
+- ✅ NAC Lens(NAC RPC协议)
- ✅ CSNP(宪政结构化网络协议)
**所有协议均为NAC自主研发,不依赖外部实现。**
diff --git a/docs/reports/NAC-Source-Code-Structure-Report.md b/docs/reports/NAC-Source-Code-Structure-Report.md
index ea5e000..6347159 100644
--- a/docs/reports/NAC-Source-Code-Structure-Report.md
+++ b/docs/reports/NAC-Source-Code-Structure-Report.md
@@ -125,7 +125,7 @@ charter-std/
nac-sdk/
├── src/
│ ├── client/ # 客户端实现
-│ │ └── nrpc3.rs # NRPC 3.0客户端
+│ │ └── nac_lens.rs # NAC Lens客户端
│ ├── crypto/ # 密码学模块
│ ├── error/ # 错误处理
│ ├── protocols/ # 协议接口
@@ -147,7 +147,7 @@ nac-sdk/
```
#### 核心功能
-1. **NRPC 3.0客户端** - 与NAC节点通信
+1. **NAC Lens客户端** - 与NAC节点通信
2. **密码学工具** - SHA3-384哈希、签名验证
3. **协议接口** - ACC-20/721/1155/20C协议
4. **交易构建** - 构建和签名交易
@@ -252,7 +252,7 @@ nvm_v2/
│ │ ├── interpreter/ # 解释器
│ │ ├── opcodes/ # OpCode定义
│ │ └── runtime/ # 运行时环境
-│ ├── nrpc-server.py # NRPC服务器
+│ ├── nrpc-server.py # NAC Lens服务器
│ └── tests/ # 集成测试
├── acc-protocol/ # ACC协议实现
│ └── src/
@@ -759,9 +759,9 @@ Level 5 (工具层):
- **状态**: ✅ 完整实现
### RPC协议
-- **标准**: NRPC 3.0
+- **标准**: NAC Lens
- **实现**:
- - `nac-sdk/src/client/nrpc3.rs` (客户端)
+ - `nac-sdk/src/client/nac_lens.rs` (客户端)
- `nvm_v2/NVM-l1/nrpc-server.py` (服务端)
- **状态**: ✅ 完整实现
@@ -837,7 +837,7 @@ nac-serde/DESIGN.md
### 协议完整性
- ✅ CBPP共识协议(7个模块)
- ✅ CSNP网络协议(6个模块)
-- ✅ NRPC 3.0(客户端+服务端)
+- ✅ NAC Lens(客户端+服务端)
- ✅ ACC协议(ACC-20/721/1155/20C)
- ✅ GNACS分类系统
- ✅ 九层协议栈(Layer 0-9)
diff --git a/docs/reports/NAC-System-Contents-Manifest.md b/docs/reports/NAC-System-Contents-Manifest.md
index a64a2cd..063379b 100644
--- a/docs/reports/NAC-System-Contents-Manifest.md
+++ b/docs/reports/NAC-System-Contents-Manifest.md
@@ -57,7 +57,7 @@
- **代码行数**: 5,000+
- **状态**: ✅ 完成(已修复SHA3-384)
- **功能**:
- - NRPC 3.0客户端
+ - NAC Lens客户端
- ACC协议接口
- 密码学工具(SHA3-384)
- 交易构建器
@@ -372,7 +372,7 @@
- **状态**: ✅ 已实现
### RPC协议
-- **标准**: NRPC 3.0
+- **标准**: NAC Lens
- **状态**: ✅ 已实现
### 虚拟机
diff --git a/docs/security-reports/security-report-20260222.md b/docs/security-reports/security-report-20260222.md
index c0aa679..39db490 100644
--- a/docs/security-reports/security-report-20260222.md
+++ b/docs/security-reports/security-report-20260222.md
@@ -12,7 +12,7 @@
## 域名状态(11个域名)
- 正常:10个(200/302)
-- 异常:1个(rpc.newassetchain.io 502,NRPC 4.0 预留)
+- 异常:1个(rpc.newassetchain.io 502,NAC Lens 预留)
## 主网节点状态
- CBPP共识节点:active(端口9545/39303)
diff --git a/docs/specifications/NRPC3.0→NAC技术概念映射详细表(内部)(1).docx b/docs/specifications/nac_lens.0→nac技术概念映射详细表(内部)(1).docx
similarity index 100%
rename from docs/specifications/NRPC3.0→NAC技术概念映射详细表(内部)(1).docx
rename to docs/specifications/nac_lens.0→nac技术概念映射详细表(内部)(1).docx
diff --git a/docs/specifications/NRPC3.0→NAC技术概念映射详细表(内部).docx b/docs/specifications/nac_lens.0→nac技术概念映射详细表(内部).docx
similarity index 100%
rename from docs/specifications/NRPC3.0→NAC技术概念映射详细表(内部).docx
rename to docs/specifications/nac_lens.0→nac技术概念映射详细表(内部).docx
diff --git a/docs/specifications/NRPC3.0与NAC_XTZH预言机接口的兼容性评估与融合方案.docx b/docs/specifications/nac_lens.0与nac_xtzh预言机接口的兼容性评估与融合方案.docx
similarity index 100%
rename from docs/specifications/NRPC3.0与NAC_XTZH预言机接口的兼容性评估与融合方案.docx
rename to docs/specifications/nac_lens.0与nac_xtzh预言机接口的兼容性评估与融合方案.docx
diff --git a/docs/specifications/NRPC3.0:智能融合协议系统.docx b/docs/specifications/nac_lens.0:智能融合协议系统.docx
similarity index 100%
rename from docs/specifications/NRPC3.0:智能融合协议系统.docx
rename to docs/specifications/nac_lens.0:智能融合协议系统.docx
diff --git a/docs/standards/NAC_Port_Standard.md b/docs/standards/NAC_Port_Standard.md
index f06a18e..e58a33c 100644
--- a/docs/standards/NAC_Port_Standard.md
+++ b/docs/standards/NAC_Port_Standard.md
@@ -46,12 +46,12 @@
|------|---------|------|------|------|
| **9549** | NVM RPC | HTTP | NAC Virtual Machine RPC接口 | 🟢 规划 |
-#### 2.2.3 NRPC4.0协议
+#### 2.2.3 NAC Lens协议
| 端口 | 服务名称 | 协议 | 说明 | 状态 |
|------|---------|------|------|------|
-| **9547** | NRPC4.0 HTTP | HTTP | NAC RPC Protocol 4.0 | 🟢 规划 |
-| **9548** | NRPC4.0 WebSocket | WebSocket | NRPC4.0 实时通信 | 🟢 规划 |
+| **9547** | NAC Lens HTTP | HTTP | NAC RPC Protocol 4.0 | 🟢 规划 |
+| **9548** | NAC Lens WebSocket | WebSocket | NAC Lens 实时通信 | 🟢 规划 |
### 2.3 L2层 - 应用层
@@ -88,8 +88,8 @@
| 以太坊端口 | 原用途 | NAC替代端口 | 清理状态 |
|-----------|--------|------------|---------|
-| **8545** | Geth HTTP RPC | 9547 (NRPC4.0) | ⚠️ 待清理 |
-| **8546** | Geth WebSocket | 9548 (NRPC4.0 WS) | ⚠️ 待清理 |
+| **8545** | Geth HTTP RPC | 9547 (NAC Lens) | ⚠️ 待清理 |
+| **8546** | Geth WebSocket | 9548 (NAC Lens WS) | ⚠️ 待清理 |
| **30303** | P2P网络 | 39303 (CSNP) | ⚠️ 待清理 |
| **8080** | 通用API | 9550 (NAC API) | ✅ 已替换 |
diff --git a/fix_warnings.sh b/fix_warnings.sh
index c2e0687..fc7bfdc 100644
--- a/fix_warnings.sh
+++ b/fix_warnings.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-echo "修复NRPC4.0警告..."
-cd nac-nrpc4/src
+echo "修复NAC Lens警告..."
+cd nac-lens/src
sed -i '/redundancy_factor: f32,/d' l4_constitution.rs
sed -i 's/min_fragments: u32,/min_fragments: u32,\n #[allow(dead_code)]\n redundancy_factor: f32,/' l4_constitution.rs
diff --git a/integrate_upgrade_mechanism.sh b/integrate_upgrade_mechanism.sh
index f6cdd37..555a58a 100755
--- a/integrate_upgrade_mechanism.sh
+++ b/integrate_upgrade_mechanism.sh
@@ -38,8 +38,8 @@ MODULES=(
"nac-integration-tests"
"nac-ma-rcm"
"nac-monitor"
- "nac-nrpc"
- "nac-nrpc4"
+ "nac-lens"
+ "nac-lens"
"nac-nvm"
"nac-rwa-exchange"
"nac-sdk"
diff --git a/memory/principles/terminology.json b/memory/principles/terminology.json
index 3cf9630..2a058b5 100644
--- a/memory/principles/terminology.json
+++ b/memory/principles/terminology.json
@@ -201,14 +201,14 @@
{
"mapping_id": "TERM_012",
"wrong_term": "RPC/JSON-RPC",
- "correct_term": "NRPC3.0",
+ "correct_term": "NAC Lens",
"chinese": "NAC远程过程调用协议3.0",
"category": "protocol",
- "explanation": "NAC使用NRPC3.0而非传统RPC或JSON-RPC",
+ "explanation": "NAC使用NAC Lens而非传统RPC或JSON-RPC",
"examples": [
- "NRPC3.0 API(NRPC3.0接口)",
- "NRPC3.0 Client(NRPC3.0客户端)",
- "NRPC3.0 Endpoint(NRPC3.0端点)"
+ "NAC Lens API(NAC Lens接口)",
+ "NAC Lens Client(NAC Lens客户端)",
+ "NAC Lens Endpoint(NAC Lens端点)"
],
"must_not_use": [
"RPC",
diff --git a/memory/tools/INTEGRATION_GUIDE.md b/memory/tools/INTEGRATION_GUIDE.md
index 3f5d389..db9014e 100644
--- a/memory/tools/INTEGRATION_GUIDE.md
+++ b/memory/tools/INTEGRATION_GUIDE.md
@@ -231,7 +231,7 @@ vim .naclintrc
- Balance → Holdings
- PoW/PoS → CBPP
- P2P → CSNP
- - RPC → NRPC3.0
+ - RPC → NAC Lens
- EVM → NVM
- SHA256 → Blake3
- Governance Token → XIC
diff --git a/nac-api-server/ISSUE_007_NRPC4_UPGRADE.md b/nac-api-server/issue_007_nac_lens_upgrade.md
similarity index 100%
rename from nac-api-server/ISSUE_007_NRPC4_UPGRADE.md
rename to nac-api-server/issue_007_nac_lens_upgrade.md
diff --git a/nac-api-server/src/blockchain/client.rs b/nac-api-server/src/blockchain/client.rs
index 11ad189..25e9a37 100644
--- a/nac-api-server/src/blockchain/client.rs
+++ b/nac-api-server/src/blockchain/client.rs
@@ -21,7 +21,7 @@ impl NacClient {
/// 获取账户余额
pub async fn get_balance(&self, address: &str) -> Result {
let request = RpcRequest {
- jsonrpc: "2.0".to_string(),
+ jsonac_lens: "2.0".to_string(),
method: "nac_getBalance".to_string(),
params: vec![address.to_string()],
id: 1,
@@ -44,7 +44,7 @@ impl NacClient {
/// 发送交易
pub async fn send_transaction(&self, tx: Transaction) -> Result {
let request = RpcRequest {
- jsonrpc: "2.0".to_string(),
+ jsonac_lens: "2.0".to_string(),
method: "nac_sendTransaction".to_string(),
params: vec![serde_json::to_string(&tx)?],
id: 1,
@@ -67,7 +67,7 @@ impl NacClient {
/// 获取交易历史
pub async fn get_transactions(&self, address: &str, limit: u32) -> Result> {
let request = RpcRequest {
- jsonrpc: "2.0".to_string(),
+ jsonac_lens: "2.0".to_string(),
method: "nac_getTransactions".to_string(),
params: vec![address.to_string(), limit.to_string()],
id: 1,
@@ -90,7 +90,7 @@ impl NacClient {
/// 获取交易详情
pub async fn get_transaction(&self, tx_hash: &str) -> Result {
let request = RpcRequest {
- jsonrpc: "2.0".to_string(),
+ jsonac_lens: "2.0".to_string(),
method: "nac_getTransaction".to_string(),
params: vec![tx_hash.to_string()],
id: 1,
@@ -113,7 +113,7 @@ impl NacClient {
/// 获取区块高度
pub async fn get_block_height(&self) -> Result {
let request = RpcRequest {
- jsonrpc: "2.0".to_string(),
+ jsonac_lens: "2.0".to_string(),
method: "nac_blockNumber".to_string(),
params: vec![],
id: 1,
@@ -137,7 +137,7 @@ impl NacClient {
#[derive(Debug, Serialize, Deserialize)]
struct RpcRequest {
- jsonrpc: String,
+ jsonac_lens: String,
method: String,
params: Vec,
id: u64,
@@ -145,7 +145,7 @@ struct RpcRequest {
#[derive(Debug, Serialize, Deserialize)]
struct RpcResponse {
- jsonrpc: String,
+ jsonac_lens: String,
result: Option,
error: Option,
id: u64,
diff --git a/nac-cli-backup/src/client/mod.rs b/nac-cli-backup/src/client/mod.rs
index 40848a8..e1cff65 100644
--- a/nac-cli-backup/src/client/mod.rs
+++ b/nac-cli-backup/src/client/mod.rs
@@ -1,6 +1,6 @@
-mod nrpc;
+mod nac_lens;
// NrpcClient暂时不导出,因为还未在其他模块中使用
// 当需要使用时再导出
#[allow(unused)]
-use nrpc::NrpcClient;
+use crate::nac_lens::NrpcClient;
diff --git a/nac-cli-backup/src/client/nrpc.rs b/nac-cli-backup/src/client/nac_lens.rs
similarity index 100%
rename from nac-cli-backup/src/client/nrpc.rs
rename to nac-cli-backup/src/client/nac_lens.rs
diff --git a/nac-cli/README.md b/nac-cli/README.md
index ae5208d..796e21d 100644
--- a/nac-cli/README.md
+++ b/nac-cli/README.md
@@ -140,7 +140,7 @@ nac tx send <发送方地址> <接收方地址> <金额>
- **地址**: 32字节
- **加密**: AES-256-GCM
-### NRPC客户端
+### NAC Lens客户端
实现了60+个NAC RPC方法,包括账户、交易、合约、宪法、共识等。
diff --git a/nac-cli/docs/TICKET_9_COMPLETION_LOG.md b/nac-cli/docs/TICKET_9_COMPLETION_LOG.md
index 4cdaa08..d358af7 100644
--- a/nac-cli/docs/TICKET_9_COMPLETION_LOG.md
+++ b/nac-cli/docs/TICKET_9_COMPLETION_LOG.md
@@ -14,7 +14,7 @@
## 完成内容
-### 1. NRPC客户端实现(100%)
+### 1. NAC Lens客户端实现(100%)
实现了60+个NAC原生RPC方法,完全符合NAC Lens规范:
diff --git a/nac-cli/src/client/mod.rs b/nac-cli/src/client/mod.rs
index 3004b3c..a1247ca 100644
--- a/nac-cli/src/client/mod.rs
+++ b/nac-cli/src/client/mod.rs
@@ -1,3 +1,3 @@
-pub mod nrpc;
+pub mod nac_lens;
-pub use nrpc::NrpcClient;
+pub use crate::nac_lens::NrpcClient;
diff --git a/nac-cli/src/client/nrpc.rs b/nac-cli/src/client/nac_lens.rs
similarity index 99%
rename from nac-cli/src/client/nrpc.rs
rename to nac-cli/src/client/nac_lens.rs
index 4506649..37f1395 100644
--- a/nac-cli/src/client/nrpc.rs
+++ b/nac-cli/src/client/nac_lens.rs
@@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize};
use serde_json::{json, Value};
use std::time::Duration;
-/// NAC NRPC客户端
+/// NAC NAC Lens客户端
///
/// 使用NAC原生RPC方法,不继承以太坊的eth_*方法
pub struct NrpcClient {
@@ -14,7 +14,7 @@ pub struct NrpcClient {
}
impl NrpcClient {
- /// 创建新的NRPC客户端
+ /// 创建新的NAC Lens客户端
pub fn new(url: String) -> Self {
Self {
url,
diff --git a/nac-cli/src/commands/account.rs b/nac-cli/src/commands/account.rs
index 79b3eb4..441f9eb 100644
--- a/nac-cli/src/commands/account.rs
+++ b/nac-cli/src/commands/account.rs
@@ -1,5 +1,5 @@
use crate::cli::*;
-use crate::client::nrpc::NrpcClient;
+use crate::client::nac_lens::NrpcClient;
use crate::config::Config;
use crate::error::{CliError, Result};
use crate::utils::*;
diff --git a/nac-cli/src/commands/block.rs b/nac-cli/src/commands/block.rs
index 6c43932..553a88c 100644
--- a/nac-cli/src/commands/block.rs
+++ b/nac-cli/src/commands/block.rs
@@ -1,5 +1,5 @@
use crate::cli::*;
-use crate::client::nrpc::NrpcClient;
+use crate::client::nac_lens::NrpcClient;
use crate::config::Config;
use crate::error::{CliError, Result};
use crate::utils::*;
diff --git a/nac-cli/src/commands/constitution.rs b/nac-cli/src/commands/constitution.rs
index eb3c394..f56cd72 100644
--- a/nac-cli/src/commands/constitution.rs
+++ b/nac-cli/src/commands/constitution.rs
@@ -1,5 +1,5 @@
use crate::cli::*;
-use crate::client::nrpc::NrpcClient;
+use crate::client::nac_lens::NrpcClient;
use crate::config::Config;
use crate::error::{CliError, Result};
use crate::utils::*;
diff --git a/nac-cli/src/commands/contract.rs b/nac-cli/src/commands/contract.rs
index 6f52516..b575aa2 100644
--- a/nac-cli/src/commands/contract.rs
+++ b/nac-cli/src/commands/contract.rs
@@ -1,5 +1,5 @@
use crate::cli::*;
-use crate::client::nrpc::NrpcClient;
+use crate::client::nac_lens::NrpcClient;
use crate::config::Config;
use crate::error::{CliError, Result};
use crate::utils::*;
diff --git a/nac-cli/src/commands/node.rs b/nac-cli/src/commands/node.rs
index cfcf00f..0e30edf 100644
--- a/nac-cli/src/commands/node.rs
+++ b/nac-cli/src/commands/node.rs
@@ -1,5 +1,5 @@
use crate::cli::*;
-use crate::client::nrpc::NrpcClient;
+use crate::client::nac_lens::NrpcClient;
use crate::config::Config;
use crate::error::{CliError, Result};
use crate::utils::*;
diff --git a/nac-cli/src/commands/transaction.rs b/nac-cli/src/commands/transaction.rs
index 54b5fa1..e42c63c 100644
--- a/nac-cli/src/commands/transaction.rs
+++ b/nac-cli/src/commands/transaction.rs
@@ -1,5 +1,5 @@
use crate::cli::*;
-use crate::client::nrpc::NrpcClient;
+use crate::client::nac_lens::NrpcClient;
use crate::config::Config;
use crate::error::{CliError, Result};
use crate::utils::*;
diff --git a/nac-cross-chain-bridge/src/types.rs b/nac-cross-chain-bridge/src/types.rs
index 76f4b64..add511c 100644
--- a/nac-cross-chain-bridge/src/types.rs
+++ b/nac-cross-chain-bridge/src/types.rs
@@ -365,8 +365,8 @@ pub enum BridgeError {
#[error("NVM error: {0}")]
NVMError(String),
- #[error("NRPC error: {0}")]
- NRPCError(String),
+ #[error("NAC Lens error: {0}")]
+ NacLensError(String),
#[error("Charter contract error: {0}")]
CharterError(String),
diff --git a/nac-csnp/nac-nrpc/Cargo.toml b/nac-csnp/nac-nac_lens/Cargo.toml
similarity index 76%
rename from nac-csnp/nac-nrpc/Cargo.toml
rename to nac-csnp/nac-nac_lens/Cargo.toml
index cc01b10..f5eb081 100644
--- a/nac-csnp/nac-nrpc/Cargo.toml
+++ b/nac-csnp/nac-nac_lens/Cargo.toml
@@ -1,9 +1,9 @@
[package]
-name = "nac-nrpc"
+name = "nac-lens"
version = "4.0.0"
edition = "2021"
authors = ["NAC公链开发小组"]
-description = "NAC远程过程调用协议(NRPC3.0)"
+description = "NAC远程过程调用协议(NAC Lens)"
[dependencies]
tokio = { version = "1.0", features = ["full"] }
diff --git a/nac-csnp/nac-nrpc/src/lib.rs b/nac-csnp/nac-nac_lens/src/lib.rs
similarity index 100%
rename from nac-csnp/nac-nrpc/src/lib.rs
rename to nac-csnp/nac-nac_lens/src/lib.rs
diff --git a/nac-lens/src/connection.rs b/nac-lens/src/connection.rs
index 56e8622..46e5bf6 100644
--- a/nac-lens/src/connection.rs
+++ b/nac-lens/src/connection.rs
@@ -6,7 +6,7 @@ use std::collections::HashMap;
use std::sync::{Arc, Mutex};
use std::time::{Duration, Instant};
use serde::{Serialize, Deserialize};
-use crate::error::{Nrpc4Error, Result};
+use crate::error::{NacLensError, Result};
/// 连接状态
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
@@ -179,7 +179,7 @@ impl ConnectionPool {
// 检查是否达到最大连接数
if connections.len() >= self.config.max_connections {
- return Err(Nrpc4Error::NetworkError(
+ return Err(NacLensError::NetworkError(
"Connection pool is full".to_string(),
));
}
@@ -250,7 +250,7 @@ impl ConnectionPool {
Ok(())
} else {
- Err(Nrpc4Error::NetworkError(format!(
+ Err(NacLensError::NetworkError(format!(
"Connection {} not found",
conn_id
)))
@@ -275,7 +275,7 @@ impl ConnectionPool {
Ok(())
} else {
- Err(Nrpc4Error::NetworkError(format!(
+ Err(NacLensError::NetworkError(format!(
"Connection {} not found",
conn_id
)))
@@ -291,7 +291,7 @@ impl ConnectionPool {
conn.info.last_active = Self::current_timestamp();
Ok(())
} else {
- Err(Nrpc4Error::NetworkError(format!(
+ Err(NacLensError::NetworkError(format!(
"Connection {} not found",
conn_id
)))
@@ -366,7 +366,7 @@ impl ConnectionPool {
Ok(())
} else {
- Err(Nrpc4Error::NetworkError(format!(
+ Err(NacLensError::NetworkError(format!(
"Connection {} not found",
conn_id
)))
diff --git a/nac-lens/src/error.rs b/nac-lens/src/error.rs
index 6988374..2d71684 100644
--- a/nac-lens/src/error.rs
+++ b/nac-lens/src/error.rs
@@ -4,7 +4,7 @@ use thiserror::Error;
/// NAC Lens错误类型
#[derive(Error, Debug)]
-pub enum Nrpc4Error {
+pub enum NacLensError {
#[error("元胞路由错误: {0}")]
CellRoutingError(String),
@@ -43,4 +43,4 @@ pub enum Nrpc4Error {
}
/// NAC Lens结果类型
-pub type Result = std::result::Result;
+pub type Result = std::result::Result;
diff --git a/nac-lens/src/l1_cell.rs b/nac-lens/src/l1_cell.rs
index 3384907..b915191 100644
--- a/nac-lens/src/l1_cell.rs
+++ b/nac-lens/src/l1_cell.rs
@@ -6,7 +6,7 @@
//! - 无中央路由表,完全分布式
use crate::types::{CellId, CellState, CivilizationId, CivilizationVector};
-use crate::error::{Nrpc4Error, Result};
+use crate::error::{NacLensError, Result};
use std::collections::HashMap;
use tracing::{debug, info, warn};
@@ -63,7 +63,7 @@ impl CellularAutomatonRouter {
}
warn!("No route found to civilization: {}", target_civilization);
- Err(Nrpc4Error::CellRoutingError(format!(
+ Err(NacLensError::CellRoutingError(format!(
"No route to civilization: {}",
target_civilization
)))
diff --git a/nac-lens/src/l2_civilization.rs b/nac-lens/src/l2_civilization.rs
index d880115..2da38e6 100644
--- a/nac-lens/src/l2_civilization.rs
+++ b/nac-lens/src/l2_civilization.rs
@@ -14,7 +14,7 @@
//! - 抗量子 (可基于格密码实现)
use crate::types::{CivilizationId, CivilizationVector, Hash, SoulSignature};
-use crate::error::{Nrpc4Error, Result};
+use crate::error::{NacLensError, Result};
use sha2::{Sha256, Digest};
use tracing::{debug, info};
@@ -136,7 +136,7 @@ impl SoulSigner {
partial_signatures: Vec>,
) -> Result {
if partial_signatures.len() < self.threshold as usize {
- return Err(Nrpc4Error::SoulSignatureError(format!(
+ return Err(NacLensError::SoulSignatureError(format!(
"Not enough signatures: got {}, need {}",
partial_signatures.len(),
self.threshold
diff --git a/nac-lens/src/l3_aggregation.rs b/nac-lens/src/l3_aggregation.rs
index 73e27f3..383dc3c 100644
--- a/nac-lens/src/l3_aggregation.rs
+++ b/nac-lens/src/l3_aggregation.rs
@@ -10,7 +10,7 @@
//! - 新文明继承原文明的灵魂签名基础
use crate::types::{CivilizationId, CivilizationVector, ConsciousnessForkProposal, Hash};
-use crate::error::{Nrpc4Error, Result};
+use crate::error::{NacLensError, Result};
use std::collections::HashMap;
use tracing::{info, warn};
@@ -45,7 +45,7 @@ impl InterCivilizationRouter {
Ok(vec![format!("{}:9000", civ_id)])
} else {
warn!("Civilization not found: {}", civ_id);
- Err(Nrpc4Error::CivilizationDiscoveryError(format!(
+ Err(NacLensError::CivilizationDiscoveryError(format!(
"Civilization not found: {}",
civ_id
)))
diff --git a/nac-lens/src/l4_constitution.rs b/nac-lens/src/l4_constitution.rs
index 91898be..f8c35a0 100644
--- a/nac-lens/src/l4_constitution.rs
+++ b/nac-lens/src/l4_constitution.rs
@@ -1,7 +1,7 @@
//! L4 宪法层: 全息编码、分片存储
use crate::types::{ConstitutionHolographicFragment, Hash};
-use crate::error::{Nrpc4Error, Result};
+use crate::error::{NacLensError, Result};
use tracing::info;
use sha2::{Sha256, Digest};
@@ -23,7 +23,7 @@ impl ConstitutionHolographicEncoder {
/// 编码宪法为全息片段
pub fn encode(&self, constitution: &[u8], num_fragments: u32) -> Result> {
if num_fragments < self.min_fragments {
- return Err(Nrpc4Error::ConstitutionError(
+ return Err(NacLensError::ConstitutionError(
format!("片段数量不足,至少需要{}个", self.min_fragments)
));
}
@@ -58,7 +58,7 @@ impl ConstitutionHolographicEncoder {
/// 从片段重构宪法
pub fn reconstruct(&self, mut fragments: Vec) -> Result> {
if fragments.is_empty() {
- return Err(Nrpc4Error::ConstitutionError("片段列表为空".to_string()));
+ return Err(NacLensError::ConstitutionError("片段列表为空".to_string()));
}
fragments.sort_by_key(|f| f.fragment_id);
diff --git a/nac-lens/src/lib.rs b/nac-lens/src/lib.rs
index 9532bb9..0cba6c8 100644
--- a/nac-lens/src/lib.rs
+++ b/nac-lens/src/lib.rs
@@ -32,7 +32,7 @@ pub mod performance;
pub mod security;
pub mod retry;
-pub use error::{Nrpc4Error, Result};
+pub use error::{NacLensError, Result};
pub use types::*;
/// NAC Lens版本号
diff --git a/nac-lens/src/performance.rs b/nac-lens/src/performance.rs
index f9467c4..2b0977b 100644
--- a/nac-lens/src/performance.rs
+++ b/nac-lens/src/performance.rs
@@ -6,7 +6,7 @@ use std::collections::VecDeque;
use std::sync::{Arc, Mutex};
use std::time::{Duration, Instant};
use serde::{Serialize, Deserialize};
-use crate::error::{Nrpc4Error, Result};
+use crate::error::{NacLensError, Result};
/// 压缩算法
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
diff --git a/nac-lens/src/retry.rs b/nac-lens/src/retry.rs
index 67889d0..73abad7 100644
--- a/nac-lens/src/retry.rs
+++ b/nac-lens/src/retry.rs
@@ -6,7 +6,7 @@ use std::collections::VecDeque;
use std::sync::{Arc, Mutex};
use std::time::{Duration, Instant};
use serde::{Serialize, Deserialize};
-use crate::error::{Nrpc4Error, Result};
+use crate::error::{NacLensError, Result};
/// 重试策略
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
@@ -406,7 +406,7 @@ impl ErrorPropagator {
pub fn handle_error(
&self,
operation_id: &str,
- error: &Nrpc4Error,
+ error: &NacLensError,
module: &str,
) -> bool {
// 记录错误日志
@@ -550,7 +550,7 @@ mod tests {
retry_manager.start_retry("op1".to_string());
- let error = Nrpc4Error::NetworkError("Connection failed".to_string());
+ let error = NacLensError::NetworkError("Connection failed".to_string());
let should_retry = propagator.handle_error("op1", &error, "test");
assert!(should_retry);
diff --git a/nac-lens/src/security.rs b/nac-lens/src/security.rs
index 6b9d2f6..637be85 100644
--- a/nac-lens/src/security.rs
+++ b/nac-lens/src/security.rs
@@ -5,7 +5,7 @@
use std::collections::HashMap;
use std::sync::{Arc, Mutex};
use serde::{Serialize, Deserialize};
-use crate::error::{Nrpc4Error, Result};
+use crate::error::{NacLensError, Result};
/// TLS版本
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
@@ -206,7 +206,7 @@ impl Authenticator {
// 检查用户名是否已存在
if users.values().any(|u| u.username == username) {
- return Err(Nrpc4Error::Other("Username already exists".to_string()));
+ return Err(NacLensError::Other("Username already exists".to_string()));
}
let mut next_id = self.next_user_id.lock().unwrap();
@@ -267,11 +267,11 @@ impl Authenticator {
password: Option<&str>,
) -> Result {
let username = username.ok_or_else(|| {
- Nrpc4Error::Other("Username required".to_string())
+ NacLensError::Other("Username required".to_string())
})?;
let _password = password.ok_or_else(|| {
- Nrpc4Error::Other("Password required".to_string())
+ NacLensError::Other("Password required".to_string())
})?;
let mut users = self.users.lock().unwrap();
@@ -280,7 +280,7 @@ impl Authenticator {
let user = users
.values_mut()
.find(|u| u.username == username && u.enabled)
- .ok_or_else(|| Nrpc4Error::Other("Invalid credentials".to_string()))?;
+ .ok_or_else(|| NacLensError::Other("Invalid credentials".to_string()))?;
// 更新最后登录时间
user.last_login = Some(Self::current_timestamp());
@@ -299,7 +299,7 @@ impl Authenticator {
/// Token认证
fn authenticate_token(&self, token: Option<&str>) -> Result {
let _token = token.ok_or_else(|| {
- Nrpc4Error::Other("Token required".to_string())
+ NacLensError::Other("Token required".to_string())
})?;
// 简化实现:直接返回失败
@@ -314,7 +314,7 @@ impl Authenticator {
/// 证书认证
fn authenticate_certificate(&self, certificate: Option<&[u8]>) -> Result {
let _certificate = certificate.ok_or_else(|| {
- Nrpc4Error::Other("Certificate required".to_string())
+ NacLensError::Other("Certificate required".to_string())
})?;
// 简化实现:直接返回失败
diff --git a/nac-lens/src/types.rs b/nac-lens/src/types.rs
index 5e8ec0f..4a00ba3 100644
--- a/nac-lens/src/types.rs
+++ b/nac-lens/src/types.rs
@@ -110,7 +110,7 @@ pub struct ValueExchangeMessage {
/// NAC Lens消息类型
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub enum Nrpc4Message {
+pub enum NacLensMessage {
/// 元胞路由消息
CellRouting {
source: CellId,
diff --git a/nac-nrpc/.gitignore b/nac-nac_lens.bak.20260228/.gitignore
similarity index 100%
rename from nac-nrpc/.gitignore
rename to nac-nac_lens.bak.20260228/.gitignore
diff --git a/nac-nrpc/Cargo.lock b/nac-nac_lens.bak.20260228/Cargo.lock
similarity index 100%
rename from nac-nrpc/Cargo.lock
rename to nac-nac_lens.bak.20260228/Cargo.lock
diff --git a/nac-nrpc/Cargo.toml b/nac-nac_lens.bak.20260228/Cargo.toml
similarity index 89%
rename from nac-nrpc/Cargo.toml
rename to nac-nac_lens.bak.20260228/Cargo.toml
index a037f12..ccbbf68 100644
--- a/nac-nrpc/Cargo.toml
+++ b/nac-nac_lens.bak.20260228/Cargo.toml
@@ -1,9 +1,9 @@
[package]
-name = "nac-nrpc"
+name = "nac-lens"
version = "4.0.0"
edition = "2021"
authors = ["NAC Development Team"]
-description = "NRPC 3.0 - NAC原生RPC协议服务器"
+description = "NAC Lens - NAC原生RPC协议服务器"
license = "MIT"
[dependencies]
@@ -50,9 +50,9 @@ blake3 = "1.5"
tokio-test = "0.4"
[lib]
-name = "nac_nrpc"
+name = "nac_lens"
path = "src/lib.rs"
[[bin]]
-name = "nac-nrpc-server"
+name = "nac-lens-server"
path = "src/bin/server.rs"
diff --git a/_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/README.md b/nac-nac_lens.bak.20260228/README.md
similarity index 80%
rename from _archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/README.md
rename to nac-nac_lens.bak.20260228/README.md
index 898c199..d5fd10e 100644
--- a/_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/README.md
+++ b/nac-nac_lens.bak.20260228/README.md
@@ -1,7 +1,7 @@
-# nac-nrpc-server
+# nac-lens-server
-**模块名称**: nac-nrpc-server
-**描述**: NRPC 3.0 - NAC原生RPC协议服务器
+**模块名称**: nac-lens-server
+**描述**: NAC Lens - NAC原生RPC协议服务器
**最后更新**: 2026-02-18
---
@@ -9,7 +9,7 @@
## 目录结构
```
-nac-nrpc/
+nac-lens/
├── Cargo.toml
├── README.md (本文件)
└── src/
diff --git a/nac-nrpc/src/lib.rs b/nac-nac_lens.bak.20260228/src/lib.rs
similarity index 100%
rename from nac-nrpc/src/lib.rs
rename to nac-nac_lens.bak.20260228/src/lib.rs
diff --git a/_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/src/protocol.rs b/nac-nac_lens.bak.20260228/src/protocol.rs
similarity index 91%
rename from _archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/src/protocol.rs
rename to nac-nac_lens.bak.20260228/src/protocol.rs
index 6f886fa..d04c518 100644
--- a/_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0/src/protocol.rs
+++ b/nac-nac_lens.bak.20260228/src/protocol.rs
@@ -1,14 +1,14 @@
-//! NRPC 3.0协议类型定义
+//! NAC Lens协议类型定义
//!
-//! 定义NRPC 3.0协议的核心数据结构
+//! 定义NAC Lens协议的核心数据结构
use nac_udm::primitives::{Hash, Timestamp};
use serde::{Deserialize, Serialize};
use serde_json::Value;
-/// NRPC 3.0请求
+/// NAC Lens请求
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3Request {
+pub struct NacLensRequest {
/// JSON-RPC版本(固定为"3.0")
pub jsonrpc: String,
@@ -34,9 +34,9 @@ pub struct NRPC3Request {
pub signature: Option,
}
-/// NRPC 3.0响应
+/// NAC Lens响应
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3Response {
+pub struct NacLensResponse {
/// JSON-RPC版本
pub jsonrpc: String,
@@ -60,7 +60,7 @@ pub struct NRPC3Response {
pub server_signature: Option,
}
-/// NRPC 3.0错误
+/// NAC Lens错误
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NRPC3Error {
/// 错误代码
@@ -88,21 +88,21 @@ pub enum RequestId {
Null,
}
-/// NRPC 3.0批量请求
+/// NAC Lens批量请求
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NRPC3BatchRequest {
/// 批量请求列表
- pub requests: Vec,
+ pub requests: Vec,
}
-/// NRPC 3.0批量响应
+/// NAC Lens批量响应
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NRPC3BatchResponse {
/// 批量响应列表
- pub responses: Vec,
+ pub responses: Vec,
}
-/// NRPC 3.0错误代码
+/// NAC Lens错误代码
pub mod error_codes {
/// 解析错误
pub const PARSE_ERROR: i32 = -32700;
@@ -141,7 +141,7 @@ pub mod error_codes {
pub const INSUFFICIENT_PERMISSIONS: i32 = -33005;
}
-impl NRPC3Request {
+impl NacLensRequest {
/// 创建新请求
pub fn new(id: RequestId, method: impl Into, params: Value) -> Self {
Self {
@@ -180,7 +180,7 @@ impl NRPC3Request {
}
}
-impl NRPC3Response {
+impl NacLensResponse {
/// 创建成功响应
pub fn success(id: RequestId, result: Value) -> Self {
Self {
@@ -217,7 +217,7 @@ mod tests {
#[test]
fn test_request_creation() {
- let req = NRPC3Request::new(
+ let req = NacLensRequest::new(
RequestId::Number(1),
"test_method",
json!({"param": "value"}),
@@ -230,7 +230,7 @@ mod tests {
#[test]
fn test_request_validation() {
- let req = NRPC3Request::new(
+ let req = NacLensRequest::new(
RequestId::Number(1),
"test_method",
json!({}),
@@ -241,7 +241,7 @@ mod tests {
#[test]
fn test_response_creation() {
- let resp = NRPC3Response::success(
+ let resp = NacLensResponse::success(
RequestId::Number(1),
json!({"result": "success"}),
);
diff --git a/nac-nrpc/src/upgrade.rs b/nac-nac_lens.bak.20260228/src/upgrade.rs
similarity index 100%
rename from nac-nrpc/src/upgrade.rs
rename to nac-nac_lens.bak.20260228/src/upgrade.rs
diff --git a/nac-nac_lens/.gitignore b/nac-nac_lens/.gitignore
new file mode 100644
index 0000000..ea8c4bf
--- /dev/null
+++ b/nac-nac_lens/.gitignore
@@ -0,0 +1 @@
+/target
diff --git a/nac-nac_lens/Cargo.lock b/nac-nac_lens/Cargo.lock
new file mode 100644
index 0000000..723ee10
--- /dev/null
+++ b/nac-nac_lens/Cargo.lock
@@ -0,0 +1,2780 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea"
+
+[[package]]
+name = "arrayref"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
+
+[[package]]
+name = "async-trait"
+version = "0.1.89"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "autocfg"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
+
+[[package]]
+name = "axum"
+version = "0.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f"
+dependencies = [
+ "async-trait",
+ "axum-core",
+ "axum-macros",
+ "base64 0.22.1",
+ "bytes",
+ "futures-util",
+ "http 1.4.0",
+ "http-body 1.0.1",
+ "http-body-util",
+ "hyper 1.8.1",
+ "hyper-util",
+ "itoa",
+ "matchit",
+ "memchr",
+ "mime",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustversion",
+ "serde",
+ "serde_json",
+ "serde_path_to_error",
+ "serde_urlencoded",
+ "sha1",
+ "sync_wrapper 1.0.2",
+ "tokio",
+ "tokio-tungstenite",
+ "tower 0.5.3",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "axum-core"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "futures-util",
+ "http 1.4.0",
+ "http-body 1.0.1",
+ "http-body-util",
+ "mime",
+ "pin-project-lite",
+ "rustversion",
+ "sync_wrapper 1.0.2",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "axum-macros"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
+
+[[package]]
+name = "bitvec"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
+dependencies = [
+ "funty",
+ "radium",
+ "tap",
+ "wyz",
+]
+
+[[package]]
+name = "blake3"
+version = "1.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d"
+dependencies = [
+ "arrayref",
+ "arrayvec",
+ "cc",
+ "cfg-if",
+ "constant_time_eq",
+ "cpufeatures",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.19.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
+
+[[package]]
+name = "byte-slice-cast"
+version = "1.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
+
+[[package]]
+name = "cc"
+version = "1.2.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
+dependencies = [
+ "find-msvc-tools",
+ "shlex",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
+
+[[package]]
+name = "chrono"
+version = "0.4.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118"
+dependencies = [
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "wasm-bindgen",
+ "windows-link",
+]
+
+[[package]]
+name = "const_format"
+version = "0.2.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad"
+dependencies = [
+ "const_format_proc_macros",
+]
+
+[[package]]
+name = "const_format_proc_macros"
+version = "0.2.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-xid",
+]
+
+[[package]]
+name = "constant_time_eq"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b"
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crunchy"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "data-encoding"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea"
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "errno"
+version = "0.3.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+dependencies = [
+ "libc",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
+
+[[package]]
+name = "find-msvc-tools"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
+
+[[package]]
+name = "fixed-hash"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534"
+dependencies = [
+ "byteorder",
+ "rand",
+ "rustc-hex",
+ "static_assertions",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foldhash"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "funty"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
+
+[[package]]
+name = "futures"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
+
+[[package]]
+name = "futures-task"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
+
+[[package]]
+name = "futures-util"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "slab",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi",
+ "wasip2",
+ "wasip3",
+]
+
+[[package]]
+name = "h2"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http 0.2.12",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.15.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
+dependencies = [
+ "foldhash",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "http"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
+dependencies = [
+ "bytes",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
+dependencies = [
+ "bytes",
+ "http 0.2.12",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "http-body"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
+dependencies = [
+ "bytes",
+ "http 1.4.0",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "http 1.4.0",
+ "http-body 1.0.1",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
+
+[[package]]
+name = "httpdate"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
+
+[[package]]
+name = "hyper"
+version = "0.14.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "socket2 0.5.10",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "hyper"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "http 1.4.0",
+ "http-body 1.0.1",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "pin-utils",
+ "smallvec",
+ "tokio",
+]
+
+[[package]]
+name = "hyper-tls"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+dependencies = [
+ "bytes",
+ "hyper 0.14.32",
+ "native-tls",
+ "tokio",
+ "tokio-native-tls",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
+dependencies = [
+ "bytes",
+ "http 1.4.0",
+ "http-body 1.0.1",
+ "hyper 1.8.1",
+ "pin-project-lite",
+ "tokio",
+ "tower-service",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.65"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "log",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "icu_collections"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
+dependencies = [
+ "displaydoc",
+ "potential_utf",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locale_core"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
+dependencies = [
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
+
+[[package]]
+name = "icu_properties"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
+dependencies = [
+ "icu_collections",
+ "icu_locale_core",
+ "icu_properties_data",
+ "icu_provider",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
+
+[[package]]
+name = "icu_provider"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
+dependencies = [
+ "displaydoc",
+ "icu_locale_core",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "id-arena"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
+
+[[package]]
+name = "idna"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
+dependencies = [
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
+]
+
+[[package]]
+name = "impl-codec"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"
+dependencies = [
+ "parity-scale-codec",
+]
+
+[[package]]
+name = "impl-trait-for-tuples"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.16.1",
+ "serde",
+ "serde_core",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
+
+[[package]]
+name = "itoa"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
+
+[[package]]
+name = "js-sys"
+version = "0.3.85"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "keccak"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653"
+dependencies = [
+ "cpufeatures",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "leb128fmt"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
+
+[[package]]
+name = "libc"
+version = "0.2.182"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
+
+[[package]]
+name = "litemap"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
+
+[[package]]
+name = "lock_api"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
+dependencies = [
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
+
+[[package]]
+name = "matchers"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"
+dependencies = [
+ "regex-automata",
+]
+
+[[package]]
+name = "matchit"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
+
+[[package]]
+name = "memchr"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "mio"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
+dependencies = [
+ "libc",
+ "wasi",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "nac-nrpc"
+version = "3.0.0"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "axum",
+ "blake3",
+ "chrono",
+ "futures",
+ "nac-udm",
+ "parking_lot",
+ "reqwest",
+ "serde",
+ "serde_json",
+ "sha3",
+ "thiserror 1.0.69",
+ "tokio",
+ "tokio-test",
+ "tower 0.4.13",
+ "tower-http",
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "nac-udm"
+version = "1.0.0"
+dependencies = [
+ "blake3",
+ "chrono",
+ "hex",
+ "log",
+ "primitive-types",
+ "serde",
+ "serde_json",
+ "sha2",
+ "sha3",
+ "thiserror 2.0.18",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d5d26952a508f321b4d3d2e80e78fc2603eaefcdf0c30783867f19586518bdc"
+dependencies = [
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.50.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
+dependencies = [
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "openssl"
+version = "0.10.75"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
+dependencies = [
+ "bitflags 2.11.0",
+ "cfg-if",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.111"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "parity-scale-codec"
+version = "3.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa"
+dependencies = [
+ "arrayvec",
+ "bitvec",
+ "byte-slice-cast",
+ "const_format",
+ "impl-trait-for-tuples",
+ "parity-scale-codec-derive",
+ "rustversion",
+ "serde",
+]
+
+[[package]]
+name = "parity-scale-codec-derive"
+version = "3.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.12.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-link",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+
+[[package]]
+name = "pin-project"
+version = "1.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
+
+[[package]]
+name = "potential_utf"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
+dependencies = [
+ "zerovec",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "prettyplease"
+version = "0.2.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
+dependencies = [
+ "proc-macro2",
+ "syn",
+]
+
+[[package]]
+name = "primitive-types"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2"
+dependencies = [
+ "fixed-hash",
+ "impl-codec",
+ "uint",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
+dependencies = [
+ "toml_edit",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "r-efi"
+version = "5.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
+
+[[package]]
+name = "radium"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom 0.2.17",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
+dependencies = [
+ "bitflags 2.11.0",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c"
+
+[[package]]
+name = "reqwest"
+version = "0.11.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
+dependencies = [
+ "base64 0.21.7",
+ "bytes",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "hyper 0.14.32",
+ "hyper-tls",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "native-tls",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustls-pemfile",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper 0.1.2",
+ "system-configuration",
+ "tokio",
+ "tokio-native-tls",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "rustc-hex"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6"
+
+[[package]]
+name = "rustix"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34"
+dependencies = [
+ "bitflags 2.11.0",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+dependencies = [
+ "base64 0.21.7",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+
+[[package]]
+name = "ryu"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
+
+[[package]]
+name = "schannel"
+version = "0.1.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
+dependencies = [
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "security-framework"
+version = "3.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d17b898a6d6948c3a8ee4372c17cb384f90d2e6e912ef00895b14fd7ab54ec38"
+dependencies = [
+ "bitflags 2.11.0",
+ "core-foundation 0.10.1",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "321c8673b092a9a42605034a9879d73cb79101ed5fd117bc9a597b89b4e9e61a"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
+
+[[package]]
+name = "serde"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
+dependencies = [
+ "serde_core",
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_core"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.149"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
+dependencies = [
+ "itoa",
+ "memchr",
+ "serde",
+ "serde_core",
+ "zmij",
+]
+
+[[package]]
+name = "serde_path_to_error"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
+dependencies = [
+ "itoa",
+ "serde",
+ "serde_core",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "sha1"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sha3"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
+dependencies = [
+ "digest",
+ "keccak",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
+dependencies = [
+ "errno",
+ "libc",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
+
+[[package]]
+name = "smallvec"
+version = "1.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+
+[[package]]
+name = "socket2"
+version = "0.5.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "socket2"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0"
+dependencies = [
+ "libc",
+ "windows-sys 0.60.2",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "syn"
+version = "2.0.116"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3df424c70518695237746f84cede799c9c58fcb37450d7b23716568cc8bc69cb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+
+[[package]]
+name = "sync_wrapper"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "system-configuration"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation 0.9.4",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "tap"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
+
+[[package]]
+name = "tempfile"
+version = "3.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1"
+dependencies = [
+ "fastrand",
+ "getrandom 0.4.1",
+ "once_cell",
+ "rustix",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
+dependencies = [
+ "thiserror-impl 1.0.69",
+]
+
+[[package]]
+name = "thiserror"
+version = "2.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
+dependencies = [
+ "thiserror-impl 2.0.18",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "2.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
+[[package]]
+name = "tokio"
+version = "1.49.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86"
+dependencies = [
+ "bytes",
+ "libc",
+ "mio",
+ "parking_lot",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2 0.6.2",
+ "tokio-macros",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tokio-native-tls"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
+dependencies = [
+ "native-tls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-stream"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-test"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f6d24790a10a7af737693a3e8f1d03faef7e6ca0cc99aae5066f533766de545"
+dependencies = [
+ "futures-core",
+ "tokio",
+ "tokio-stream",
+]
+
+[[package]]
+name = "tokio-tungstenite"
+version = "0.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9"
+dependencies = [
+ "futures-util",
+ "log",
+ "tokio",
+ "tungstenite",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.7.5+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.23.10+spec-1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "toml_parser",
+ "winnow",
+]
+
+[[package]]
+name = "toml_parser"
+version = "1.0.9+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4"
+dependencies = [
+ "winnow",
+]
+
+[[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project",
+ "pin-project-lite",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project-lite",
+ "sync_wrapper 1.0.2",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-http"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
+dependencies = [
+ "bitflags 2.11.0",
+ "bytes",
+ "http 1.4.0",
+ "http-body 1.0.1",
+ "http-body-util",
+ "pin-project-lite",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
+[[package]]
+name = "tower-service"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
+
+[[package]]
+name = "tracing"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
+dependencies = [
+ "log",
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e"
+dependencies = [
+ "matchers",
+ "nu-ansi-term",
+ "once_cell",
+ "regex-automata",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "tungstenite"
+version = "0.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a"
+dependencies = [
+ "byteorder",
+ "bytes",
+ "data-encoding",
+ "http 1.4.0",
+ "httparse",
+ "log",
+ "rand",
+ "sha1",
+ "thiserror 1.0.69",
+ "utf-8",
+]
+
+[[package]]
+name = "typenum"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
+
+[[package]]
+name = "uint"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52"
+dependencies = [
+ "byteorder",
+ "crunchy",
+ "hex",
+ "static_assertions",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
+
+[[package]]
+name = "url"
+version = "2.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "utf-8"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
+[[package]]
+name = "valuable"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.1+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+
+[[package]]
+name = "wasip2"
+version = "1.0.2+wasi-0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "wasip3"
+version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.108"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f"
+dependencies = [
+ "cfg-if",
+ "futures-util",
+ "js-sys",
+ "once_cell",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.108"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.108"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
+dependencies = [
+ "bumpalo",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.108"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "wasm-encoder"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
+dependencies = [
+ "leb128fmt",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasm-metadata"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
+dependencies = [
+ "anyhow",
+ "indexmap",
+ "wasm-encoder",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasmparser"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
+dependencies = [
+ "bitflags 2.11.0",
+ "hashbrown 0.15.5",
+ "indexmap",
+ "semver",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.85"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.62.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
+dependencies = [
+ "windows-implement",
+ "windows-interface",
+ "windows-link",
+ "windows-result",
+ "windows-strings",
+]
+
+[[package]]
+name = "windows-implement"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "windows-interface"
+version = "0.59.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "windows-link"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+
+[[package]]
+name = "windows-result"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
+dependencies = [
+ "windows-link",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
+dependencies = [
+ "windows-link",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets 0.53.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+dependencies = [
+ "windows-link",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm 0.52.6",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.53.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
+dependencies = [
+ "windows-link",
+ "windows_aarch64_gnullvm 0.53.1",
+ "windows_aarch64_msvc 0.53.1",
+ "windows_i686_gnu 0.53.1",
+ "windows_i686_gnullvm 0.53.1",
+ "windows_i686_msvc 0.53.1",
+ "windows_x86_64_gnu 0.53.1",
+ "windows_x86_64_gnullvm 0.53.1",
+ "windows_x86_64_msvc 0.53.1",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
+
+[[package]]
+name = "winnow"
+version = "0.7.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winreg"
+version = "0.50.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "wit-bindgen"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
+dependencies = [
+ "wit-bindgen-rust-macro",
+]
+
+[[package]]
+name = "wit-bindgen-core"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
+dependencies = [
+ "anyhow",
+ "heck",
+ "wit-parser",
+]
+
+[[package]]
+name = "wit-bindgen-rust"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
+dependencies = [
+ "anyhow",
+ "heck",
+ "indexmap",
+ "prettyplease",
+ "syn",
+ "wasm-metadata",
+ "wit-bindgen-core",
+ "wit-component",
+]
+
+[[package]]
+name = "wit-bindgen-rust-macro"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
+dependencies = [
+ "anyhow",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wit-bindgen-core",
+ "wit-bindgen-rust",
+]
+
+[[package]]
+name = "wit-component"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
+dependencies = [
+ "anyhow",
+ "bitflags 2.11.0",
+ "indexmap",
+ "log",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "wasm-encoder",
+ "wasm-metadata",
+ "wasmparser",
+ "wit-parser",
+]
+
+[[package]]
+name = "wit-parser"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
+dependencies = [
+ "anyhow",
+ "id-arena",
+ "indexmap",
+ "log",
+ "semver",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "unicode-xid",
+ "wasmparser",
+]
+
+[[package]]
+name = "writeable"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
+
+[[package]]
+name = "wyz"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
+dependencies = [
+ "tap",
+]
+
+[[package]]
+name = "yoke"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
+dependencies = [
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.8.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerotrie"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zmij"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
diff --git a/nac-nac_lens/Cargo.toml b/nac-nac_lens/Cargo.toml
new file mode 100644
index 0000000..ccbbf68
--- /dev/null
+++ b/nac-nac_lens/Cargo.toml
@@ -0,0 +1,58 @@
+[package]
+name = "nac-lens"
+version = "4.0.0"
+edition = "2021"
+authors = ["NAC Development Team"]
+description = "NAC Lens - NAC原生RPC协议服务器"
+license = "MIT"
+
+[dependencies]
+nac-upgrade-framework = { path = "../nac-upgrade-framework" }
+# NAC核心依赖
+nac-udm = { path = "../nac-udm" }
+
+# 异步运行时
+tokio = { version = "1.35", features = ["full"] }
+async-trait = "0.1"
+
+# Web框架
+axum = { version = "0.7", features = ["ws", "macros"] }
+tower = { version = "0.4", features = ["util"] }
+tower-http = { version = "0.5", features = ["cors", "trace"] }
+
+# 序列化
+serde = { version = "1.0", features = ["derive"] }
+serde_json = "1.0"
+
+# HTTP客户端
+reqwest = { version = "0.11", features = ["json"] }
+
+# 日志
+tracing = "0.1"
+tracing-subscriber = { version = "0.3", features = ["env-filter"] }
+
+# 错误处理
+thiserror = "1.0"
+anyhow = "1.0"
+
+# 时间处理
+chrono = "0.4"
+
+# 并发
+futures = "0.3"
+parking_lot = "0.12"
+
+# 哈希
+sha3 = "0.10"
+blake3 = "1.5"
+
+[dev-dependencies]
+tokio-test = "0.4"
+
+[lib]
+name = "nac_lens"
+path = "src/lib.rs"
+
+[[bin]]
+name = "nac-lens-server"
+path = "src/bin/server.rs"
diff --git a/nac-nac_lens/README.md b/nac-nac_lens/README.md
new file mode 100644
index 0000000..d5fd10e
--- /dev/null
+++ b/nac-nac_lens/README.md
@@ -0,0 +1,50 @@
+# nac-lens-server
+
+**模块名称**: nac-lens-server
+**描述**: NAC Lens - NAC原生RPC协议服务器
+**最后更新**: 2026-02-18
+
+---
+
+## 目录结构
+
+```
+nac-lens/
+├── Cargo.toml
+├── README.md (本文件)
+└── src/
+├── lib.rs
+├── protocol.rs
+```
+
+---
+
+## 源文件说明
+
+### lib.rs
+- **功能**: 待补充
+- **依赖**: 待补充
+
+### protocol.rs
+- **功能**: 待补充
+- **依赖**: 待补充
+
+---
+
+## 编译和测试
+
+```bash
+# 编译
+cargo build
+
+# 测试
+cargo test
+
+# 运行
+cargo run
+```
+
+---
+
+**维护**: NAC开发团队
+**创建日期**: 2026-02-18
diff --git a/nac-nac_lens/src/lib.rs b/nac-nac_lens/src/lib.rs
new file mode 100644
index 0000000..b93cf3f
--- /dev/null
+++ b/nac-nac_lens/src/lib.rs
@@ -0,0 +1,14 @@
+pub fn add(left: u64, right: u64) -> u64 {
+ left + right
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn it_works() {
+ let result = add(2, 2);
+ assert_eq!(result, 4);
+ }
+}
diff --git a/nac-nac_lens/src/protocol.rs b/nac-nac_lens/src/protocol.rs
new file mode 100644
index 0000000..d139b22
--- /dev/null
+++ b/nac-nac_lens/src/protocol.rs
@@ -0,0 +1,253 @@
+//! NAC Lens协议类型定义
+//!
+//! 定义NAC Lens协议的核心数据结构
+
+use nac_udm::primitives::{Hash, Timestamp};
+use serde::{Deserialize, Serialize};
+use serde_json::Value;
+
+/// NAC Lens请求
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct NacLensRequest {
+ /// JSON-RPC版本(固定为"3.0")
+ pub jsonrpc: String,
+
+ /// 请求ID
+ pub id: RequestId,
+
+ /// 方法名
+ pub method: String,
+
+ /// 参数
+ pub params: Value,
+
+ /// 时间戳(NAC扩展)
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub timestamp: Option,
+
+ /// 资产DNA哈希(NAC扩展)
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub dna_hash: Option,
+
+ /// 签名(NAC扩展)
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub signature: Option,
+}
+
+/// NAC Lens响应
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct NacLensResponse {
+ /// JSON-RPC版本
+ pub jsonrpc: String,
+
+ /// 请求ID
+ pub id: RequestId,
+
+ /// 结果(成功时)
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub result: Option,
+
+ /// 错误(失败时)
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub error: Option,
+
+ /// 时间戳(NAC扩展)
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub timestamp: Option,
+
+ /// 服务器签名(NAC扩展)
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub server_signature: Option,
+}
+
+/// NAC Lens错误
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct NAC Lens3Error {
+ /// 错误代码
+ pub code: i32,
+
+ /// 错误消息
+ pub message: String,
+
+ /// 错误数据(可选)
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub data: Option,
+}
+
+/// 请求ID类型
+#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
+#[serde(untagged)]
+pub enum RequestId {
+ /// 数字ID
+ Number(u64),
+
+ /// 字符串ID
+ String(String),
+
+ /// 空ID(通知)
+ Null,
+}
+
+/// NAC Lens批量请求
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct NAC Lens3BatchRequest {
+ /// 批量请求列表
+ pub requests: Vec,
+}
+
+/// NAC Lens批量响应
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct NAC Lens3BatchResponse {
+ /// 批量响应列表
+ pub responses: Vec,
+}
+
+/// NAC Lens错误代码
+pub mod error_codes {
+ /// 解析错误
+ pub const PARSE_ERROR: i32 = -32700;
+
+ /// 无效请求
+ pub const INVALID_REQUEST: i32 = -32600;
+
+ /// 方法不存在
+ pub const METHOD_NOT_FOUND: i32 = -32601;
+
+ /// 无效参数
+ pub const INVALID_PARAMS: i32 = -32602;
+
+ /// 内部错误
+ pub const INTERNAL_ERROR: i32 = -32603;
+
+ /// 服务器错误范围
+ pub const SERVER_ERROR_START: i32 = -32000;
+ pub const SERVER_ERROR_END: i32 = -32099;
+
+ // NAC扩展错误代码
+
+ /// 时间戳过期
+ pub const TIMESTAMP_EXPIRED: i32 = -33001;
+
+ /// DNA验证失败
+ pub const DNA_VERIFICATION_FAILED: i32 = -33002;
+
+ /// 签名无效
+ pub const INVALID_SIGNATURE: i32 = -33003;
+
+ /// 合规检查失败
+ pub const COMPLIANCE_CHECK_FAILED: i32 = -33004;
+
+ /// 权限不足
+ pub const INSUFFICIENT_PERMISSIONS: i32 = -33005;
+}
+
+impl NacLensRequest {
+ /// 创建新请求
+ pub fn new(id: RequestId, method: impl Into, params: Value) -> Self {
+ Self {
+ jsonrpc: "3.0".to_string(),
+ id,
+ method: method.into(),
+ params,
+ timestamp: Some(Timestamp::now()),
+ dna_hash: None,
+ signature: None,
+ }
+ }
+
+ /// 验证请求
+ pub fn validate(&self) -> Result<(), String> {
+ if self.jsonrpc != "3.0" {
+ return Err("Invalid JSON-RPC version".to_string());
+ }
+
+ if self.method.is_empty() {
+ return Err("Method name cannot be empty".to_string());
+ }
+
+ // 验证时间戳(如果存在)
+ if let Some(ts) = self.timestamp {
+ let now = Timestamp::now();
+ let diff = if now > ts { now - ts } else { ts - now };
+
+ // 允许5分钟的时间偏差
+ if diff > 300 {
+ return Err("Timestamp expired or too far in future".to_string());
+ }
+ }
+
+ Ok(())
+ }
+}
+
+impl NacLensResponse {
+ /// 创建成功响应
+ pub fn success(id: RequestId, result: Value) -> Self {
+ Self {
+ jsonrpc: "3.0".to_string(),
+ id,
+ result: Some(result),
+ error: None,
+ timestamp: Some(Timestamp::now()),
+ server_signature: None,
+ }
+ }
+
+ /// 创建错误响应
+ pub fn error(id: RequestId, code: i32, message: impl Into) -> Self {
+ Self {
+ jsonrpc: "3.0".to_string(),
+ id,
+ result: None,
+ error: Some(NAC Lens3Error {
+ code,
+ message: message.into(),
+ data: None,
+ }),
+ timestamp: Some(Timestamp::now()),
+ server_signature: None,
+ }
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use serde_json::json;
+
+ #[test]
+ fn test_request_creation() {
+ let req = NacLensRequest::new(
+ RequestId::Number(1),
+ "test_method",
+ json!({"param": "value"}),
+ );
+
+ assert_eq!(req.jsonrpc, "3.0");
+ assert_eq!(req.method, "test_method");
+ assert!(req.timestamp.is_some());
+ }
+
+ #[test]
+ fn test_request_validation() {
+ let req = NacLensRequest::new(
+ RequestId::Number(1),
+ "test_method",
+ json!({}),
+ );
+
+ assert!(req.validate().is_ok());
+ }
+
+ #[test]
+ fn test_response_creation() {
+ let resp = NacLensResponse::success(
+ RequestId::Number(1),
+ json!({"result": "success"}),
+ );
+
+ assert_eq!(resp.jsonrpc, "3.0");
+ assert!(resp.result.is_some());
+ assert!(resp.error.is_none());
+ }
+}
diff --git a/nac-nac_lens/src/upgrade.rs b/nac-nac_lens/src/upgrade.rs
new file mode 100644
index 0000000..03eeb13
--- /dev/null
+++ b/nac-nac_lens/src/upgrade.rs
@@ -0,0 +1,14 @@
+//! 模块升级实现
+
+use nac_upgrade_framework::{
+ traits::Upgradeable, UpgradeData, UpgradeRecord, Version, Result, UpgradeError,
+};
+
+// 注意:需要在主结构体中添加以下字段:
+// - version: Version
+// - upgrade_history: Vec
+//
+// 并实现 do_upgrade 方法来执行实际的升级逻辑
+
+// 使用宏快速实现Upgradeable trait:
+// nac_upgrade_framework::impl_upgradeable!(YourStruct, "module-name", Version::new(1, 0, 0));
diff --git a/nac-onboarding-system/src/error.rs b/nac-onboarding-system/src/error.rs
index 5c5d1dd..8f169e5 100644
--- a/nac-onboarding-system/src/error.rs
+++ b/nac-onboarding-system/src/error.rs
@@ -69,9 +69,9 @@ pub enum OnboardingError {
#[error("内部错误: {0}")]
InternalError(String),
- /// NRPC4协议错误
- #[error("NRPC4协议错误: {0}")]
- NRPC4Error(String),
+ /// NAC Lens4协议错误
+ #[error("NAC Lens4协议错误: {0}")]
+ NAC Lens4Error(String),
}
/// 错误响应结构
@@ -107,7 +107,7 @@ impl ResponseError for OnboardingError {
OnboardingError::NotFound(_) => (StatusCode::NOT_FOUND, "NOT_FOUND"),
OnboardingError::PermissionDenied(_) => (StatusCode::FORBIDDEN, "PERMISSION_DENIED"),
OnboardingError::InternalError(_) => (StatusCode::INTERNAL_SERVER_ERROR, "INTERNAL_ERROR"),
- OnboardingError::NRPC4Error(_) => (StatusCode::INTERNAL_SERVER_ERROR, "NRPC4_ERROR"),
+ OnboardingError::NAC Lens4Error(_) => (StatusCode::INTERNAL_SERVER_ERROR, "NAC Lens4_ERROR"),
};
let error_response = ErrorResponse {
@@ -139,7 +139,7 @@ impl ResponseError for OnboardingError {
OnboardingError::NotFound(_) => StatusCode::NOT_FOUND,
OnboardingError::PermissionDenied(_) => StatusCode::FORBIDDEN,
OnboardingError::InternalError(_) => StatusCode::INTERNAL_SERVER_ERROR,
- OnboardingError::NRPC4Error(_) => StatusCode::INTERNAL_SERVER_ERROR,
+ OnboardingError::NAC Lens4Error(_) => StatusCode::INTERNAL_SERVER_ERROR,
}
}
}
diff --git a/nac-sdk/docs/ACC1155_GUIDE.md b/nac-sdk/docs/ACC1155_GUIDE.md
index 03b78c9..e1c2dcf 100644
--- a/nac-sdk/docs/ACC1155_GUIDE.md
+++ b/nac-sdk/docs/ACC1155_GUIDE.md
@@ -60,7 +60,7 @@ ACC-1155针对批量操作进行了优化:
- **保险系统**:按代币类型的保险信息
- **AI估值**:支持AI估值提供商
- **宪法收据**:所有批量操作都返回宪法收据哈希
-- **NRPC3.0**:使用NAC原生RPC协议
+- **NAC Lens**:使用NAC原生RPC协议
## 快速开始
@@ -76,10 +76,10 @@ tokio = { version = "1.0", features = ["full"] }
### 2. 创建客户端
```rust
-use nac_sdk::client::NRPC3Client;
+use nac_sdk::client::NacLensClient;
use nac_sdk::protocols::ACC1155;
-let client = NRPC3Client::new("https://rpc.newassetchain.io");
+let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc1155 = ACC1155::new(client);
```
@@ -345,7 +345,7 @@ let valuation = acc1155.get_token_valuation(
| 混合资产池 | ❌ | ✅ |
| 宪法收据 | ❌ | ✅ |
| 批量操作优化 | ✅ | ✅ |
-| RPC协议 | JSON-RPC | NRPC3.0 |
+| RPC协议 | JSON-RPC | NAC Lens |
## 最佳实践
@@ -417,7 +417,7 @@ cargo run --example acc1155_example
- [NAC技术白皮书](https://newassetchain.io/whitepaper)
- [GNACS编码标准](https://newassetchain.io/gnacs)
- [ACC协议族文档](https://newassetchain.io/acc)
-- [NRPC3.0协议规范](https://newassetchain.io/nrpc3)
+- [NAC Lens协议规范](https://newassetchain.io/nac_lens)
## 许可证
diff --git a/nac-sdk/docs/ACC20C_GUIDE.md b/nac-sdk/docs/ACC20C_GUIDE.md
index 52169e8..0cce806 100644
--- a/nac-sdk/docs/ACC20C_GUIDE.md
+++ b/nac-sdk/docs/ACC20C_GUIDE.md
@@ -106,10 +106,10 @@ tokio = { version = "1.0", features = ["full"] }
### 2. 创建客户端
```rust
-use nac_sdk::client::NRPC3Client;
+use nac_sdk::client::NacLensClient;
use nac_sdk::protocols::ACC20C;
-let client = NRPC3Client::new("https://rpc.newassetchain.io");
+let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc20c = ACC20C::new(client);
```
@@ -354,7 +354,7 @@ pub struct ComplianceSnapshot {
### 跨链流程示例
```rust
-use nac_sdk::client::NRPC3Client;
+use nac_sdk::client::NacLensClient;
use nac_sdk::protocols::ACC20C;
use nac_udm::primitives::Address;
use nac_udm::l1_protocol::acc20c::EthAddress;
@@ -362,7 +362,7 @@ use nac_udm::l1_protocol::acc20c::EthAddress;
#[tokio::main]
async fn main() -> Result<()> {
// 1. 创建客户端
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc20c = ACC20C::new(client);
// 2. 准备地址
diff --git a/nac-sdk/docs/ACC721_GUIDE.md b/nac-sdk/docs/ACC721_GUIDE.md
index f4ee1b3..a647edf 100644
--- a/nac-sdk/docs/ACC721_GUIDE.md
+++ b/nac-sdk/docs/ACC721_GUIDE.md
@@ -73,10 +73,10 @@ tokio = { version = "1.0", features = ["full"] }
### 2. 创建客户端
```rust
-use nac_sdk::client::NRPC3Client;
+use nac_sdk::client::NacLensClient;
use nac_sdk::protocols::ACC721;
-let client = NRPC3Client::new("https://rpc.newassetchain.io");
+let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc721 = ACC721::new(client);
```
@@ -304,7 +304,7 @@ cargo test --test acc721_integration_test -- --ignored
| AI估值 | ❌ | ✅ |
| 碎片化 | ❌ | ✅ |
| 宪法收据 | ❌ | ✅ |
-| RPC协议 | JSON-RPC | NRPC3.0 |
+| RPC协议 | JSON-RPC | NAC Lens |
| 哈希算法 | Keccak256 | Blake3 |
## 最佳实践
@@ -376,7 +376,7 @@ match acc721.mint_asset(...).await {
- [NAC SDK文档](../README.md)
- [ACC-20协议指南](./ACC20_GUIDE.md)
-- [NRPC3.0协议规范](./NRPC3_SPEC.md)
+- [NAC Lens协议规范](./NRPC3_SPEC.md)
- [GNACS编码标准](./GNACS_STANDARD.md)
- [NAC技术白皮书](https://newassetchain.io/whitepaper)
diff --git a/nac-sdk/examples/acc1155_example.rs b/nac-sdk/examples/acc1155_example.rs
index 3b4dac4..888a5a3 100644
--- a/nac-sdk/examples/acc1155_example.rs
+++ b/nac-sdk/examples/acc1155_example.rs
@@ -2,7 +2,7 @@
//!
//! 本示例演示如何使用NAC SDK与ACC-1155多代币证书进行交互
-use nac_sdk::client::NRPC3Client;
+use nac_sdk::client::NacLensClient;
use nac_sdk::protocols::ACC1155;
use nac_sdk::error::Result;
use nac_udm::primitives::{Address, Timestamp};
@@ -17,7 +17,7 @@ async fn main() -> Result<()> {
// 1. 连接到NAC节点
println!("1. 连接到NAC节点...");
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc1155 = ACC1155::new(client);
println!("✓ 已连接到NAC节点\n");
diff --git a/nac-sdk/examples/acc20c_example.rs b/nac-sdk/examples/acc20c_example.rs
index 3e3eaa7..9b28158 100644
--- a/nac-sdk/examples/acc20c_example.rs
+++ b/nac-sdk/examples/acc20c_example.rs
@@ -2,7 +2,7 @@
//!
//! 本示例演示如何使用NAC SDK与ACC-20C兼容层进行跨链交互
-use nac_sdk::client::NRPC3Client;
+use nac_sdk::client::NacLensClient;
use nac_sdk::protocols::ACC20C;
use nac_sdk::error::Result;
use nac_udm::primitives::Address;
@@ -14,7 +14,7 @@ async fn main() -> Result<()> {
// 1. 连接到NAC节点
println!("1. 连接到NAC节点...");
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc20c = ACC20C::new(client);
println!("✓ 已连接到NAC节点\n");
diff --git a/nac-sdk/examples/acc721_example.rs b/nac-sdk/examples/acc721_example.rs
index 08af4f8..3d9452d 100644
--- a/nac-sdk/examples/acc721_example.rs
+++ b/nac-sdk/examples/acc721_example.rs
@@ -7,7 +7,7 @@
//! cargo run --example acc721_example
//! ```
-use nac_sdk::client::NRPC3Client;
+use nac_sdk::client::NacLensClient;
use nac_sdk::protocols::ACC721;
use nac_sdk::error::Result;
use nac_udm::primitives::{Address, Hash, Timestamp};
@@ -17,9 +17,9 @@ use nac_udm::l1_protocol::acc::acc721::{AssetId, AssetValuation};
async fn main() -> Result<()> {
println!("=== NAC ACC-721 唯一资产证书协议示例 ===\n");
- // 1. 创建NRPC3.0客户端
+ // 1. 创建NAC Lens客户端
println!("1. 连接到NAC节点...");
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc721 = ACC721::new(client);
println!(" ✓ 已连接到NAC RPC节点\n");
diff --git a/nac-sdk/src/adapters/config.rs b/nac-sdk/src/adapters/config.rs
index 4e65100..f8db722 100644
--- a/nac-sdk/src/adapters/config.rs
+++ b/nac-sdk/src/adapters/config.rs
@@ -35,8 +35,8 @@ impl Default for NACConfig {
/// L1层配置
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct L1Config {
- /// NRPC4节点URL
- pub nrpc4_url: String,
+ /// NAC Lens4节点URL
+ pub nac_lens_url: String,
/// 链ID
pub chain_id: u32,
/// 超时时间
@@ -49,7 +49,7 @@ pub struct L1Config {
impl Default for L1Config {
fn default() -> Self {
Self {
- nrpc4_url: "http://localhost:9545".to_string(),
+ nac_lens_url: "http://localhost:9545".to_string(),
chain_id: 1,
timeout: Duration::from_secs(30),
max_retries: 3,
@@ -206,7 +206,7 @@ mod tests {
fn test_default_config() {
let config = NACConfig::default();
assert_eq!(config.l1.chain_id, 1);
- assert_eq!(config.l1.nrpc4_url, "http://localhost:9545");
+ assert_eq!(config.l1.nac_lens_url, "http://localhost:9545");
}
#[test]
diff --git a/nac-sdk/src/adapters/l1_protocol.rs b/nac-sdk/src/adapters/l1_protocol.rs
index 8444f0e..eaab143 100644
--- a/nac-sdk/src/adapters/l1_protocol.rs
+++ b/nac-sdk/src/adapters/l1_protocol.rs
@@ -14,7 +14,7 @@
//! # async fn example() -> Result<(), Box> {
//! // 创建L1适配器
//! let config = L1Config {
-//! nrpc4_url: "http://localhost:8545".to_string(),
+//! nac_lens_url: "http://localhost:8545".to_string(),
//! chain_id: 1,
//! timeout: std::time::Duration::from_secs(30),
//! };
@@ -37,7 +37,7 @@ use super::{
CollateralProof, Decimal,
};
use nac_udm::l1_protocol::gnacs::GNACSCode;
-use super::NRPC4Client;
+use super::NAC Lens4Client;
use std::time::Duration;
/// L1协议层适配器
@@ -45,8 +45,8 @@ use std::time::Duration;
/// 统一封装NVM、CBPP、GNACS、ACC四大子系统
#[derive(Debug, Clone)]
pub struct L1ProtocolAdapter {
- /// NRPC4客户端
- client: NRPC4Client,
+ /// NAC Lens4客户端
+ client: NAC Lens4Client,
/// 链ID
chain_id: u32,
/// 超时时间
@@ -64,8 +64,8 @@ impl L1ProtocolAdapter {
///
/// 返回初始化完成的L1适配器实例
pub async fn new(config: &L1Config) -> Result {
- let client = NRPC4Client::new(&config.nrpc4_url, config.timeout)
- .map_err(|e| NACError::NetworkError(format!("Failed to create NRPC4 client: {}", e)))?;
+ let client = NAC Lens4Client::new(&config.nac_lens_url, config.timeout)
+ .map_err(|e| NACError::NetworkError(format!("Failed to create NAC Lens4 client: {}", e)))?;
Ok(Self {
client,
diff --git a/nac-sdk/src/adapters/l2_layer.rs b/nac-sdk/src/adapters/l2_layer.rs
index b5132f3..1384946 100644
--- a/nac-sdk/src/adapters/l2_layer.rs
+++ b/nac-sdk/src/adapters/l2_layer.rs
@@ -35,7 +35,7 @@ use super::{
Amendment, AmendmentStatus, Proposal, ProposalDetails,
Vote, ComplianceResult, PeerInfo,
};
-use super::NRPC4Client;
+use super::NAC Lens4Client;
use super::CSNPNetwork;
use super::Decimal;
@@ -50,9 +50,9 @@ pub type ProposalId = u64;
#[derive(Debug, Clone)]
pub struct L2Adapter {
/// 宪政层客户端
- constitutional_client: NRPC4Client,
+ constitutional_client: NAC Lens4Client,
/// 治理层客户端
- governance_client: NRPC4Client,
+ governance_client: NAC Lens4Client,
/// CSNP网络
network: Arc,
}
@@ -68,10 +68,10 @@ impl L2Adapter {
///
/// 返回初始化完成的L2适配器实例
pub async fn new(config: &L2Config) -> Result {
- let constitutional_client = NRPC4Client::new(&config.constitutional_url, std::time::Duration::from_secs(30))
+ let constitutional_client = NAC Lens4Client::new(&config.constitutional_url, std::time::Duration::from_secs(30))
.map_err(|e| NACError::NetworkError(format!("Failed to create constitutional client: {}", e)))?;
- let governance_client = NRPC4Client::new(&config.governance_url, std::time::Duration::from_secs(30))
+ let governance_client = NAC Lens4Client::new(&config.governance_url, std::time::Duration::from_secs(30))
.map_err(|e| NACError::NetworkError(format!("Failed to create governance client: {}", e)))?;
let network = Arc::new(CSNPNetwork::new(&config.network_peers).await
diff --git a/nac-sdk/src/adapters/l4_ai.rs b/nac-sdk/src/adapters/l4_ai.rs
index ca51696..a916754 100644
--- a/nac-sdk/src/adapters/l4_ai.rs
+++ b/nac-sdk/src/adapters/l4_ai.rs
@@ -33,7 +33,7 @@ use crate::error::{NACError, Result};
use super::config::L4Config;
use nac_udm::primitives::Address;
-use super::{NacLensClient as NRPC4Client,
+use super::{NacLensClient as NAC Lens4Client,
Transaction, ComplianceData, ComplianceResult, ComplianceReport,
ZKProof, Asset, ValuationResult, MarketData, RiskScore,
UserBehavior, AnomalyReport, RiskReport, Reserves, ReserveStrategy,
@@ -48,13 +48,13 @@ use std::time::Duration;
#[derive(Debug, Clone)]
pub struct L4AIAdapter {
/// AI合规客户端
- compliance_client: NRPC4Client,
+ compliance_client: NAC Lens4Client,
/// AI估值客户端
- valuation_client: NRPC4Client,
+ valuation_client: NAC Lens4Client,
/// AI风险客户端
- risk_client: NRPC4Client,
+ risk_client: NAC Lens4Client,
/// XTZH AI客户端
- xtzh_ai_client: NRPC4Client,
+ xtzh_ai_client: NAC Lens4Client,
}
impl L4AIAdapter {
@@ -68,16 +68,16 @@ impl L4AIAdapter {
///
/// 返回初始化完成的L4适配器实例
pub async fn new(config: &L4Config) -> Result {
- let compliance_client = NRPC4Client::new(&config.compliance_url, Duration::from_secs(30))
+ let compliance_client = NAC Lens4Client::new(&config.compliance_url, Duration::from_secs(30))
.map_err(|e| NACError::NetworkError(format!("Failed to create compliance client: {}", e)))?;
- let valuation_client = NRPC4Client::new(&config.valuation_url, Duration::from_secs(30))
+ let valuation_client = NAC Lens4Client::new(&config.valuation_url, Duration::from_secs(30))
.map_err(|e| NACError::NetworkError(format!("Failed to create valuation client: {}", e)))?;
- let risk_client = NRPC4Client::new(&config.risk_url, Duration::from_secs(30))
+ let risk_client = NAC Lens4Client::new(&config.risk_url, Duration::from_secs(30))
.map_err(|e| NACError::NetworkError(format!("Failed to create risk client: {}", e)))?;
- let xtzh_ai_client = NRPC4Client::new(&config.xtzh_ai_url, Duration::from_secs(30))
+ let xtzh_ai_client = NAC Lens4Client::new(&config.xtzh_ai_url, Duration::from_secs(30))
.map_err(|e| NACError::NetworkError(format!("Failed to create XTZH AI client: {}", e)))?;
Ok(Self {
diff --git a/nac-sdk/src/adapters/l5_application.rs b/nac-sdk/src/adapters/l5_application.rs
index 8887f59..cbe2fd8 100644
--- a/nac-sdk/src/adapters/l5_application.rs
+++ b/nac-sdk/src/adapters/l5_application.rs
@@ -33,7 +33,7 @@ use crate::error::{NACError, Result};
use super::config::L5Config;
use nac_udm::primitives::{Address, Hash};
use super::{
- Wallet, BalanceInfo, TransactionInfo, TransactionReceipt, NacLensClient as NRPC4Client, Decimal,
+ Wallet, BalanceInfo, TransactionInfo, TransactionReceipt, NacLensClient as NAC Lens4Client, Decimal,
ChainStatistics, AddressInfo, TokenMetadata, TradingPair,
OrderBook, Value, ContractCall,
};
@@ -55,13 +55,13 @@ pub struct EventStream {
#[derive(Debug, Clone)]
pub struct L5ApplicationAdapter {
/// 钱包客户端
- wallet_client: NRPC4Client,
+ wallet_client: NAC Lens4Client,
/// DApp客户端
- dapp_client: NRPC4Client,
+ dapp_client: NAC Lens4Client,
/// 浏览器客户端
- explorer_client: NRPC4Client,
+ explorer_client: NAC Lens4Client,
/// 交易所客户端
- exchange_client: NRPC4Client,
+ exchange_client: NAC Lens4Client,
}
impl L5ApplicationAdapter {
@@ -75,16 +75,16 @@ impl L5ApplicationAdapter {
///
/// 返回初始化完成的L5适配器实例
pub async fn new(config: &L5Config) -> Result {
- let wallet_client = NRPC4Client::new(&config.wallet_url, Duration::from_secs(30))
+ let wallet_client = NAC Lens4Client::new(&config.wallet_url, Duration::from_secs(30))
.map_err(|e| NACError::NetworkError(format!("Failed to create wallet client: {}", e)))?;
- let dapp_client = NRPC4Client::new(&config.dapp_url, Duration::from_secs(30))
+ let dapp_client = NAC Lens4Client::new(&config.dapp_url, Duration::from_secs(30))
.map_err(|e| NACError::NetworkError(format!("Failed to create dapp client: {}", e)))?;
- let explorer_client = NRPC4Client::new(&config.explorer_url, Duration::from_secs(30))
+ let explorer_client = NAC Lens4Client::new(&config.explorer_url, Duration::from_secs(30))
.map_err(|e| NACError::NetworkError(format!("Failed to create explorer client: {}", e)))?;
- let exchange_client = NRPC4Client::new(&config.exchange_url, Duration::from_secs(30))
+ let exchange_client = NAC Lens4Client::new(&config.exchange_url, Duration::from_secs(30))
.map_err(|e| NACError::NetworkError(format!("Failed to create exchange client: {}", e)))?;
Ok(Self {
diff --git a/nac-sdk/src/adapters/mod.rs b/nac-sdk/src/adapters/mod.rs
index 43e63b7..b6a1469 100644
--- a/nac-sdk/src/adapters/mod.rs
+++ b/nac-sdk/src/adapters/mod.rs
@@ -119,7 +119,7 @@ impl NACAdapter {
// 初始化L0层(无需异步)
let l0 = L0NativeAdapter::new()?;
- // 初始化L1层(需要连接NRPC4节点)
+ // 初始化L1层(需要连接NAC Lens4节点)
let l1 = L1ProtocolAdapter::new(&config.l1).await?;
// 初始化L2层(需要连接宪政、治理、网络节点)
@@ -591,7 +591,7 @@ pub struct ContractCall {
pub args: Vec,
}
-/// NAC Lens 客户端(NAC 原生协议客户端,NRPC4.0 已更名为 NAC Lens)
+/// NAC Lens 客户端(NAC 原生协议客户端,NAC Lens 已更名为 NAC Lens)
#[derive(Debug, Clone)]
pub struct NacLensClient {
pub endpoint: String,
@@ -615,7 +615,7 @@ impl NacLensClient {
/// 底层 NAC Lens 调用
pub async fn call(&self, method: &str, params: serde_json::Value) -> Result {
let body = serde_json::json!({
- "jsonrpc": "2.0",
+ "jsonac_lens": "2.0",
"method": method,
"params": params,
"id": 1
@@ -1444,10 +1444,10 @@ impl NacLensClient {
}
}
-/// NRPC4Client 类型别名(向后兼容)
-pub type NRPC4Client = NacLensClient;
-/// NRPC3Client 类型别名(向后兼容,已更名为 NAC Lens)
-pub type NRPC3Client = NacLensClient;
+/// NAC Lens4Client 类型别名(向后兼容)
+pub type NAC Lens4Client = NacLensClient;
+/// NacLensClient 类型别名(向后兼容,已更名为 NAC Lens)
+pub type NacLensClient = NacLensClient;
/// Decimal 类型(代币数量,精度由协议层处理)
/// 使用 u128 表示,最小单位为 1e-18
diff --git a/nac-sdk/src/advanced/mod.rs b/nac-sdk/src/advanced/mod.rs
index e846a4d..1de637f 100644
--- a/nac-sdk/src/advanced/mod.rs
+++ b/nac-sdk/src/advanced/mod.rs
@@ -2,7 +2,7 @@
//
// 提供批量操作、事件监听、合约部署等高级功能
-use crate::client::NRPC3Client as NACClient;
+use crate::client::NacLensClient as NACClient;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
@@ -261,7 +261,7 @@ impl AdvancedClient for NACClient {
fn subscribe_events(&self, filter: EventFilter)
-> Result, String>
{
- // 简化实现:调用NRPC3.0的事件订阅接口
+ // 简化实现:调用NAC Lens的事件订阅接口
let mut params = HashMap::new();
if let Some(address) = filter.address {
diff --git a/nac-sdk/src/client/mod.rs b/nac-sdk/src/client/mod.rs
index c70bace..a46f1c8 100644
--- a/nac-sdk/src/client/mod.rs
+++ b/nac-sdk/src/client/mod.rs
@@ -7,7 +7,7 @@ NAC SDK 的客户端模块,提供 NAC Lens 协议客户端。
- NacLensClient - NAC Lens 协议 RPC 客户端(原 NAC Lens,工单 #042 更名)
## 版本历史
-- v1.x: NRPC3.0 客户端(已归档至 _archive/v1_legacy_nrpc3/)
+- v1.x: NAC Lens 客户端(已归档至 _archive/v1_legacy_nac_lens/)
- v2.x: NAC Lens 客户端(当前版本)
*/
diff --git a/nac-sdk/src/error/mod.rs b/nac-sdk/src/error/mod.rs
index 89a2f02..810e5ed 100644
--- a/nac-sdk/src/error/mod.rs
+++ b/nac-sdk/src/error/mod.rs
@@ -15,9 +15,9 @@ use thiserror::Error;
/// NAC SDK错误类型
#[derive(Error, Debug)]
pub enum NACError {
- /// NRPC3.0协议错误
- #[error("NRPC3.0 protocol error: {0}")]
- NRPC3Error(String),
+ /// NAC Lens协议错误
+ #[error("NAC Lens protocol error: {0}")]
+ NAC Lens3Error(String),
/// 网络错误
#[error("Network error: {0}")]
@@ -179,8 +179,8 @@ mod tests {
#[test]
fn test_error_display() {
- let err = NACError::NRPC3Error("test error".to_string());
- assert_eq!(err.to_string(), "NRPC3.0 protocol error: test error");
+ let err = NACError::NAC Lens3Error("test error".to_string());
+ assert_eq!(err.to_string(), "NAC Lens protocol error: test error");
}
#[test]
diff --git a/nac-sdk/src/lib.rs b/nac-sdk/src/lib.rs
index d0d65bc..2d04a4b 100644
--- a/nac-sdk/src/lib.rs
+++ b/nac-sdk/src/lib.rs
@@ -8,7 +8,7 @@ NAC (NewAssetChain) SDK是为RWA(真实世界资产)区块链设计的原生
- ✅ **NAC原生设计**:完全遵循NAC核心原则,不使用以太坡标准
- ✅ **高性能**:Rust实现,零成本抽象
- ✅ **类型安全**:强类型系统,编译时错误检查
-- ✅ **NRPC3.0协议**:支持NAC原生RPC协议
+- ✅ **NAC Lens协议**:支持NAC原生RPC协议
- ✅ **Blake3哈希**:使用Blake3作为统一哈希算法
- ✅ **宪法层验证**:内置Constitutional Receipt验证
- ✅ **WASM支持**:可编译为WASM在浏览器中运行
@@ -30,10 +30,10 @@ pub mod types;
pub mod utils;
pub mod error;
pub mod adapters;
-// pub mod advanced; // Phase 10高级功能,待与NRPC3Client集成
+// pub mod advanced; // Phase 10高级功能,待与NacLensClient集成
// 重新导出常用类型和函数
-// pub use client::NRPC3Client; // NAC Lens 客户端通过 client 模块重新导出
+// pub use client::NacLensClient; // NAC Lens 客户端通过 client 模块重新导出
pub use crypto::{Blake3Hasher, AssetDNA, GNACSEncoder};
pub use protocols::ACC20;
// 待实现的协议(将在Phase 7完成)
diff --git a/nac-sdk/src/protocols/acc1155.rs b/nac-sdk/src/protocols/acc1155.rs
index 5a591f2..acf5491 100644
--- a/nac-sdk/src/protocols/acc1155.rs
+++ b/nac-sdk/src/protocols/acc1155.rs
@@ -2,9 +2,9 @@
//!
//! 提供与NAC区块链上ACC-1155证书交互的客户端接口
-// NRPC3Client 已更名为 NAC Lens 客户端
+// NacLensClient 已更名为 NAC Lens 客户端
use crate::error::{NACError, Result};
-use crate::adapters::NRPC3Client;
+use crate::adapters::NacLensClient;
use nac_udm::primitives::{Address, Hash, Timestamp};
use nac_udm::l1_protocol::gnacs::GNACSCode;
use nac_udm::l1_protocol::acc::acc1155::{
@@ -17,12 +17,12 @@ use serde_json::json;
/// ACC-1155多代币证书接口
pub struct ACC1155 {
- client: NRPC3Client,
+ client: NacLensClient,
}
impl ACC1155 {
/// 创建新的ACC-1155接口实例
- pub fn new(client: NRPC3Client) -> Self {
+ pub fn new(client: NacLensClient) -> Self {
Self { client }
}
@@ -642,7 +642,7 @@ mod tests {
#[tokio::test]
async fn test_acc1155_interface() {
// 这里只是接口测试,实际需要连接到NAC节点
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc1155 = ACC1155::new(client);
// 测试将在实际连接到NAC节点后进行
diff --git a/nac-sdk/src/protocols/acc20.rs b/nac-sdk/src/protocols/acc20.rs
index 643db68..e658610 100644
--- a/nac-sdk/src/protocols/acc20.rs
+++ b/nac-sdk/src/protocols/acc20.rs
@@ -7,7 +7,7 @@ ACC-20可替代代币协议接口,完全替代以太坊的ERC-20。
- ✅ 使用NAC原生术语(Asset Holdings而非Balance)
- ✅ 使用Blake3哈希
-- ✅ 使用NRPC3.0协议
+- ✅ 使用NAC Lens协议
- ✅ 内置合规验证
- ✅ 支持宪法收据
@@ -24,9 +24,9 @@ ACC-20可替代代币协议接口,完全替代以太坊的ERC-20。
*/
use crate::error::{NACError, Result};
-use crate::adapters::NRPC3Client;
+use crate::adapters::NacLensClient;
use nac_udm::primitives::{Address, Hash, Timestamp};
-// NRPC3Client 已更名为 NAC Lens 客户端
+// NacLensClient 已更名为 NAC Lens 客户端
use serde::{Deserialize, Serialize};
/// ACC-20代币信息
@@ -98,11 +98,11 @@ pub struct ACC20ApprovalEvent {
/// ```
/// use nac_sdk::protocols::ACC20;
/// use nac_sdk::primitives::Address;
-/// use nac_sdk::client::NRPC3Client;
+/// use nac_sdk::client::NacLensClient;
///
/// #[tokio::main]
/// async fn main() {
-/// let client = NRPC3Client::new("https://rpc.newassetchain.io");
+/// let client = NacLensClient::new("https://rpc.newassetchain.io");
/// let acc20 = ACC20::new(client);
///
/// let certificate_addr = Address::from_hex("0x123...").unwrap();
@@ -114,7 +114,7 @@ pub struct ACC20ApprovalEvent {
/// }
/// ```
pub struct ACC20 {
- client: NRPC3Client,
+ client: NacLensClient,
}
impl ACC20 {
@@ -122,12 +122,12 @@ impl ACC20 {
///
/// # Arguments
///
- /// * `client` - NRPC3客户端
+ /// * `client` - NAC Lens3客户端
///
/// # Returns
///
/// ACC-20接口实例
- pub fn new(client: NRPC3Client) -> Self {
+ pub fn new(client: NacLensClient) -> Self {
Self { client }
}
diff --git a/nac-sdk/src/protocols/acc20c.rs b/nac-sdk/src/protocols/acc20c.rs
index 69d0b76..7b36e30 100644
--- a/nac-sdk/src/protocols/acc20c.rs
+++ b/nac-sdk/src/protocols/acc20c.rs
@@ -2,9 +2,9 @@
//!
//! 提供与NAC区块链上ACC-20C兼容层交互的客户端接口
-// NRPC3Client 已更名为 NAC Lens 客户端
+// NacLensClient 已更名为 NAC Lens 客户端
use crate::error::{NACError, Result};
-use crate::adapters::NRPC3Client;
+use crate::adapters::NacLensClient;
use nac_udm::primitives::{Address, Hash, Timestamp};
use nac_udm::l1_protocol::gnacs::GNACSCode;
use nac_udm::l1_protocol::acc20c::{
@@ -21,12 +21,12 @@ use serde_json::json;
/// - 状态同步:跨链事件监听和状态同步
/// - 元数据生成:符合OpenSea标准的ERC-721元数据
pub struct ACC20C {
- client: NRPC3Client,
+ client: NacLensClient,
}
impl ACC20C {
/// 创建新的ACC-20C接口实例
- pub fn new(client: NRPC3Client) -> Self {
+ pub fn new(client: NacLensClient) -> Self {
Self { client }
}
@@ -480,7 +480,7 @@ mod tests {
#[tokio::test]
async fn test_acc20c_interface() {
// 这里只是接口测试,实际需要连接到NAC节点
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc20c = ACC20C::new(client);
// 测试将在实际连接到NAC节点后进行
diff --git a/nac-sdk/src/protocols/acc721.rs b/nac-sdk/src/protocols/acc721.rs
index ae43802..79f396b 100644
--- a/nac-sdk/src/protocols/acc721.rs
+++ b/nac-sdk/src/protocols/acc721.rs
@@ -2,9 +2,9 @@
//!
//! 提供与NAC区块链上ACC-721证书交互的客户端接口
-// NRPC3Client 已更名为 NAC Lens 客户端
+// NacLensClient 已更名为 NAC Lens 客户端
use crate::error::{NACError, Result};
-use crate::adapters::NRPC3Client;
+use crate::adapters::NacLensClient;
use crate::types::*;
use nac_udm::primitives::{Address, Hash, Timestamp};
use nac_udm::l1_protocol::gnacs::GNACSCode;
@@ -17,12 +17,12 @@ use serde_json::json;
/// ACC-721唯一资产证书接口
pub struct ACC721 {
- client: NRPC3Client,
+ client: NacLensClient,
}
impl ACC721 {
/// 创建新的ACC-721接口实例
- pub fn new(client: NRPC3Client) -> Self {
+ pub fn new(client: NacLensClient) -> Self {
Self { client }
}
@@ -514,7 +514,7 @@ mod tests {
#[tokio::test]
async fn test_acc721_interface() {
// 这里只是接口测试,实际需要连接到NAC节点
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc721 = ACC721::new(client);
// 测试将在实际连接到NAC节点后进行
diff --git a/nac-sdk/src/types/mod.rs b/nac-sdk/src/types/mod.rs
index a71417e..e1660f5 100644
--- a/nac-sdk/src/types/mod.rs
+++ b/nac-sdk/src/types/mod.rs
@@ -26,17 +26,17 @@ pub use nac_udm::l1_protocol::cbpp::{
TransactionWithReceipt,
};
-/// NRPC3.0请求ID类型
+/// NAC Lens请求ID类型
pub type RequestId = u64;
/// 资产数量类型(使用u128支持大数)
pub type AssetAmount = u128;
-/// NRPC3.0请求
+/// NAC Lens请求
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3Request {
+pub struct NacLensRequest {
/// 协议版本(固定为"3.0")
- pub nrpc: String,
+ pub nac_lens_version: String,
/// 请求ID
pub id: RequestId,
@@ -52,11 +52,11 @@ pub struct NRPC3Request {
pub constitutional_hash: Option,
}
-/// NRPC3.0响应
+/// NAC Lens响应
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3Response {
+pub struct NacLensResponse {
/// 协议版本(固定为"3.0")
- pub nrpc: String,
+ pub nac_lens_version: String,
/// 请求ID
pub id: RequestId,
@@ -67,16 +67,16 @@ pub struct NRPC3Response {
/// 错误(失败时)
#[serde(skip_serializing_if = "Option::is_none")]
- pub error: Option,
+ pub error: Option,
/// 宪法收据(可选,某些操作会返回)
#[serde(skip_serializing_if = "Option::is_none")]
pub constitutional_receipt: Option,
}
-/// NRPC3.0错误
+/// NAC Lens错误
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPC3Error {
+pub struct NAC Lens3Error {
/// 错误代码
pub code: i32,
@@ -255,9 +255,9 @@ mod tests {
use super::*;
#[test]
- fn test_nrpc3_request_serialization() {
- let request = NRPC3Request {
- nrpc: "3.0".to_string(),
+ fn test_nac_lens_request_serialization() {
+ let request = NacLensRequest {
+ nac_lens_version: "NAC Lens".to_string(),
id: 1,
method: "acc20_getAssetHoldings".to_string(),
params: serde_json::json!({"address": "0x123"}),
@@ -265,7 +265,7 @@ mod tests {
};
let json = serde_json::to_string(&request).unwrap();
- assert!(json.contains("\"nrpc\":\"3.0\""));
+ assert!(json.contains("\"nac_lens\":\"3.0\""));
assert!(json.contains("\"method\":\"acc20_getAssetHoldings\""));
}
diff --git a/nac-sdk/tests/acc1155_integration_test.rs b/nac-sdk/tests/acc1155_integration_test.rs
index ecc3b96..d0c54b2 100644
--- a/nac-sdk/tests/acc1155_integration_test.rs
+++ b/nac-sdk/tests/acc1155_integration_test.rs
@@ -2,7 +2,7 @@
//!
//! 测试ACC-1155多代币证书协议的完整功能
-use nac_sdk::client::NRPC3Client;
+use nac_sdk::client::NacLensClient;
use nac_sdk::protocols::ACC1155;
use nac_sdk::error::{NACError, Result};
use nac_udm::primitives::{Address, Hash, Timestamp};
@@ -16,7 +16,7 @@ use nac_udm::l1_protocol::acc::acc1155::{
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc1155_create_and_mint() -> Result<()> {
// 创建客户端
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc1155 = ACC1155::new(client);
// 测试地址
@@ -84,7 +84,7 @@ async fn test_acc1155_create_and_mint() -> Result<()> {
#[tokio::test]
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc1155_batch_operations() -> Result<()> {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc1155 = ACC1155::new(client);
let certificate_address = Address::from_hex("0x12345678901234567890123456789012345678901234567890123456789012345678901234567890")
@@ -124,7 +124,7 @@ async fn test_acc1155_batch_operations() -> Result<()> {
#[tokio::test]
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc1155_hybrid_tokens() -> Result<()> {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc1155 = ACC1155::new(client);
let certificate_address = Address::from_hex("0x12345678901234567890123456789012345678901234567890123456789012345678901234567890")
@@ -205,7 +205,7 @@ async fn test_acc1155_hybrid_tokens() -> Result<()> {
#[tokio::test]
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc1155_approval() -> Result<()> {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc1155 = ACC1155::new(client);
let certificate_address = Address::from_hex("0x12345678901234567890123456789012345678901234567890123456789012345678901234567890")
@@ -241,7 +241,7 @@ async fn test_acc1155_approval() -> Result<()> {
#[tokio::test]
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc1155_valuation() -> Result<()> {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc1155 = ACC1155::new(client);
let certificate_address = Address::from_hex("0x12345678901234567890123456789012345678901234567890123456789012345678901234567890")
@@ -276,7 +276,7 @@ async fn test_acc1155_valuation() -> Result<()> {
#[tokio::test]
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc1155_custody_and_insurance() -> Result<()> {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc1155 = ACC1155::new(client);
let certificate_address = Address::from_hex("0x12345678901234567890123456789012345678901234567890123456789012345678901234567890")
@@ -300,7 +300,7 @@ async fn test_acc1155_custody_and_insurance() -> Result<()> {
#[tokio::test]
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc1155_batch_burn() -> Result<()> {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc1155 = ACC1155::new(client);
let certificate_address = Address::from_hex("0x12345678901234567890123456789012345678901234567890123456789012345678901234567890")
@@ -326,7 +326,7 @@ async fn test_acc1155_batch_burn() -> Result<()> {
/// 单元测试:测试ACC-1155接口创建
#[test]
fn test_acc1155_interface_creation() {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let _acc1155 = ACC1155::new(client);
// 接口创建成功
}
diff --git a/nac-sdk/tests/acc20c_integration_test.rs b/nac-sdk/tests/acc20c_integration_test.rs
index 8e26c3c..95f4658 100644
--- a/nac-sdk/tests/acc20c_integration_test.rs
+++ b/nac-sdk/tests/acc20c_integration_test.rs
@@ -1,6 +1,6 @@
//! ACC-20C兼容层协议集成测试
-use nac_sdk::client::NRPC3Client;
+use nac_sdk::client::NacLensClient;
use nac_sdk::protocols::ACC20C;
use nac_sdk::error::{Result, NACError};
use nac_udm::primitives::{Address, Timestamp};
@@ -10,7 +10,7 @@ use nac_udm::l1_protocol::acc20c::{EthAddress, u256};
#[test]
fn test_acc20c_interface_creation() {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc20c = ACC20C::new(client);
// 验证接口创建成功
@@ -56,7 +56,7 @@ fn test_address_parsing() {
#[ignore]
async fn test_acc20c_wrap_and_unwrap() -> Result<()> {
// 1. 创建客户端
- let client = NRPC3Client::new("https://testnet.newassetchain.io");
+ let client = NacLensClient::new("https://testnet.newassetchain.io");
let acc20c = ACC20C::new(client);
// 2. 准备测试数据
@@ -111,7 +111,7 @@ async fn test_acc20c_wrap_and_unwrap() -> Result<()> {
#[ignore]
async fn test_acc20c_freeze_and_unfreeze() -> Result<()> {
// 1. 创建客户端
- let client = NRPC3Client::new("https://testnet.newassetchain.io");
+ let client = NacLensClient::new("https://testnet.newassetchain.io");
let acc20c = ACC20C::new(client);
// 2. 准备测试数据
@@ -137,7 +137,7 @@ async fn test_acc20c_freeze_and_unfreeze() -> Result<()> {
#[ignore]
async fn test_acc20c_wrapper_config() -> Result<()> {
// 1. 创建客户端
- let client = NRPC3Client::new("https://testnet.newassetchain.io");
+ let client = NacLensClient::new("https://testnet.newassetchain.io");
let acc20c = ACC20C::new(client);
// 2. 准备测试数据
@@ -164,7 +164,7 @@ async fn test_acc20c_wrapper_config() -> Result<()> {
#[ignore]
async fn test_acc20c_wrapper_status() -> Result<()> {
// 1. 创建客户端
- let client = NRPC3Client::new("https://testnet.newassetchain.io");
+ let client = NacLensClient::new("https://testnet.newassetchain.io");
let acc20c = ACC20C::new(client);
// 2. 准备测试数据
@@ -182,7 +182,7 @@ async fn test_acc20c_wrapper_status() -> Result<()> {
#[ignore]
async fn test_acc20c_metadata_uri() -> Result<()> {
// 1. 创建客户端
- let client = NRPC3Client::new("https://testnet.newassetchain.io");
+ let client = NacLensClient::new("https://testnet.newassetchain.io");
let acc20c = ACC20C::new(client);
// 2. 准备测试数据
@@ -202,7 +202,7 @@ async fn test_acc20c_metadata_uri() -> Result<()> {
#[ignore]
async fn test_acc20c_fee_calculation() -> Result<()> {
// 1. 创建客户端
- let client = NRPC3Client::new("https://testnet.newassetchain.io");
+ let client = NacLensClient::new("https://testnet.newassetchain.io");
let acc20c = ACC20C::new(client);
// 2. 准备测试数据
@@ -228,7 +228,7 @@ async fn test_acc20c_fee_calculation() -> Result<()> {
#[ignore]
async fn test_acc20c_compliance_snapshot() -> Result<()> {
// 1. 创建客户端
- let client = NRPC3Client::new("https://testnet.newassetchain.io");
+ let client = NacLensClient::new("https://testnet.newassetchain.io");
let acc20c = ACC20C::new(client);
// 2. 准备测试数据
@@ -259,7 +259,7 @@ async fn test_acc20c_cross_chain_flow() -> Result<()> {
// 完整的跨链流程测试
// 1. 创建客户端
- let client = NRPC3Client::new("https://testnet.newassetchain.io");
+ let client = NacLensClient::new("https://testnet.newassetchain.io");
let acc20c = ACC20C::new(client);
// 2. 准备测试数据
diff --git a/nac-sdk/tests/acc721_integration_test.rs b/nac-sdk/tests/acc721_integration_test.rs
index ed57770..f0171f4 100644
--- a/nac-sdk/tests/acc721_integration_test.rs
+++ b/nac-sdk/tests/acc721_integration_test.rs
@@ -2,7 +2,7 @@
//!
//! 测试ACC-721唯一资产证书协议的完整功能
-use nac_sdk::client::NRPC3Client;
+use nac_sdk::client::NacLensClient;
use nac_sdk::protocols::ACC721;
use nac_sdk::error::{NACError, Result};
use nac_udm::primitives::{Address, Hash, Timestamp};
@@ -13,7 +13,7 @@ use nac_udm::l1_protocol::acc::acc721::{AssetId, AssetValuation};
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc721_mint_and_transfer() -> Result<()> {
// 创建客户端
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc721 = ACC721::new(client);
// 测试地址
@@ -93,7 +93,7 @@ async fn test_acc721_mint_and_transfer() -> Result<()> {
#[tokio::test]
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc721_valuation() -> Result<()> {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc721 = ACC721::new(client);
let certificate_address = Address::from_hex("0x12345678901234567890123456789012345678901234567890123456789012345678901234567890")
@@ -125,7 +125,7 @@ async fn test_acc721_valuation() -> Result<()> {
#[tokio::test]
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc721_fragmentization() -> Result<()> {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc721 = ACC721::new(client);
let certificate_address = Address::from_hex("0x12345678901234567890123456789012345678901234567890123456789012345678901234567890")
@@ -159,7 +159,7 @@ async fn test_acc721_fragmentization() -> Result<()> {
#[tokio::test]
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc721_approve_and_burn() -> Result<()> {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc721 = ACC721::new(client);
let certificate_address = Address::from_hex("0x12345678901234567890123456789012345678901234567890123456789012345678901234567890")
@@ -196,7 +196,7 @@ async fn test_acc721_approve_and_burn() -> Result<()> {
#[tokio::test]
#[ignore] // 需要实际的NAC节点才能运行
async fn test_acc721_asset_dna() -> Result<()> {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let acc721 = ACC721::new(client);
let certificate_address = Address::from_hex("0x12345678901234567890123456789012345678901234567890123456789012345678901234567890")
@@ -220,7 +220,7 @@ async fn test_acc721_asset_dna() -> Result<()> {
/// 单元测试:测试ACC-721接口创建
#[test]
fn test_acc721_interface_creation() {
- let client = NRPC3Client::new("https://rpc.newassetchain.io");
+ let client = NacLensClient::new("https://rpc.newassetchain.io");
let _acc721 = ACC721::new(client);
// 接口创建成功
}
diff --git a/nac-sdk/todo.md b/nac-sdk/todo.md
index aae46ea..03878a5 100644
--- a/nac-sdk/todo.md
+++ b/nac-sdk/todo.md
@@ -5,7 +5,7 @@
- [x] Error模块(20种错误类型)
- [x] Types模块(NAC原生类型)
- [x] Crypto模块(Blake3、GNACS、AssetDNA)
-- [x] Client模块(NRPC3.0客户端)
+- [x] Client模块(NAC Lens客户端)
- [x] Utils模块
## Phase 2: ACC协议实现
@@ -63,7 +63,7 @@
- ✅ 在NAC SDK中实现ACC-721接口
- 13个核心方法(铸造、转移、授权、销毁、碎片化等)
- 完整的错误处理
- - NRPC3.0协议集成
+ - NAC Lens协议集成
- ✅ 编写测试用例
- 4个单元测试(全部通过)
- 5个集成测试(需要NAC节点)
diff --git a/nac-udm/COMPLETION_REPORT.md b/nac-udm/COMPLETION_REPORT.md
index cb38cd5..5dcfaf4 100644
--- a/nac-udm/COMPLETION_REPORT.md
+++ b/nac-udm/COMPLETION_REPORT.md
@@ -40,7 +40,7 @@
- [x] OpenProductionNetwork
- [x] GossipProtocol
- [x] ExecutionEngine
- - [x] NRPC 3.0
+ - [x] NAC Lens
- [x] GNACS模块(5个)
- [x] GNACSCode(48位编码)
- [x] AssetCategory(11种)
diff --git a/nac-udm/PHASE_4_DELIVERY_REPORT.md b/nac-udm/PHASE_4_DELIVERY_REPORT.md
index e75b864..a56e6d3 100644
--- a/nac-udm/PHASE_4_DELIVERY_REPORT.md
+++ b/nac-udm/PHASE_4_DELIVERY_REPORT.md
@@ -266,7 +266,7 @@ pub struct LoadBalanceReport {
- ✅ 使用 **CBPP** 共识协调,不是PoW/PoS/DPoS
- ✅ 使用 **CSNP** 网络协议,不是P2P
-- ✅ 使用 **NRPC3.0**,不是RPC/JSON-RPC
+- ✅ 使用 **NAC Lens**,不是RPC/JSON-RPC
- ✅ 使用 **Constitutional Receipt** 验证
### ✅ 技术规范
diff --git a/nac-udm/src/l1_protocol/cbpp/mod.rs b/nac-udm/src/l1_protocol/cbpp/mod.rs
index 58eb416..e8bdb1f 100644
--- a/nac-udm/src/l1_protocol/cbpp/mod.rs
+++ b/nac-udm/src/l1_protocol/cbpp/mod.rs
@@ -20,11 +20,11 @@ mod fluid_block;
mod open_production_network;
mod gossip_protocol;
mod execution_engine;
-mod nrpc;
+mod nac_lens;
pub use constitutional_receipt::*;
pub use fluid_block::*;
pub use open_production_network::*;
pub use gossip_protocol::*;
pub use execution_engine::*;
-pub use nrpc::*;
+pub use crate::nac_lens::*;
diff --git a/nac-udm/src/l1_protocol/cbpp/nrpc.rs b/nac-udm/src/l1_protocol/cbpp/nac_lens.rs
similarity index 83%
rename from nac-udm/src/l1_protocol/cbpp/nrpc.rs
rename to nac-udm/src/l1_protocol/cbpp/nac_lens.rs
index d2af78b..88abd75 100644
--- a/nac-udm/src/l1_protocol/cbpp/nrpc.rs
+++ b/nac-udm/src/l1_protocol/cbpp/nac_lens.rs
@@ -1,4 +1,4 @@
-//! NRPC (NAC RPC) Protocol
+//! NAC Lens (NAC RPC) Protocol
//!
//! NAC RPC协议定义
@@ -7,10 +7,10 @@ use super::fluid_block::FluidBlock;
#[allow(unused_imports)]
use super::constitutional_receipt::ConstitutionalReceipt;
-/// NRPC错误
+/// NAC Lens错误
#[derive(Debug, Clone)]
-/// NRPCError
-pub struct NRPCError {
+/// NacLensError
+pub struct NacLensError {
/// 错误代码
pub code: i32,
/// 错误消息
@@ -19,8 +19,8 @@ pub struct NRPCError {
pub data: Option,
}
-impl NRPCError {
- /// 创建新的NRPC错误
+impl NacLensError {
+ /// 创建新的NAC Lens错误
pub fn new(code: i32, message: String) -> Self {
Self {
code,
@@ -39,10 +39,10 @@ impl NRPCError {
}
}
-/// NRPC请求
+/// NAC Lens请求
#[derive(Debug, Clone)]
-/// NRPCRequest
-pub struct NRPCRequest {
+/// NacLensRequest
+pub struct NacLensRequest {
/// 请求ID
pub id: u64,
/// 方法名
@@ -51,8 +51,8 @@ pub struct NRPCRequest {
pub params: Vec,
}
-impl NRPCRequest {
- /// 创建新的NRPC请求
+impl NacLensRequest {
+ /// 创建新的NAC Lens请求
pub fn new(id: u64, method: String, params: Vec) -> Self {
Self {
id,
@@ -62,19 +62,19 @@ impl NRPCRequest {
}
}
-/// NRPC响应
+/// NAC Lens响应
#[derive(Debug, Clone)]
-/// NRPCResponse
-pub struct NRPCResponse {
+/// NacLensResponse
+pub struct NacLensResponse {
/// 请求ID
pub id: u64,
/// 结果
pub result: Option,
/// 错误
- pub error: Option,
+ pub error: Option,
}
-impl NRPCResponse {
+impl NacLensResponse {
/// 创建成功响应
pub fn success(id: u64, result: String) -> Self {
Self {
@@ -85,7 +85,7 @@ impl NRPCResponse {
}
/// 创建错误响应
- pub fn error(id: u64, error: NRPCError) -> Self {
+ pub fn error(id: u64, error: NacLensError) -> Self {
Self {
id,
result: None,
@@ -323,10 +323,10 @@ impl NodeInfoResponse {
}
}
-/// NRPC服务器
+/// NAC Lens服务器
#[derive(Debug)]
-/// NRPCServer
-pub struct NRPCServer {
+/// NacLensServer
+pub struct NacLensServer {
/// 服务器版本
pub version: String,
/// 监听地址
@@ -337,8 +337,8 @@ pub struct NRPCServer {
pub error_count: u64,
}
-impl NRPCServer {
- /// 创建新的NRPC服务器
+impl NacLensServer {
+ /// 创建新的NAC Lens服务器
pub fn new(version: String, listen_address: String) -> Self {
Self {
version,
@@ -349,31 +349,31 @@ impl NRPCServer {
}
/// 处理请求
- pub fn handle_request(&mut self, request: NRPCRequest) -> NRPCResponse {
+ pub fn handle_request(&mut self, request: NacLensRequest) -> NacLensResponse {
self.request_count += 1;
match request.method.as_str() {
"nac_getChainInfo" => {
// 简化实现
- NRPCResponse::success(request.id, "chain_info".to_string())
+ NacLensResponse::success(request.id, "chain_info".to_string())
}
"nac_getBlockByNumber" => {
// 简化实现
- NRPCResponse::success(request.id, "block_info".to_string())
+ NacLensResponse::success(request.id, "block_info".to_string())
}
"nac_getTransactionByHash" => {
// 简化实现
- NRPCResponse::success(request.id, "transaction_info".to_string())
+ NacLensResponse::success(request.id, "transaction_info".to_string())
}
"nac_sendTransaction" => {
// 简化实现
- NRPCResponse::success(request.id, "transaction_hash".to_string())
+ NacLensResponse::success(request.id, "transaction_hash".to_string())
}
_ => {
self.error_count += 1;
- NRPCResponse::error(
+ NacLensResponse::error(
request.id,
- NRPCError::new(-32601, "Method not found".to_string()),
+ NacLensError::new(-32601, "Method not found".to_string()),
)
}
}
@@ -398,21 +398,21 @@ mod tests {
use super::*;
#[test]
- fn test_nrpc_error() {
- let error = NRPCError::new(-32600, "Invalid Request".to_string());
+ fn test_nac_lens_error() {
+ let error = NacLensError::new(-32600, "Invalid Request".to_string());
assert_eq!(error.code, -32600);
assert_eq!(error.message, "Invalid Request");
assert!(error.data.is_none());
}
#[test]
- fn test_nrpc_response() {
- let success = NRPCResponse::success(1, "result".to_string());
+ fn test_nac_lens_response() {
+ let success = NacLensResponse::success(1, "result".to_string());
assert!(success.is_success());
- let error = NRPCResponse::error(
+ let error = NacLensResponse::error(
2,
- NRPCError::new(-32600, "Invalid Request".to_string()),
+ NacLensError::new(-32600, "Invalid Request".to_string()),
);
assert!(!error.is_success());
}
@@ -428,16 +428,16 @@ mod tests {
}
#[test]
- fn test_nrpc_server() {
- let mut server = NRPCServer::new("1.0.0".to_string(), "0.0.0.0:8545".to_string());
+ fn test_nac_lens_server() {
+ let mut server = NacLensServer::new("1.0.0".to_string(), "0.0.0.0:8545".to_string());
// 处理有效请求
- let request = NRPCRequest::new(1, "nac_getChainInfo".to_string(), vec![]);
+ let request = NacLensRequest::new(1, "nac_getChainInfo".to_string(), vec![]);
let response = server.handle_request(request);
assert!(response.is_success());
// 处理无效请求
- let request = NRPCRequest::new(2, "invalid_method".to_string(), vec![]);
+ let request = NacLensRequest::new(2, "invalid_method".to_string(), vec![]);
let response = server.handle_request(request);
assert!(!response.is_success());
diff --git a/nac-udm/src/registry/auto_register.rs b/nac-udm/src/registry/auto_register.rs
index 9bcae4a..be22e37 100644
--- a/nac-udm/src/registry/auto_register.rs
+++ b/nac-udm/src/registry/auto_register.rs
@@ -135,7 +135,7 @@ fn register_cbpp(registry: &mut DefinitionRegistry) -> Result {
"FluidBlock",
"OpenProductionNetwork",
"GossipMessage",
- "NRPCServer",
+ "NacLensServer",
];
for name in definitions {
diff --git a/nac-vision-wallet/Cargo.toml b/nac-vision-wallet/Cargo.toml
index c68d60c..08d603b 100644
--- a/nac-vision-wallet/Cargo.toml
+++ b/nac-vision-wallet/Cargo.toml
@@ -32,7 +32,7 @@ bytes = "1.0"
nac-wallet-core = { path = "../nac-wallet-core" }
nac-udm = { path = "../nac-udm" }
nac-cee = { path = "../nac-cee" }
-nac-nrpc = { path = "../nac-nrpc" }
+nac-lens = { path = "../nac-lens" }
[dev-dependencies]
tokio-test = "0.4"
diff --git a/nac-wallet-cli/src/main.rs b/nac-wallet-cli/src/main.rs
index 21f5347..2c7b03e 100644
--- a/nac-wallet-cli/src/main.rs
+++ b/nac-wallet-cli/src/main.rs
@@ -6,7 +6,7 @@ use nac_wallet_core::{
key_manager::{KeyPair, SignatureAlgorithm},
address::{StructuredAddress, AccountType, WalletKYCLevel},
storage::KeyStore,
- nrpc_wrapper::NRPCWrapper,
+ nac_lens_wrapper::NacLensWrapper,
};
use std::path::PathBuf;
@@ -139,8 +139,8 @@ async fn query_balance(
let keystore = KeyStore::load_from_file(wallet_path)?;
let address_bytes = keystore.address;
- // 创建NRPC客户端
- let client = NRPCWrapper::new(rpc_url);
+ // 创建NAC Lens客户端
+ let client = NacLensWrapper::new(rpc_url);
// 查询XTZH余额
match client.get_balance(&address_bytes, Some("xtzh")).await {
diff --git a/nac-wallet-core/src/lib.rs b/nac-wallet-core/src/lib.rs
index 3f9d296..9cd8f14 100644
--- a/nac-wallet-core/src/lib.rs
+++ b/nac-wallet-core/src/lib.rs
@@ -13,7 +13,7 @@ pub mod gnacs_parser;
pub mod network;
pub mod storage;
pub mod cee_client;
-pub mod nrpc_wrapper;
+pub mod nac_lens_wrapper;
pub mod mnemonic;
pub mod multisig;
pub mod hardware;
diff --git a/nac-wallet-core/src/nrpc_wrapper.rs b/nac-wallet-core/src/nac_lens_wrapper.rs
similarity index 95%
rename from nac-wallet-core/src/nrpc_wrapper.rs
rename to nac-wallet-core/src/nac_lens_wrapper.rs
index c7c5eda..4c37a21 100644
--- a/nac-wallet-core/src/nrpc_wrapper.rs
+++ b/nac-wallet-core/src/nac_lens_wrapper.rs
@@ -1,22 +1,22 @@
-// NRPC 3.0方法包装层
-// 提供高级API,封装nac-sdk的NRPC3Client
+// NAC Lens方法包装层
+// 提供高级API,封装nac-sdk的NacLensClient
-use nac_sdk::client::NRPC3Client;
+use nac_sdk::client::NacLensClient;
use nac_sdk::error::Result as NACResult;
use serde_json::{json, Value};
-/// NRPC 3.0包装客户端
+/// NAC Lens包装客户端
///
/// 提供钱包常用的RPC方法包装
-pub struct NRPCWrapper {
- client: NRPC3Client,
+pub struct NacLensWrapper {
+ client: NacLensClient,
}
-impl NRPCWrapper {
- /// 创建新的NRPC包装客户端
+impl NacLensWrapper {
+ /// 创建新的NAC Lens包装客户端
pub fn new(endpoint: impl Into) -> Self {
Self {
- client: NRPC3Client::new(endpoint),
+ client: NacLensClient::new(endpoint),
}
}
@@ -322,8 +322,8 @@ mod tests {
use super::*;
#[test]
- fn test_nrpc_wrapper_creation() {
- let wrapper = NRPCWrapper::new("https://rpc.newassetchain.io");
+ fn test_nac_lens_wrapper_creation() {
+ let wrapper = NacLensWrapper::new("https://rpc.newassetchain.io");
assert!(true); // 创建成功
}
}
diff --git a/nac_port_audit.sh b/nac_port_audit.sh
index c397f19..6b356b8 100755
--- a/nac_port_audit.sh
+++ b/nac_port_audit.sh
@@ -88,8 +88,8 @@ L0层(网络层):
L1层(协议层):
9545 CBPP节点RPC(HTTP)
9546 CBPP WebSocket
- 9547 NRPC4.0 HTTP
- 9548 NRPC4.0 WebSocket
+ 9547 NAC Lens HTTP
+ 9548 NAC Lens WebSocket
9549 NVM RPC
L2层(应用层):
diff --git a/nvm_v2/nvm-l1/CLOSED_LOOP_ANALYSIS.md b/nvm_v2/nvm-l1/CLOSED_LOOP_ANALYSIS.md
index 4fbe5f9..a3451d9 100644
--- a/nvm_v2/nvm-l1/CLOSED_LOOP_ANALYSIS.md
+++ b/nvm_v2/nvm-l1/CLOSED_LOOP_ANALYSIS.md
@@ -152,7 +152,7 @@
- ✅ 流体区块 (`fluid_block.rs`)
- ✅ 开放生产网络 (`open_production_network.rs`)
- ✅ Gossip协议 (`gossip_protocol.rs`)
- - ✅ NRPC3.0 (`nrpc.rs`)
+ - ✅ NAC Lens (`nrpc.rs`)
### 缺失模块(❌)
diff --git a/nvm_v2/nvm-l1/NAC_CBPP_FINAL_REPORT.md b/nvm_v2/nvm-l1/NAC_CBPP_FINAL_REPORT.md
index aa7275e..ad9169d 100644
--- a/nvm_v2/nvm-l1/NAC_CBPP_FINAL_REPORT.md
+++ b/nvm_v2/nvm-l1/NAC_CBPP_FINAL_REPORT.md
@@ -11,7 +11,7 @@
## 📋 执行摘要
-NAC公链基于CBPP(宪政区块生产协议)已完成核心开发、测试和服务器部署。系统采用独特的"节点才生区块"理念,实现了开放生产网络(OPN)、流体区块模型(FBM)、宪法执行引擎(CEE)和NRPC3.0协议。
+NAC公链基于CBPP(宪政区块生产协议)已完成核心开发、测试和服务器部署。系统采用独特的"节点才生区块"理念,实现了开放生产网络(OPN)、流体区块模型(FBM)、宪法执行引擎(CEE)和NAC Lens协议。
### 关键成果
- ✅ **CBPP共识层**: 完整实现宪政区块生产协议
@@ -129,9 +129,9 @@ pub struct GossipNode {
**测试**: 3个测试全部通过
-#### 1.6 NRPC3.0协议
+#### 1.6 NAC Lens协议
```rust
-pub struct NRPCServer {
+pub struct NacLensServer {
blockchain: Vec,
pending_transactions: HashMap, Transaction>,
version: String,
@@ -172,7 +172,7 @@ pub struct NRPCServer {
| 流体区块模型 (FBM) | 4 | ✅ |
| 开放生产网络 (OPN) | 5 | ✅ |
| Gossip协议 (RVGP) | 3 | ✅ |
-| NRPC3.0 | 4 | ✅ |
+| NAC Lens | 4 | ✅ |
| 其他模块 | 144 | ✅ |
---
@@ -426,7 +426,7 @@ Total 26 17,100 14,080 1,810 1,210
- [x] 开放生产网络
- [x] 流体区块模型
- [x] Gossip协议
-- [x] NRPC3.0接口
+- [x] NAC Lens接口
- [x] 节点程序
### 测试覆盖
@@ -492,7 +492,7 @@ Total 26 17,100 14,080 1,810 1,210
1. 实现完整的P2P网络层
2. 添加数据库持久化(RocksDB)
3. 集成真实的密码学库(ed25519/secp256k1)
-4. 完善NRPC3.0所有接口
+4. 完善NAC Lens所有接口
5. 实现区块浏览器
6. 添加钱包支持
diff --git a/nvm_v2/nvm-l1/NAC_TECHNOLOGY_LEADERSHIP_ANALYSIS.md b/nvm_v2/nvm-l1/NAC_TECHNOLOGY_LEADERSHIP_ANALYSIS.md
index 85e7b9b..5db96aa 100644
--- a/nvm_v2/nvm-l1/NAC_TECHNOLOGY_LEADERSHIP_ANALYSIS.md
+++ b/nvm_v2/nvm-l1/NAC_TECHNOLOGY_LEADERSHIP_ANALYSIS.md
@@ -426,7 +426,7 @@ impl XTZHOracle {
---
-## 三、NRPC3.0 vs 传统RPC
+## 三、NAC Lens vs 传统RPC
### 3.1 传统RPC的局限性
@@ -482,7 +482,7 @@ query {
- ❌ **无智能**:仍是被动响应
- ❌ **无状态**:无法记住用户偏好
-### 3.2 NRPC3.0的革命性创新
+### 3.2 NAC Lens的革命性创新
#### 核心理念:**"协议即智能体,通信即神经网络"**
@@ -504,7 +504,7 @@ pub struct ProtocolNeuron {
// 🚀 协议智能体思维过程
impl NRPCNeuralNetwork {
- pub fn process_request(&mut self, request: NRPCRequest) -> NRPCResponse {
+ pub fn process_request(&mut self, request: NacLensRequest) -> NacLensResponse {
// 1. 输入层激活
let input_activations = self.activate_input_layer(&request);
@@ -527,7 +527,7 @@ impl NRPCNeuralNetwork {
请求 → 查询数据库 → 返回结果
```
-**NRPC3.0**:
+**NAC Lens**:
```
请求 → 神经网络激活 → 理解意图 → 预测需求 → 智能响应 → 学习优化
```
@@ -580,7 +580,7 @@ impl QuantumDNAEncoding {
- 可被中间人攻击
- 量子计算机可破解
-**NRPC3.0**:
+**NAC Lens**:
- 🚀 **量子密钥分发**:物理不可破解
- 🚀 **无克隆定理**:窃听必被发现
- 🚀 **量子签名**:不可伪造
@@ -595,7 +595,7 @@ pub struct SpacetimeRouter {
// 🚀 时空感知路由
impl SpacetimeRouter {
- pub fn route_request(&self, request: NRPCRequest) -> Route {
+ pub fn route_request(&self, request: NacLensRequest) -> Route {
// 1. 分析因果依赖
let causal_deps = self.causal_graph.get_dependencies(&request);
@@ -618,14 +618,14 @@ impl SpacetimeRouter {
- 请求 → 服务器 → 响应
- 延迟 = 网络延迟 + 处理时间
-**NRPC3.0**:
+**NAC Lens**:
- 🚀 **预测性预取**:在你请求前就准备好
- 🚀 **时间旅行缓存**:从"未来"获取数据
- 🚀 **因果感知**:理解数据依赖关系
**延迟对比**:
- 传统RPC:100ms(网络)+ 50ms(处理)= 150ms
-- NRPC3.0:0ms(缓存命中)或 20ms(预取命中)
+- NAC Lens:0ms(缓存命中)或 20ms(预取命中)
**4. 全息数据场协议**
```rust
@@ -667,7 +667,7 @@ impl HolographicDataField {
- 数据丢失 → 无法恢复
- 需要完整数据才能使用
-**NRPC3.0**:
+**NAC Lens**:
- 🚀 **全息存储**:50%数据即可重建100%
- 🚀 **容错性**:50%节点故障仍可正常工作
- 🚀 **高可用**:99.999%可用性
@@ -719,14 +719,14 @@ impl SelfEvolvingProtocol {
- 升级需要硬分叉或软分叉
- 无法自适应网络变化
-**NRPC3.0**:
+**NAC Lens**:
- 🚀 **自动进化**:协议自己优化自己
- 🚀 **无需升级**:平滑演进
- 🚀 **自适应**:根据网络状态调整
### 3.3 性能对比
-| 指标 | JSON-RPC | GraphQL | gRPC | NRPC3.0 |
+| 指标 | JSON-RPC | GraphQL | gRPC | NAC Lens |
|------|----------|---------|------|---------|
| **延迟** | 150ms | 120ms | 50ms | **20ms** (预取) |
| **吞吐量** | 1,000 req/s | 2,000 req/s | 10,000 req/s | **50,000 req/s** |
@@ -737,7 +737,7 @@ impl SelfEvolvingProtocol {
### 3.4 创新程度评估
-| 维度 | 传统RPC | NRPC3.0 | 领先程度 |
+| 维度 | 传统RPC | NAC Lens | 领先程度 |
|------|---------|---------|----------|
| **架构** | 请求-响应 | 神经网络 | 🚀🚀🚀 **范式转换** |
| **安全** | TLS | 量子安全 | 🚀🚀🚀 **代际跨越** |
@@ -745,7 +745,7 @@ impl SelfEvolvingProtocol {
| **存储** | 传统 | 全息 | 🚀🚀🚀 **原创** |
| **进化** | 人工 | 自动 | 🚀🚀 **重大创新** |
-**结论**:NRPC3.0是**全球首个神经网络架构的区块链协议**,领先传统RPC **15年以上**。
+**结论**:NAC Lens是**全球首个神经网络架构的区块链协议**,领先传统RPC **15年以上**。
---
@@ -999,7 +999,7 @@ class CollaborativeAnalysisWorkspace {
NAC公链:
- CBPP: 创新触发期 (Innovation Trigger) → 🚀 领先5-10年
- NVM: 期望膨胀期 (Peak of Inflated Expectations) → 🚀 领先10年
-- NRPC3.0: 创新触发期 → 🚀 领先15年
+- NAC Lens: 创新触发期 → 🚀 领先15年
- 量子浏览器: 技术萌芽期 (Technology Trigger) → 🚀 领先20年
```
@@ -1010,7 +1010,7 @@ NAC公链:
| **比特币** | 数字黄金 | 价值存储 | ✅ XTZH更稳定 |
| **以太坊** | 世界计算机 | DeFi/NFT | ✅ NVM更高效 |
| **Solana** | 高性能链 | 高频交易 | ✅ CBPP更去中心化 |
-| **Polkadot** | 跨链枢纽 | 互操作性 | ✅ NRPC3.0更智能 |
+| **Polkadot** | 跨链枢纽 | 互操作性 | ✅ NAC Lens更智能 |
| **NAC** | **RWA证券化** | **资产上链** | 🚀 **唯一专注RWA** |
### 5.3 专利与知识产权
@@ -1024,7 +1024,7 @@ NAC公链:
- 🚀 **CBPP共识**:可申请专利
- 🚀 **GNACS编码**:可申请专利
- 🚀 **XTZH机制**:可申请专利
-- 🚀 **NRPC3.0**:可申请专利
+- 🚀 **NAC Lens**:可申请专利
- 🚀 **量子浏览器**:可申请专利
**建议**:立即启动专利申请流程,保护核心技术。
@@ -1034,7 +1034,7 @@ NAC公链:
**可发表论文**:
1. "CBPP: A Constitutional Approach to Blockchain Consensus" → **顶会 (OSDI/SOSP)**
2. "NVM: A Native Virtual Machine for Real-World Asset Tokenization" → **顶会 (PLDI/OOPSLA)**
-3. "NRPC3.0: Neural Network-Based Blockchain Protocol" → **顶会 (NSDI/SIGCOMM)**
+3. "NAC Lens: Neural Network-Based Blockchain Protocol" → **顶会 (NSDI/SIGCOMM)**
4. "Quantum Holographic Blockchain Explorer" → **顶会 (CHI/UIST)**
5. "GNACS: Global Non-Fungible Asset Coding System" → **顶刊 (TOCS/TODS)**
@@ -1049,7 +1049,7 @@ NAC公链:
### 6.1 技术风险
**1. 量子计算尚未成熟**
-- 风险:NRPC3.0的量子安全特性依赖量子计算硬件
+- 风险:NAC Lens的量子安全特性依赖量子计算硬件
- 缓解:提供经典加密降级方案
**2. 3D全息浏览器硬件要求高**
@@ -1057,7 +1057,7 @@ NAC公链:
- 缓解:提供2D降级版本
**3. 神经网络训练成本高**
-- 风险:NRPC3.0的神经网络需要大量训练
+- 风险:NAC Lens的神经网络需要大量训练
- 缓解:使用预训练模型 + 迁移学习
### 6.2 市场风险
@@ -1077,7 +1077,7 @@ NAC公链:
### 6.3 执行风险
**1. 开发复杂度高**
-- 风险:NRPC3.0和量子浏览器实现难度大
+- 风险:NAC Lens和量子浏览器实现难度大
- 缓解:分阶段实现,先MVP后完善
**2. 人才短缺**
@@ -1098,7 +1098,7 @@ NAC公链:
1. **CBPP共识**:从"竞争共识"到"宪政共识",领先 **5-10年**
2. **NVM虚拟机**:全球首个RWA原生VM,领先 **10年以上**
-3. **NRPC3.0**:神经网络架构协议,领先 **15年以上**
+3. **NAC Lens**:神经网络架构协议,领先 **15年以上**
4. **量子浏览器**:3D全息量子可视化,领先 **20年以上**
**综合评估**:NAC公链是**下一代区块链的技术范式**,在RWA资产证券化领域**无竞争对手**。
@@ -1112,7 +1112,7 @@ NAC公链:
4. ✅ 建立开发者社区
**中期(1-2年)**:
-1. ✅ 实现NRPC3.0的神经网络功能
+1. ✅ 实现NAC Lens的神经网络功能
2. ✅ 开发量子浏览器的Web版本
3. ✅ 发表顶会论文
4. ✅ 与RWA资产方合作试点
@@ -1170,7 +1170,7 @@ NAC公链:
### C. RPC协议对比
-| 指标 | JSON-RPC | GraphQL | gRPC | NRPC3.0 |
+| 指标 | JSON-RPC | GraphQL | gRPC | NAC Lens |
|------|----------|---------|------|---------|
| 延迟 | 150ms | 120ms | 50ms | **20ms** |
| 吞吐量 | 1K | 2K | 10K | **50K** |
diff --git a/nvm_v2/nvm-l1/nrpc-server.py b/nvm_v2/nvm-l1/nac-lens-server.py
similarity index 96%
rename from nvm_v2/nvm-l1/nrpc-server.py
rename to nvm_v2/nvm-l1/nac-lens-server.py
index 0674af8..bb612a9 100644
--- a/nvm_v2/nvm-l1/nrpc-server.py
+++ b/nvm_v2/nvm-l1/nac-lens-server.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
"""
-NAC NRPC3.0 服务器(Python实现)
+NAC NAC Lens 服务器(Python实现)
提供HTTP RPC和WebSocket接口
"""
@@ -11,7 +11,7 @@ from http.server import HTTPServer, BaseHTTPRequestHandler
from threading import Thread
import time
-class NRPCHandler(BaseHTTPRequestHandler):
+class NacLensHandler(BaseHTTPRequestHandler):
"""NRPC HTTP处理器"""
def do_POST(self):
@@ -150,7 +150,7 @@ async def websocket_handler(websocket, path):
else:
# 普通RPC请求
- handler = NRPCHandler(None, None, None)
+ handler = NacLensHandler(None, None, None)
result = handler.handle_rpc_request(request)
await websocket.send(json.dumps(result))
@@ -212,7 +212,7 @@ async def push_subscription_data(websocket, subscription_id, subscription_type):
def start_http_server():
"""启动HTTP服务器"""
- server = HTTPServer(('0.0.0.0', 18545), NRPCHandler)
+ server = HTTPServer(('0.0.0.0', 18545), NacLensHandler)
print("✅ NRPC HTTP服务器启动: http://0.0.0.0:18545")
server.serve_forever()
@@ -225,9 +225,9 @@ async def start_websocket_server():
def main():
"""主函数"""
print("========================================")
- print("NAC NRPC3.0 服务器")
+ print("NAC NAC Lens 服务器")
print("版本: 1.0.0")
- print("协议: NRPC3.0 (神经网络区块链协议)")
+ print("协议: NAC Lens (神经网络区块链协议)")
print("========================================")
print()
diff --git a/nvm_v2/nvm-l1/src/bin/nac-node.rs b/nvm_v2/nvm-l1/src/bin/nac-node.rs
index 9696841..b718fbe 100644
--- a/nvm_v2/nvm-l1/src/bin/nac-node.rs
+++ b/nvm_v2/nvm-l1/src/bin/nac-node.rs
@@ -36,7 +36,7 @@ fn main() {
// 主线程保持运行
println!("✅ NAC节点运行中...");
- println!(" NRPC3.0端点: https://rpc.newassetchain.io");
+ println!(" NAC Lens端点: https://rpc.newassetchain.io");
println!(" WebSocket: wss://ws.newassetchain.io");
println!(" Chain ID: 20260131");
println!();
diff --git a/nvm_v2/nvm-l1/src/cbpp/mod.rs b/nvm_v2/nvm-l1/src/cbpp/mod.rs
index 58fff20..a50b080 100644
--- a/nvm_v2/nvm-l1/src/cbpp/mod.rs
+++ b/nvm_v2/nvm-l1/src/cbpp/mod.rs
@@ -13,5 +13,5 @@ pub use fluid_block::*;
pub use open_production_network::*;
pub use gossip_protocol::*;
-pub mod nrpc;
-pub use nrpc::*;
+pub mod nac_lens;
+pub use crate::nac_lens::*;
diff --git a/nvm_v2/nvm-l1/src/cbpp/nrpc.rs b/nvm_v2/nvm-l1/src/cbpp/nac_lens.rs
similarity index 78%
rename from nvm_v2/nvm-l1/src/cbpp/nrpc.rs
rename to nvm_v2/nvm-l1/src/cbpp/nac_lens.rs
index 3820ea7..e65689d 100644
--- a/nvm_v2/nvm-l1/src/cbpp/nrpc.rs
+++ b/nvm_v2/nvm-l1/src/cbpp/nac_lens.rs
@@ -1,4 +1,4 @@
-// NRPC 3.0 - NewAssetChain RPC Protocol Version 3.0
+// NAC Lens - NewAssetChain RPC Protocol Version 3.0
// NAC原生RPC协议 - 使用二进制序列化,完全独立于以太坊JSON-RPC
//
// 设计理念:
@@ -10,8 +10,8 @@ use super::fluid_block::{FluidBlock, BlockCoordinates, Transaction};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
-/// NRPC 3.0 服务器
-pub struct NRPCServer {
+/// NAC Lens 服务器
+pub struct NacLensServer {
/// 区块链引用
blockchain: Vec,
@@ -23,10 +23,10 @@ pub struct NRPCServer {
version: String,
}
-/// NRPC请求
+/// NAC Lens请求
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "method", content = "params")]
-pub enum NRPCRequest {
+pub enum NacLensRequest {
/// 获取区块链信息
#[serde(rename = "nac_chainInfo")]
ChainInfo,
@@ -64,9 +64,9 @@ pub enum NRPCRequest {
NodeInfo,
}
-/// NRPC响应 - NAC原生格式(不使用JSON)
+/// NAC Lens响应 - NAC原生格式(不使用JSON)
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub enum NRPCResponse {
+pub enum NacLensResponse {
/// 链信息响应
ChainInfo(ChainInfoResponse),
@@ -92,7 +92,7 @@ pub enum NRPCResponse {
TxHash(TxHashResponse),
/// 错误响应
- Error(NRPCError),
+ Error(NacLensError),
}
/// 链信息响应
@@ -204,9 +204,9 @@ pub struct TxHashResponse {
pub tx_hash: Vec,
}
-/// NRPC错误
+/// NAC Lens错误
#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct NRPCError {
+pub struct NacLensError {
pub code: i32,
pub message: String,
}
@@ -221,8 +221,8 @@ pub struct TransactionRequest {
pub signature: Vec,
}
-impl NRPCServer {
- /// 创建新的NRPC服务器
+impl NacLensServer {
+ /// 创建新的NAC Lens服务器
pub fn new() -> Self {
Self {
blockchain: Vec::new(),
@@ -231,22 +231,22 @@ impl NRPCServer {
}
}
- /// 处理NRPC请求
- pub fn handle_request(&self, request: NRPCRequest) -> NRPCResponse {
+ /// 处理NAC Lens请求
+ pub fn handle_request(&self, request: NacLensRequest) -> NacLensResponse {
match request {
- NRPCRequest::ChainInfo => self.handle_chain_info(),
- NRPCRequest::GetBlock { coordinates } => self.handle_get_block(coordinates),
- NRPCRequest::LatestBlock => self.handle_latest_block(),
- NRPCRequest::GetTransaction { hash } => self.handle_get_transaction(hash),
- NRPCRequest::SendTransaction { transaction } => self.handle_send_transaction(transaction),
- NRPCRequest::GetReceipt { tx_hash } => self.handle_get_receipt(tx_hash),
- NRPCRequest::GetBalance { address } => self.handle_get_balance(address),
- NRPCRequest::GetProducers => self.handle_get_producers(),
- NRPCRequest::NodeInfo => self.handle_node_info(),
+ NacLensRequest::ChainInfo => self.handle_chain_info(),
+ NacLensRequest::GetBlock { coordinates } => self.handle_get_block(coordinates),
+ NacLensRequest::LatestBlock => self.handle_latest_block(),
+ NacLensRequest::GetTransaction { hash } => self.handle_get_transaction(hash),
+ NacLensRequest::SendTransaction { transaction } => self.handle_send_transaction(transaction),
+ NacLensRequest::GetReceipt { tx_hash } => self.handle_get_receipt(tx_hash),
+ NacLensRequest::GetBalance { address } => self.handle_get_balance(address),
+ NacLensRequest::GetProducers => self.handle_get_producers(),
+ NacLensRequest::NodeInfo => self.handle_node_info(),
}
}
- fn handle_chain_info(&self) -> NRPCResponse {
+ fn handle_chain_info(&self) -> NacLensResponse {
let info = ChainInfoResponse {
chain_id: 20260131,
network_name: "NewAssetChain Mainnet".to_string(),
@@ -256,10 +256,10 @@ impl NRPCServer {
total_blocks: self.blockchain.len(),
active_producers: 0,
};
- NRPCResponse::ChainInfo(info)
+ NacLensResponse::ChainInfo(info)
}
- fn handle_get_block(&self, coordinates: BlockCoordinates) -> NRPCResponse {
+ fn handle_get_block(&self, coordinates: BlockCoordinates) -> NacLensResponse {
// 查找匹配坐标的区块
if let Some(block) = self.blockchain.iter().find(|b| b.coordinates == coordinates) {
let response = BlockResponse {
@@ -279,16 +279,16 @@ impl NRPCServer {
weight: block.weight,
size: block.size as usize,
};
- NRPCResponse::Block(response)
+ NacLensResponse::Block(response)
} else {
- NRPCResponse::Error(NRPCError {
+ NacLensResponse::Error(NacLensError {
code: 404,
message: "Block not found".to_string(),
})
}
}
- fn handle_latest_block(&self) -> NRPCResponse {
+ fn handle_latest_block(&self) -> NacLensResponse {
if let Some(block) = self.blockchain.last() {
let response = BlockResponse {
coordinates: block.coordinates.clone(),
@@ -307,63 +307,63 @@ impl NRPCServer {
weight: block.weight,
size: block.size as usize,
};
- NRPCResponse::Block(response)
+ NacLensResponse::Block(response)
} else {
- NRPCResponse::Error(NRPCError {
+ NacLensResponse::Error(NacLensError {
code: 404,
message: "No blocks found".to_string(),
})
}
}
- fn handle_get_transaction(&self, _hash: String) -> NRPCResponse {
- NRPCResponse::Error(NRPCError {
+ fn handle_get_transaction(&self, _hash: String) -> NacLensResponse {
+ NacLensResponse::Error(NacLensError {
code: 501,
message: "Not implemented".to_string(),
})
}
- fn handle_send_transaction(&self, _transaction: TransactionRequest) -> NRPCResponse {
- NRPCResponse::TxHash(TxHashResponse {
+ fn handle_send_transaction(&self, _transaction: TransactionRequest) -> NacLensResponse {
+ NacLensResponse::TxHash(TxHashResponse {
tx_hash: vec![0u8; 32],
})
}
- fn handle_get_receipt(&self, _tx_hash: String) -> NRPCResponse {
- NRPCResponse::Error(NRPCError {
+ fn handle_get_receipt(&self, _tx_hash: String) -> NacLensResponse {
+ NacLensResponse::Error(NacLensError {
code: 501,
message: "Not implemented".to_string(),
})
}
- fn handle_get_balance(&self, address: String) -> NRPCResponse {
- NRPCResponse::Holdings(BalanceResponse {
+ fn handle_get_balance(&self, address: String) -> NacLensResponse {
+ NacLensResponse::Holdings(BalanceResponse {
address,
holdings: 0,
nonce: 0,
})
}
- fn handle_get_producers(&self) -> NRPCResponse {
- NRPCResponse::Producers(ProducersResponse {
+ fn handle_get_producers(&self) -> NacLensResponse {
+ NacLensResponse::Producers(ProducersResponse {
total_producers: 0,
active_producers: vec![],
})
}
- fn handle_node_info(&self) -> NRPCResponse {
+ fn handle_node_info(&self) -> NacLensResponse {
let info = NodeInfoResponse {
version: self.version.clone(),
- protocol_version: "NRPC/3.0".to_string(),
+ protocol_version: "NAC Lens".to_string(),
node_id: vec![0u8; 32],
is_producer: false,
peer_count: 0,
};
- NRPCResponse::NodeInfo(info)
+ NacLensResponse::NodeInfo(info)
}
}
-impl Default for NRPCServer {
+impl Default for NacLensServer {
fn default() -> Self {
Self::new()
}
@@ -374,18 +374,18 @@ mod tests {
use super::*;
#[test]
- fn test_nrpc_server_creation() {
- let server = NRPCServer::new();
+ fn test_nac_lens_server_creation() {
+ let server = NacLensServer::new();
assert_eq!(server.version, "3.0.0");
}
#[test]
fn test_chain_info_request() {
- let server = NRPCServer::new();
- let response = server.handle_request(NRPCRequest::ChainInfo);
+ let server = NacLensServer::new();
+ let response = server.handle_request(NacLensRequest::ChainInfo);
match response {
- NRPCResponse::ChainInfo(info) => {
+ NacLensResponse::ChainInfo(info) => {
assert_eq!(info.chain_id, 20260131);
assert_eq!(info.consensus, "CBPP (Constitutional Block Production Protocol)");
},
diff --git a/nvm_v2/nvm-l1/src/phase20_deployment/documentation.rs b/nvm_v2/nvm-l1/src/phase20_deployment/documentation.rs
index cc4721a..9e55eae 100644
--- a/nvm_v2/nvm-l1/src/phase20_deployment/documentation.rs
+++ b/nvm_v2/nvm-l1/src/phase20_deployment/documentation.rs
@@ -134,10 +134,10 @@ data_dir = "./data"
```bash
# 检查节点状态
-curl http://localhost:8545 -X POST -H "Content-Type: application/json" --data '{{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}}'
+curl http://localhost:8545 -X POST -H "Content-Type: application/json" --data '{{"jsonac_lens":"2.0","method":"eth_blockNumber","params":[],"id":1}}'
# 查看节点信息
-curl http://localhost:8545 -X POST -H "Content-Type: application/json" --data '{{"jsonrpc":"2.0","method":"net_version","params":[],"id":1}}'
+curl http://localhost:8545 -X POST -H "Content-Type: application/json" --data '{{"jsonac_lens":"2.0","method":"net_version","params":[],"id":1}}'
```
## 故障排查
@@ -206,7 +206,7 @@ logrotate -f /etc/logrotate.d/nac-node
**请求**:
```json
{{
- "jsonrpc": "2.0",
+ "jsonac_lens": "2.0",
"method": "eth_blockNumber",
"params": [],
"id": 1
@@ -216,7 +216,7 @@ logrotate -f /etc/logrotate.d/nac-node
**响应**:
```json
{{
- "jsonrpc": "2.0",
+ "jsonac_lens": "2.0",
"id": 1,
"result": "0x1234"
}}
@@ -229,7 +229,7 @@ logrotate -f /etc/logrotate.d/nac-node
**请求**:
```json
{{
- "jsonrpc": "2.0",
+ "jsonac_lens": "2.0",
"method": "eth_getBalance",
"params": ["0x1234...", "latest"],
"id": 1
@@ -239,7 +239,7 @@ logrotate -f /etc/logrotate.d/nac-node
**响应**:
```json
{{
- "jsonrpc": "2.0",
+ "jsonac_lens": "2.0",
"id": 1,
"result": "0xde0b6b3a7640000"
}}
@@ -254,7 +254,7 @@ logrotate -f /etc/logrotate.d/nac-node
**请求**:
```json
{{
- "jsonrpc": "2.0",
+ "jsonac_lens": "2.0",
"method": "nac_getConstitutionReceipt",
"params": ["0xabcd..."],
"id": 1
@@ -264,7 +264,7 @@ logrotate -f /etc/logrotate.d/nac-node
**响应**:
```json
{{
- "jsonrpc": "2.0",
+ "jsonac_lens": "2.0",
"id": 1,
"result": {{
"tx_hash": "0xabcd...",
@@ -282,7 +282,7 @@ logrotate -f /etc/logrotate.d/nac-node
**请求**:
```json
{{
- "jsonrpc": "2.0",
+ "jsonac_lens": "2.0",
"method": "nac_getXTZHBalance",
"params": ["0x1234..."],
"id": 1
@@ -292,7 +292,7 @@ logrotate -f /etc/logrotate.d/nac-node
**响应**:
```json
{{
- "jsonrpc": "2.0",
+ "jsonac_lens": "2.0",
"id": 1,
"result": {{
"holdings": "1000000000000000000",
@@ -312,7 +312,7 @@ logrotate -f /etc/logrotate.d/nac-node
const ws = new WebSocket('ws://localhost:8546');
ws.send(JSON.stringify({{
- "jsonrpc": "2.0",
+ "jsonac_lens": "2.0",
"method": "eth_subscribe",
"params": ["newHeads"],
"id": 1
diff --git a/nvm_v2/nvm-l1/todo.md b/nvm_v2/nvm-l1/todo.md
index b603142..22b7f5a 100644
--- a/nvm_v2/nvm-l1/todo.md
+++ b/nvm_v2/nvm-l1/todo.md
@@ -1,7 +1,7 @@
# NAC公链完整实现任务清单
## Phase 1: 修复RPC命名为NRPC并配置域名
-- [x] 修正节点程序中所有"RPC"为"NRPC3.0"
+- [x] 修正节点程序中所有"RPC"为"NAC Lens"
- [x] 配置Nginx反向代理
- [ ] 配置域名 rpc.newassetchain.io
- [ ] 配置域名 ws.newassetchain.io
diff --git a/system_status.sh b/system_status.sh
index f9adee5..8151451 100755
--- a/system_status.sh
+++ b/system_status.sh
@@ -10,13 +10,13 @@ module_count=$(find . -maxdepth 1 -type d -name "nac-*" -o -name "charter-*" -o
echo "总模块数: $module_count"
echo ""
-echo "2. NRPC 4.0状态"
+echo "2. NAC Lens状态"
echo "---"
-if [ -d "nac-nrpc4" ]; then
- echo "✅ nac-nrpc4 模块存在"
- ls -1 nac-nrpc4/src/*.rs 2>/dev/null | wc -l | xargs echo "源文件数:"
+if [ -d "nac-lens" ]; then
+ echo "✅ nac-lens 模块存在"
+ ls -1 nac-lens/src/*.rs 2>/dev/null | wc -l | xargs echo "源文件数:"
else
- echo "❌ nac-nrpc4 模块不存在"
+ echo "❌ nac-lens 模块不存在"
fi
echo ""
@@ -43,7 +43,7 @@ echo ""
echo "5. 待完善功能"
echo "---"
-echo "NRPC 4.0:"
+echo "NAC Lens:"
echo " - L4 宪法层(全息编码、分片存储)"
echo " - L5 价值层(XIC/XTZH跨文明交换)"
echo " - L6 应用层(AA-PE、FTAN、UCA)"
diff --git a/system_test_complete.sh b/system_test_complete.sh
index bb4521f..66e5f1e 100755
--- a/system_test_complete.sh
+++ b/system_test_complete.sh
@@ -5,13 +5,13 @@ echo "测试时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "========================================="
echo ""
-# 测试1: NRPC 4.0编译
-echo "[1/5] 测试NRPC 4.0编译..."
-cd nac-nrpc4
+# 测试1: NAC Lens编译
+echo "[1/5] 测试NAC Lens编译..."
+cd nac-lens
if cargo build --release 2>&1 | grep -q "Finished"; then
- echo "✅ NRPC 4.0编译成功"
+ echo "✅ NAC Lens编译成功"
else
- echo "❌ NRPC 4.0编译失败"
+ echo "❌ NAC Lens编译失败"
fi
cd ..
echo ""
@@ -53,7 +53,7 @@ echo ""
echo "[5/5] 检查文档..."
doc_count=0
[ -f "docs/NAC公链多维度评估报告.md" ] && ((doc_count++)) && echo "✅ NAC公链多维度评估报告"
-[ -f "docs/NRPC4.0_核心要点.md" ] && ((doc_count++)) && echo "✅ NRPC4.0核心要点"
+[ -f "docs/NAC Lens_核心要点.md" ] && ((doc_count++)) && echo "✅ NAC Lens核心要点"
[ -f "docs/VISION_Wallet_核心要点.md" ] && ((doc_count++)) && echo "✅ VISION钱包核心要点"
[ -f "DELIVERY_REPORT.md" ] && ((doc_count++)) && echo "✅ 系统交付报告"
echo "文档总数: $doc_count"
diff --git a/test_system.sh b/test_system.sh
index d26fb82..93a70eb 100755
--- a/test_system.sh
+++ b/test_system.sh
@@ -29,8 +29,8 @@ echo "[3/3] 检查文档..."
if [ -f "docs/NAC公链多维度评估报告.md" ]; then
echo "✅ NAC公链多维度评估报告存在"
fi
-if [ -f "docs/NRPC4.0_核心要点.md" ]; then
- echo "✅ NRPC4.0核心要点文档存在"
+if [ -f "docs/NAC Lens_核心要点.md" ]; then
+ echo "✅ NAC Lens核心要点文档存在"
fi
if [ -f "docs/VISION_Wallet_核心要点.md" ]; then
echo "✅ VISION钱包核心要点文档存在"
diff --git a/开发状态追踪_每日更新.md b/开发状态追踪_每日更新.md
index 52e90ff..c318615 100644
--- a/开发状态追踪_每日更新.md
+++ b/开发状态追踪_每日更新.md
@@ -56,7 +56,7 @@
- **状态**: 已完成
### 4. RPC协议
-- ✅ **nac-nrpc** (2个Rust文件) - 基础版本
+- ✅ **nac-lens** (2个Rust文件) - 基础版本
- **状态**: 已完成
- ✅ **nac-lens** (9个Rust文件) - 4.0版本
diff --git a/开发进度报告_20260218.md b/开发进度报告_20260218.md
index a22822e..f129bb0 100644
--- a/开发进度报告_20260218.md
+++ b/开发进度报告_20260218.md
@@ -12,7 +12,7 @@ NAC是一条专为实物资产(RWA)设计的原生公链,不是任何现
- **自主开发**:基于ACC-20协议自主开发
- **AI驱动**:内置AI合规、AI审批、AI估值系统
-- **专用架构**:NVM虚拟机、NRPC3.0、CBPP共识、CSNP网络
+- **专用架构**:NVM虚拟机、NAC Lens、CBPP共识、CSNP网络
- **开发语言**:Charter(智能合约)、Rust(核心模块)、Go(部分模块)
---