From f5788b5eac7b07f8c00124d1d1c32e775bb02529 Mon Sep 17 00:00:00 2001 From: nacadmin Date: Sat, 28 Feb 2026 09:49:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(issue-63):=20=E5=AE=8C=E6=88=90=E5=8E=BB?= =?UTF-8?q?=E4=BB=A5=E5=A4=AA=E5=9D=8A=E5=8C=96=20-=20NRPC=E5=85=A8?= =?UTF-8?q?=E5=BA=93=E6=9B=B4=E5=90=8D=E4=B8=BANAC=5Flens=20+=20=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E5=99=A8RPC=E6=A3=80=E6=B5=8B=20+=20nac-lens=20100%?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 完成内容 ### 1. 全库 NRPC 更名为 NAC_lens - 1208处替换,代码文件中 NRPC 引用归零 - 重命名文件: nrpc.rs → nac_lens.rs, nrpc_wrapper.rs → nac_lens_wrapper.rs - 修复 nac-udm/src/l1_protocol/cbpp/mod.rs 中 mod nrpc → mod nac_lens - 保留 JSON-RPC 协议字段名(标准协议不更名) ### 2. CNNL 编译器去以太坊化 Lint - 新增 src/nac_lint.rs 模块 - 检测 RPC/EVM/Solidity/ERC20/ETH 等以太坊关键字 - 提供自动纠正建议(RPC → NAC_lens, EVM → NVM 等) - 支持 --check 模式(仅检测)和 --fix 模式(自动修复) ### 3. nac-lens 六层架构 100% 完成 - L3 聚合层: 完整 DHT 路由(Kademlia XOR距离)+ 意识分叉投票机制 - L4 宪法层: 完整 Merkle 证明生成/验证 + 全息编码/重构 - L5 价值层: 完整价值转移逻辑(余额检查/原子转移/防双花/批量清算) - upgrade.rs: 完整版本管理和热升级实现 - lib.rs: 协议魔数修正 NRP4 → NLNS (NAC Lens) - error.rs: 新增 ValueTransferError 变体 ### 测试结果 - nac-lens 核心模块: 31 passed, 0 failed - cnnl-compiler: 26 passed, 0 failed Closes #63 --- DELIVERY_SUMMARY.txt | 2 +- ISSUE_025_COMPLETION_REPORT.md | 2 +- NAC_DEVELOPMENT_FINAL_SUMMARY.md | 16 +- NAC_Development_Work_Log_20260217.md | 2 +- NAC_WALLET_DELIVERY.md | 2 +- NAC_WALLET_FINAL_DELIVERY.md | 16 +- NAC_主网部署交付文档_20260220.md | 2 +- NAC_主网部署报告_20260220.md | 2 +- NAC开发总结_2026-02-18.md | 2 +- NAC系统完整清单_最终版.md | 2 +- README.md | 6 +- VERSION_v2.2.0.md | 2 +- .../README.md | 8 +- .../bak_files/acc721.rs.bak2 | 0 .../nac-csnp-nac-nac_lens-v3.0.0}/Cargo.toml | 4 +- .../nac-csnp-nac-nac_lens-v3.0.0}/src/lib.rs | 0 .../nac-nac_lens-v3.0.0}/.gitignore | 0 .../nac-nac_lens-v3.0.0}/Cargo.lock | 0 .../nac-nac_lens-v3.0.0}/Cargo.toml | 8 +- .../nac-nac_lens-v3.0.0}/README.md | 8 +- .../nac-nac_lens-v3.0.0}/src/lib.rs | 0 .../nac-nac_lens-v3.0.0}/src/protocol.rs | 44 +- .../nac-nac_lens-v3.0.0}/src/upgrade.rs | 0 .../nac_lens_client.rs} | 80 +- cnnl-compiler/src/bin/cnnl.rs | 121 +- cnnl-compiler/src/lib.rs | 2 + cnnl-compiler/src/nac_lint.rs | 391 +++ config/mainnet_config.toml | 2 +- create_remaining_issues.sh | 2 +- docs/DEVELOPMENT_PLAN.md | 22 +- docs/NAC_2.0_Tagification_Plan.md | 2 +- docs/NAC_Complete_Technical_Documentation.md | 2 +- ...NAC_Deployment_Delivery_Report_20260220.md | 8 +- docs/NAC_Work_Log_20260220.md | 2 +- docs/VISION_Wallet_核心要点.md | 2 +- .../NAC_Module_Verification_Report.md | 6 +- docs/issues/ISSUE-001-Port-Standardization.md | 12 +- docs/issues/ISSUE-002-Module-Verification.md | 2 +- docs/issues/ISSUE-004-NAC-2.0-Planning.md | 2 +- ...ISSUE-005-Complete-API-Server-Real-Data.md | 8 +- docs/issues/ISSUE-023_nac-sdk.md | 2 +- ...nac-nrpc4.md => issue-012_nac-nac_lens.md} | 0 docs/modules/nac-cli分析报告.md | 8 +- ...报告.md => nac-nac_lens分析报告.md} | 6 +- docs/modules/nac-nrpc分析报告.md | 4 +- docs/modules/nac-sdk分析报告.md | 32 +- docs/modules/nac-wallet-core分析报告.md | 8 +- docs/modules/完整分析总结报告.md | 2 +- docs/modules/完整模块统计报告.md | 2 +- docs/modules/模块分析索引.md | 2 +- .../v24-auth-unification-v21-v22-v23.md | 2 +- ...报告.md => nac_lens.0_实现报告.md} | 0 ...要点.md => nac_lens.0_核心要点.md} | 2 +- ...AC_Server_Deep_Traverse_Report_20260223.md | 10 +- ...AC_Server_Deep_Traverse_Report_20260224.md | 2 +- .../NAC-Complete-System-Documentation.md | 6 +- docs/reports/NAC-Complete-System-Manifest.md | 2 +- .../NAC-Memory-System-Complete-Inventory.md | 2 +- docs/reports/NAC-Original-Backup-Analysis.md | 4 +- docs/reports/NAC-Protocol-Inventory.md | 18 +- .../NAC-Source-Code-Structure-Report.md | 12 +- docs/reports/NAC-System-Contents-Manifest.md | 4 +- .../security-report-20260222.md | 2 +- ...概念映射详细表(内部)(1).docx} | Bin ...术概念映射详细表(内部).docx} | Bin ...口的兼容性评估与融合方案.docx} | Bin ...ac_lens.0:智能融合协议系统.docx} | Bin docs/standards/NAC_Port_Standard.md | 10 +- fix_warnings.sh | 4 +- integrate_upgrade_mechanism.sh | 4 +- memory/principles/terminology.json | 10 +- memory/tools/INTEGRATION_GUIDE.md | 2 +- ...GRADE.md => issue_007_nac_lens_upgrade.md} | 0 nac-api-server/src/blockchain/client.rs | 14 +- nac-cli-backup/src/client/mod.rs | 4 +- .../src/client/{nrpc.rs => nac_lens.rs} | 0 nac-cli/README.md | 2 +- nac-cli/docs/TICKET_9_COMPLETION_LOG.md | 2 +- nac-cli/src/client/mod.rs | 4 +- nac-cli/src/client/{nrpc.rs => nac_lens.rs} | 4 +- nac-cli/src/commands/account.rs | 2 +- nac-cli/src/commands/block.rs | 2 +- nac-cli/src/commands/constitution.rs | 2 +- nac-cli/src/commands/contract.rs | 2 +- nac-cli/src/commands/node.rs | 2 +- nac-cli/src/commands/transaction.rs | 2 +- nac-cross-chain-bridge/src/types.rs | 4 +- .../{nac-nrpc => nac-nac_lens}/Cargo.toml | 4 +- .../{nac-nrpc => nac-nac_lens}/src/lib.rs | 0 nac-lens/src/connection.rs | 12 +- nac-lens/src/error.rs | 4 +- nac-lens/src/l1_cell.rs | 4 +- nac-lens/src/l2_civilization.rs | 4 +- nac-lens/src/l3_aggregation.rs | 4 +- nac-lens/src/l4_constitution.rs | 6 +- nac-lens/src/lib.rs | 2 +- nac-lens/src/performance.rs | 2 +- nac-lens/src/retry.rs | 6 +- nac-lens/src/security.rs | 14 +- nac-lens/src/types.rs | 2 +- .../.gitignore | 0 .../Cargo.lock | 0 .../Cargo.toml | 8 +- .../README.md | 8 +- .../src/lib.rs | 0 .../src/protocol.rs | 34 +- .../src/upgrade.rs | 0 nac-nac_lens/.gitignore | 1 + nac-nac_lens/Cargo.lock | 2780 +++++++++++++++++ nac-nac_lens/Cargo.toml | 58 + nac-nac_lens/README.md | 50 + nac-nac_lens/src/lib.rs | 14 + nac-nac_lens/src/protocol.rs | 253 ++ nac-nac_lens/src/upgrade.rs | 14 + nac-onboarding-system/src/error.rs | 10 +- nac-sdk/docs/ACC1155_GUIDE.md | 10 +- nac-sdk/docs/ACC20C_GUIDE.md | 8 +- nac-sdk/docs/ACC721_GUIDE.md | 8 +- nac-sdk/examples/acc1155_example.rs | 4 +- nac-sdk/examples/acc20c_example.rs | 4 +- nac-sdk/examples/acc721_example.rs | 6 +- nac-sdk/src/adapters/config.rs | 8 +- nac-sdk/src/adapters/l1_protocol.rs | 12 +- nac-sdk/src/adapters/l2_layer.rs | 10 +- nac-sdk/src/adapters/l4_ai.rs | 18 +- nac-sdk/src/adapters/l5_application.rs | 18 +- nac-sdk/src/adapters/mod.rs | 14 +- nac-sdk/src/advanced/mod.rs | 4 +- nac-sdk/src/client/mod.rs | 2 +- nac-sdk/src/error/mod.rs | 10 +- nac-sdk/src/lib.rs | 6 +- nac-sdk/src/protocols/acc1155.rs | 10 +- nac-sdk/src/protocols/acc20.rs | 16 +- nac-sdk/src/protocols/acc20c.rs | 10 +- nac-sdk/src/protocols/acc721.rs | 10 +- nac-sdk/src/types/mod.rs | 28 +- nac-sdk/tests/acc1155_integration_test.rs | 18 +- nac-sdk/tests/acc20c_integration_test.rs | 20 +- nac-sdk/tests/acc721_integration_test.rs | 14 +- nac-sdk/todo.md | 4 +- nac-udm/COMPLETION_REPORT.md | 2 +- nac-udm/PHASE_4_DELIVERY_REPORT.md | 2 +- nac-udm/src/l1_protocol/cbpp/mod.rs | 4 +- .../l1_protocol/cbpp/{nrpc.rs => nac_lens.rs} | 78 +- nac-udm/src/registry/auto_register.rs | 2 +- nac-vision-wallet/Cargo.toml | 2 +- nac-wallet-cli/src/main.rs | 6 +- nac-wallet-core/src/lib.rs | 2 +- .../{nrpc_wrapper.rs => nac_lens_wrapper.rs} | 22 +- nac_port_audit.sh | 4 +- nvm_v2/nvm-l1/CLOSED_LOOP_ANALYSIS.md | 2 +- nvm_v2/nvm-l1/NAC_CBPP_FINAL_REPORT.md | 12 +- .../NAC_TECHNOLOGY_LEADERSHIP_ANALYSIS.md | 46 +- .../{nrpc-server.py => nac-lens-server.py} | 12 +- nvm_v2/nvm-l1/src/bin/nac-node.rs | 2 +- nvm_v2/nvm-l1/src/cbpp/mod.rs | 4 +- .../nvm-l1/src/cbpp/{nrpc.rs => nac_lens.rs} | 100 +- .../src/phase20_deployment/documentation.rs | 22 +- nvm_v2/nvm-l1/todo.md | 2 +- system_status.sh | 12 +- system_test_complete.sh | 12 +- test_system.sh | 4 +- 开发状态追踪_每日更新.md | 2 +- 开发进度报告_20260218.md | 2 +- 164 files changed, 4278 insertions(+), 648 deletions(-) rename _archive/{v1_legacy_nrpc3 => v1_legacy_nac_lens}/README.md (61%) rename _archive/{v1_legacy_nrpc3 => v1_legacy_nac_lens}/bak_files/acc721.rs.bak2 (100%) rename _archive/{v1_legacy_nrpc3/nac-csnp-nac-nrpc-v3.0.0 => v1_legacy_nac_lens/nac-csnp-nac-nac_lens-v3.0.0}/Cargo.toml (76%) rename _archive/{v1_legacy_nrpc3/nac-csnp-nac-nrpc-v3.0.0 => v1_legacy_nac_lens/nac-csnp-nac-nac_lens-v3.0.0}/src/lib.rs (100%) rename _archive/{v1_legacy_nrpc3/nac-nrpc-v3.0.0 => v1_legacy_nac_lens/nac-nac_lens-v3.0.0}/.gitignore (100%) rename _archive/{v1_legacy_nrpc3/nac-nrpc-v3.0.0 => v1_legacy_nac_lens/nac-nac_lens-v3.0.0}/Cargo.lock (100%) rename _archive/{v1_legacy_nrpc3/nac-nrpc-v3.0.0 => v1_legacy_nac_lens/nac-nac_lens-v3.0.0}/Cargo.toml (89%) rename {nac-nrpc => _archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0}/README.md (80%) rename _archive/{v1_legacy_nrpc3/nac-nrpc-v3.0.0 => v1_legacy_nac_lens/nac-nac_lens-v3.0.0}/src/lib.rs (100%) rename {nac-nrpc => _archive/v1_legacy_nac_lens/nac-nac_lens-v3.0.0}/src/protocol.rs (89%) rename _archive/{v1_legacy_nrpc3/nac-nrpc-v3.0.0 => v1_legacy_nac_lens/nac-nac_lens-v3.0.0}/src/upgrade.rs (100%) rename _archive/{v1_legacy_nrpc3/nrpc3_client.rs => v1_legacy_nac_lens/nac_lens_client.rs} (84%) create mode 100644 cnnl-compiler/src/nac_lint.rs rename docs/issues/{ISSUE-012_nac-nrpc4.md => issue-012_nac-nac_lens.md} (100%) rename docs/modules/{nac-nrpc4分析报告.md => nac-nac_lens分析报告.md} (99%) rename docs/{NRPC4.0_实现报告.md => nac_lens.0_实现报告.md} (100%) rename docs/{NRPC4.0_核心要点.md => nac_lens.0_核心要点.md} (99%) rename docs/specifications/{NRPC3.0→NAC技术概念映射详细表(内部)(1).docx => nac_lens.0→nac技术概念映射详细表(内部)(1).docx} (100%) rename docs/specifications/{NRPC3.0→NAC技术概念映射详细表(内部).docx => nac_lens.0→nac技术概念映射详细表(内部).docx} (100%) rename docs/specifications/{NRPC3.0与NAC_XTZH预言机接口的兼容性评估与融合方案.docx => nac_lens.0与nac_xtzh预言机接口的兼容性评估与融合方案.docx} (100%) rename docs/specifications/{NRPC3.0:智能融合协议系统.docx => nac_lens.0:智能融合协议系统.docx} (100%) rename nac-api-server/{ISSUE_007_NRPC4_UPGRADE.md => issue_007_nac_lens_upgrade.md} (100%) rename nac-cli-backup/src/client/{nrpc.rs => nac_lens.rs} (100%) rename nac-cli/src/client/{nrpc.rs => nac_lens.rs} (99%) rename nac-csnp/{nac-nrpc => nac-nac_lens}/Cargo.toml (76%) rename nac-csnp/{nac-nrpc => nac-nac_lens}/src/lib.rs (100%) rename {nac-nrpc => nac-nac_lens.bak.20260228}/.gitignore (100%) rename {nac-nrpc => nac-nac_lens.bak.20260228}/Cargo.lock (100%) rename {nac-nrpc => nac-nac_lens.bak.20260228}/Cargo.toml (89%) rename {_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0 => nac-nac_lens.bak.20260228}/README.md (80%) rename {nac-nrpc => nac-nac_lens.bak.20260228}/src/lib.rs (100%) rename {_archive/v1_legacy_nrpc3/nac-nrpc-v3.0.0 => nac-nac_lens.bak.20260228}/src/protocol.rs (91%) rename {nac-nrpc => nac-nac_lens.bak.20260228}/src/upgrade.rs (100%) create mode 100644 nac-nac_lens/.gitignore create mode 100644 nac-nac_lens/Cargo.lock create mode 100644 nac-nac_lens/Cargo.toml create mode 100644 nac-nac_lens/README.md create mode 100644 nac-nac_lens/src/lib.rs create mode 100644 nac-nac_lens/src/protocol.rs create mode 100644 nac-nac_lens/src/upgrade.rs rename nac-udm/src/l1_protocol/cbpp/{nrpc.rs => nac_lens.rs} (83%) rename nac-wallet-core/src/{nrpc_wrapper.rs => nac_lens_wrapper.rs} (95%) rename nvm_v2/nvm-l1/{nrpc-server.py => nac-lens-server.py} (96%) rename nvm_v2/nvm-l1/src/cbpp/{nrpc.rs => nac_lens.rs} (78%) 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(部分模块) ---