NAC_Blockchain/docs/issues/ISSUE-005-Complete-API-Serv...

8.8 KiB
Raw Blame History

工单 #005完整API服务器实现与全系统真实数据切换

创建日期: 2026-02-20
优先级: 🔴 最高
状态: 📋 进行中
负责人: NAC技术团队


问题描述

当前NAC主网虽然已上线但存在严重问题

核心问题

  1. API服务器不完整

    • 现有API服务器只有 /health 端点
    • 缺少 /blocks, /transactions, /addresses, /stats 等核心端点
    • 无法提供真实的区块链数据
  2. 所有前端使用模拟数据

    • 量子浏览器显示模拟数据区块12,345交易1,234,567
    • 监控页面:部分使用模拟数据
    • 钱包:可能使用模拟数据
    • SDK未与真实API对接
  3. 主网已上线但无法查询

    • CBPP共识节点正常运行区块高度20,000+
    • 但外部无法查询区块、交易等数据
    • 用户无法验证链上数据

解决方案

阶段1创建完整的NAC API服务器

技术选型: Go语言 + Gin框架

必须实现的端点

1. 基础信息端点

  • GET /health - 健康检查(已有)
  • GET /info - 链信息chain_id, network, version
  • GET /stats - 统计信息(总区块数、总交易数、活跃地址数)

2. 区块端点

  • GET /blocks - 区块列表(分页)
  • GET /blocks/:height - 根据高度查询区块
  • GET /blocks/:hash - 根据哈希查询区块
  • GET /blocks/latest - 最新区块
  • GET /blocks/:height/transactions - 区块内的交易列表

3. 交易端点

  • GET /transactions - 交易列表(分页)
  • GET /transactions/:hash - 根据哈希查询交易
  • GET /transactions/pending - 待处理交易
  • POST /transactions - 提交交易

4. 地址端点

  • GET /addresses/:address - 地址信息
  • GET /addresses/:address/balance - 地址余额
  • GET /addresses/:address/transactions - 地址交易历史
  • GET /addresses/:address/assets - 地址资产列表

5. 合约端点

  • GET /contracts/:address - 合约信息
  • POST /contracts/call - 调用合约
  • GET /contracts/:address/events - 合约事件

6. 资产端点ACC-20

  • GET /assets - 资产列表
  • GET /assets/:id - 资产详情
  • GET /assets/:id/holders - 资产持有者

7. 宪法端点CNNL

  • GET /constitution - 当前宪法
  • GET /constitution/history - 宪法历史
  • GET /constitution/proposals - 宪法提案

8. 搜索端点

  • GET /search?q=<query> - 全局搜索(区块/交易/地址)

数据来源

  • 直接连接CBPP节点端口9545
  • 读取NVM节点数据端口9549
  • 可选建立索引数据库PostgreSQL

阶段2调整SDK

需要更新的SDK

  1. JavaScript SDK (nac-sdk-js)

    • 更新API端点
    • 添加新的方法
    • 更新文档
  2. Go SDK (nac-sdk-go)

    • 更新API客户端
    • 添加新的接口
  3. Python SDK (nac-sdk-python)

    • 更新API封装
    • 添加新的类和方法

SDK必须支持

  • NAC Lens协议
  • 所有API端点
  • 错误处理
  • 重试机制
  • WebSocket支持实时数据

阶段3修改量子浏览器

当前问题

// 硬编码的模拟数据
totalBlocks: 12345
totalTransactions: 1234567
activeAddresses: 5678
rpcUrl: "/api/"  // 错误的相对路径
consensus: "DAG"  // 错误应该是CBPP

修改内容

  1. 移除所有模拟数据
  2. 使用真实APIhttps://api.newassetchain.io
  3. 实时获取区块、交易、地址数据
  4. 修正技术信息CBPP共识、NAC Lens协议
  5. 添加实时更新WebSocket

必须实现的功能

  • 首页:实时统计数据
  • 区块列表:真实区块数据
  • 区块详情:完整区块信息
  • 交易列表:真实交易数据
  • 交易详情:完整交易信息
  • 地址查询:地址余额和交易历史
  • 搜索功能:全局搜索

阶段4修改监控页面

当前问题

  • 区块高度需要手动刷新
  • 缺少详细的模块状态
  • 缺少实时图表

修改内容

  1. 使用真实API获取数据
  2. 实时更新WebSocket
  3. 添加图表区块生产速度、交易量、TPS
  4. 添加告警功能
  5. 添加历史数据查看

阶段5修改钱包

检查项

  1. 钱包是否存在?
  2. 钱包使用什么数据源?
  3. 是否使用模拟数据?

修改内容(如果需要):

  1. 连接到真实API
  2. 使用真实余额
  3. 真实交易提交
  4. 交易历史查询

阶段6其他系统检查

需要检查的系统

  1. RWA资产管理系统
  2. 宪法治理系统
  3. 开发者工具
  4. 文档网站

技术架构

新API服务器架构

┌─────────────────────────────────────┐
│   NAC API Server (Go + Gin)        │
│   端口: 9551 (新端口)                │
│   协议: NAC Lens                     │
└─────────────────────────────────────┘
           │
           ├─► CBPP节点 (端口9545)
           ├─► NVM节点 (端口9549)
           ├─► PostgreSQL (索引数据库)
           └─► Redis (缓存)

数据流

CBPP节点 ──► API服务器 ──► 前端系统
   │                        │
   │                        ├─► 量子浏览器
   │                        ├─► 监控页面
   │                        ├─► 钱包
   │                        └─► SDK
   │
   └─► 索引器 ──► PostgreSQL

实施计划

Week 1: API服务器开发

  • Day 1-2: 基础框架和核心端点
  • Day 3-4: 区块和交易端点
  • Day 5: 地址和合约端点
  • Day 6: 测试和优化
  • Day 7: 部署和文档

Week 2: SDK更新

  • Day 1-2: JavaScript SDK
  • Day 3: Go SDK
  • Day 4: Python SDK
  • Day 5-6: 测试和文档
  • Day 7: 发布新版本

Week 3: 前端系统更新

  • Day 1-3: 量子浏览器
  • Day 4-5: 监控页面
  • Day 6: 钱包(如果需要)
  • Day 7: 测试和部署

Week 4: 测试和优化

  • Day 1-3: 全系统集成测试
  • Day 4-5: 性能优化
  • Day 6: 文档更新
  • Day 7: 最终验收

验收标准

API服务器

  • 所有端点正常工作
  • 返回真实数据(非模拟)
  • 响应时间 < 100ms (95th percentile)
  • 支持每秒1000+请求
  • 完整的API文档

SDK

  • 所有方法正常工作
  • 完整的类型定义
  • 完整的文档和示例
  • 单元测试覆盖率 > 80%

量子浏览器

  • 无模拟数据
  • 所有页面显示真实数据
  • 实时更新正常
  • 搜索功能正常
  • 响应速度快

监控页面

  • 实时数据更新
  • 图表显示正常
  • 告警功能正常
  • 历史数据查看正常

钱包

  • 余额显示正确
  • 交易提交成功
  • 交易历史正确
  • 资产管理正常

风险与应对

风险1CBPP节点数据格式未知

影响: 高
概率: 中
应对:

  • 先分析CBPP节点日志和输出
  • 如果无法直接读取,考虑建立索引器
  • 最坏情况修改CBPP节点代码添加API

风险2开发时间不足

影响: 高
概率: 中
应对:

  • 优先实现核心功能
  • 分阶段发布
  • 必要时增加人力

风险3性能问题

影响: 中
概率: 低
应对:

  • 使用缓存Redis
  • 建立索引数据库
  • 优化查询

风险4兼容性问题

影响: 中
概率: 低
应对:

  • 保持向后兼容
  • 提供迁移指南
  • 充分测试

依赖关系

工单#005 (本工单)
  ├─► 依赖: 工单#001 (端口标准化) ✅
  ├─► 依赖: 工单#002 (模块验证) ✅
  └─► 阻塞: 工单#006 (前端优化)

相关文档

  • NAC端口标准文档
  • NAC Lens协议规范
  • CBPP共识协议文档
  • ACC-20资产标准
  • Charter智能合约语言规范
  • CNNL宪法语言规范

进度追踪

当前状态: 📋 进行中

已完成:

  • 问题分析
  • 解决方案设计
  • 工单创建

进行中:

  • API服务器开发
  • SDK更新
  • 前端系统更新

待办:

  • 测试
  • 部署
  • 文档
  • 验收

备注

重要提醒:

  1. 这是NAC主网的核心基础设施必须100%完成
  2. 不能使用任何模拟数据,必须是真实数据
  3. 不能使用快速或简化方式,必须完整实现
  4. 所有修改必须经过充分测试
  5. 必须保持向后兼容
  6. 必须有完整的文档

后续工单:

  • 工单#006: 前端系统优化和用户体验提升
  • 工单#007: Charter编译器完整功能实现
  • 工单#008: CNNL编译器完整功能实现
  • 工单#009: 钱包功能完善
  • 工单#010: RWA资产管理系统

创建人: NAC技术团队
创建时间: 2026-02-20
最后更新: 2026-02-20
预计完成时间: 2026-03-20 (4周)