NAC_Blockchain/nac-rwa-exchange/docs/ARCHITECTURE.md

17 KiB
Raw Blame History

NAC RWA资产交易所架构设计

1. 系统概述

NAC RWA资产交易所是一个专为真实世界资产Real World Assets设计的去中心化交易平台支持RWA资产的上架、交易、撮合、结算等全流程功能。系统采用NAC公链原生技术栈确保合规性、安全性和高性能。

2. 核心架构

2.1 系统分层

┌─────────────────────────────────────────────────────────────┐
│                      前端界面层 (Frontend)                     │
│  - 交易界面  - 行情展示  - 资产管理  - 用户中心                │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                      API服务层 (API Layer)                    │
│  - REST API  - WebSocket  - NRPC4.0接口                      │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                    业务逻辑层 (Business Logic)                │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │  交易引擎     │  │  合规引擎     │  │  资产管理     │      │
│  │  - 订单簿     │  │  - KYC验证    │  │  - 资产上架   │      │
│  │  - 撮合引擎   │  │  - 限额控制   │  │  - 资产查询   │      │
│  │  - 清算结算   │  │  - 合规报告   │  │  - 资产转移   │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                    数据存储层 (Data Layer)                    │
│  - 订单数据库  - 用户数据库  - 资产数据库  - 交易记录         │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                   区块链层 (Blockchain Layer)                 │
│  - NVM虚拟机  - CBPP共识  - Charter智能合约  - CSNP网络      │
└─────────────────────────────────────────────────────────────┘

2.2 核心模块

2.2.1 交易引擎模块 (Trading Engine)

订单簿模型 (Order Book)

  • 买单队列:按价格从高到低排序
  • 卖单队列:按价格从低到高排序
  • 时间优先:同价格按时间先后排序
  • 支持限价单、市价单、止损单

撮合引擎 (Matching Engine)

  • 价格优先原则
  • 时间优先原则
  • 实时撮合算法
  • 部分成交支持

清算结算机制 (Settlement)

  • T+0实时结算
  • 资产锁定机制
  • 交割确认流程
  • 失败回滚机制

2.2.2 合规引擎模块 (Compliance Engine)

KYC验证集成

  • 身份认证接口
  • 实名验证流程
  • 风险评级系统
  • 黑名单管理

交易限额控制

  • 单笔交易限额
  • 日累计限额
  • 月累计限额
  • 动态限额调整

合规报告生成

  • 交易记录报告
  • 异常交易报告
  • 监管数据导出
  • 审计日志

监管接口

  • 监管数据上报
  • 实时监控接口
  • 紧急冻结接口
  • 数据查询接口

2.2.3 资产管理模块 (Asset Management)

资产上架

  • 资产信息登记
  • 资产审核流程
  • 资产估值评估
  • 上架审批流程

资产查询

  • 资产列表查询
  • 资产详情查询
  • 资产历史查询
  • 资产持有查询

资产转移

  • 链上资产转移
  • 转移确认机制
  • 转移记录追踪
  • 失败重试机制

3. 数据模型

3.1 订单模型 (Order)

pub struct Order {
    pub id: OrderId,                    // 订单ID (UUID)
    pub user_address: Address,          // 用户地址 (32字节)
    pub asset_id: AssetId,              // 资产ID
    pub order_type: OrderType,          // 订单类型 (买单/卖单)
    pub price_type: PriceType,          // 价格类型 (限价/市价)
    pub price: u64,                     // 价格 (单位: 最小精度)
    pub quantity: u64,                  // 数量
    pub filled_quantity: u64,           // 已成交数量
    pub status: OrderStatus,            // 订单状态
    pub created_at: i64,                // 创建时间
    pub updated_at: i64,                // 更新时间
    pub signature: Signature,           // 签名 (96字节)
}

pub enum OrderType {
    Buy,    // 买单
    Sell,   // 卖单
}

pub enum PriceType {
    Limit,  // 限价单
    Market, // 市价单
}

pub enum OrderStatus {
    Pending,        // 待处理
    PartialFilled,  // 部分成交
    Filled,         // 完全成交
    Cancelled,      // 已取消
    Failed,         // 失败
}

3.2 资产模型 (Asset)

pub struct RWAAsset {
    pub id: AssetId,                    // 资产ID
    pub name: String,                   // 资产名称
    pub symbol: String,                 // 资产符号
    pub asset_type: AssetType,          // 资产类型
    pub total_supply: u64,              // 总供应量
    pub circulating_supply: u64,        // 流通量
    pub issuer: Address,                // 发行方地址 (32字节)
    pub valuation: u64,                 // 估值
    pub metadata: AssetMetadata,        // 元数据
    pub compliance_status: ComplianceStatus, // 合规状态
    pub listed_at: i64,                 // 上架时间
}

pub enum AssetType {
    RealEstate,     // 房地产
    Equity,         // 股权
    Bond,           // 债券
    Commodity,      // 大宗商品
    ArtWork,        // 艺术品
    Other,          // 其他
}

pub enum ComplianceStatus {
    Pending,        // 待审核
    Approved,       // 已批准
    Rejected,       // 已拒绝
    Suspended,      // 已暂停
}

3.3 交易记录模型 (Trade)

pub struct Trade {
    pub id: TradeId,                    // 交易ID
    pub buy_order_id: OrderId,          // 买单ID
    pub sell_order_id: OrderId,         // 卖单ID
    pub buyer: Address,                 // 买方地址 (32字节)
    pub seller: Address,                // 卖方地址 (32字节)
    pub asset_id: AssetId,              // 资产ID
    pub price: u64,                     // 成交价格
    pub quantity: u64,                  // 成交数量
    pub total_amount: u64,              // 总金额
    pub fee: u64,                       // 手续费
    pub status: TradeStatus,            // 交易状态
    pub executed_at: i64,               // 执行时间
    pub settled_at: Option<i64>,        // 结算时间
    pub tx_hash: Hash,                  // 交易哈希 (48字节 SHA3-384)
}

pub enum TradeStatus {
    Pending,        // 待处理
    Executing,      // 执行中
    Completed,      // 已完成
    Failed,         // 失败
    Rolled Back,    // 已回滚
}

3.4 用户模型 (User)

pub struct User {
    pub address: Address,               // 用户地址 (32字节)
    pub kyc_status: KYCStatus,          // KYC状态
    pub risk_level: RiskLevel,          // 风险等级
    pub daily_limit: u64,               // 日交易限额
    pub monthly_limit: u64,             // 月交易限额
    pub daily_volume: u64,              // 日累计交易量
    pub monthly_volume: u64,            // 月累计交易量
    pub is_blacklisted: bool,           // 是否在黑名单
    pub created_at: i64,                // 创建时间
    pub updated_at: i64,                // 更新时间
}

pub enum KYCStatus {
    NotVerified,    // 未验证
    Pending,        // 审核中
    Verified,       // 已验证
    Rejected,       // 已拒绝
}

pub enum RiskLevel {
    Low,            // 低风险
    Medium,         // 中风险
    High,           // 高风险
    Critical,       // 极高风险
}

4. 核心算法

4.1 订单撮合算法

算法: 价格-时间优先撮合

输入: 新订单 new_order
输出: 撮合结果列表 matches

1. 如果 new_order 是买单:
   a. 从卖单队列中取出价格最低的卖单 sell_order
   b. 如果 sell_order.price <= new_order.price:
      - 计算可成交数量 match_quantity = min(new_order.remaining, sell_order.remaining)
      - 创建交易记录 trade
      - 更新订单状态
      - 如果 new_order 完全成交,退出
      - 否则继续下一个卖单
   c. 如果没有可匹配的卖单,将 new_order 加入买单队列

2. 如果 new_order 是卖单:
   a. 从买单队列中取出价格最高的买单 buy_order
   b. 如果 buy_order.price >= new_order.price:
      - 计算可成交数量 match_quantity = min(new_order.remaining, buy_order.remaining)
      - 创建交易记录 trade
      - 更新订单状态
      - 如果 new_order 完全成交,退出
      - 否则继续下一个买单
   c. 如果没有可匹配的买单,将 new_order 加入卖单队列

3. 返回撮合结果

4.2 清算结算流程

流程: T+0实时结算

1. 锁定阶段:
   - 买方锁定支付金额
   - 卖方锁定资产数量
   - 验证双方余额充足

2. 执行阶段:
   - 调用Charter智能合约执行资产转移
   - 记录链上交易哈希
   - 更新订单状态为"执行中"

3. 确认阶段:
   - 等待区块确认 (3个区块)
   - 验证交易成功
   - 更新交易状态为"已完成"

4. 结算阶段:
   - 解锁买方剩余资金
   - 解锁卖方剩余资产
   - 分配手续费
   - 更新用户余额

5. 异常处理:
   - 如果任何阶段失败,触发回滚
   - 恢复双方锁定的资产
   - 标记交易为"失败"
   - 记录失败原因

5. 技术栈

5.1 后端技术

  • 语言: Rust 1.70+
  • Web框架: Axum 0.7
  • 异步运行时: Tokio 1.0
  • 序列化: Serde + Serde JSON
  • 数据库: Sled (嵌入式KV数据库)
  • 加密: SHA3-384 (NAC原生哈希算法)
  • 智能合约: Charter语言

5.2 前端技术

  • 框架: React 18 + TypeScript
  • 构建工具: Vite
  • 样式: TailwindCSS
  • 状态管理: Zustand
  • 图表: TradingView Lightweight Charts
  • WebSocket: Socket.io-client

5.3 区块链技术

  • 虚拟机: NVM (NAC Virtual Machine)
  • 共识协议: CBPP (Constitutional Byzantine Paxos Protocol)
  • 网络协议: CSNP (Constitutional Secure Network Protocol)
  • RPC协议: NRPC4.0
  • 类型系统: Address (32字节), Hash (48字节), Signature (96字节)

6. 安全设计

6.1 订单安全

  • 所有订单必须使用用户私钥签名
  • 订单签名验证使用NAC原生签名算法
  • 防止重放攻击订单包含时间戳和nonce
  • 订单有效期限制:超时自动取消

6.2 资产安全

  • 资产转移必须通过Charter智能合约
  • 资产锁定机制防止双花
  • 多重签名支持(可选)
  • 冷热钱包分离

6.3 合规安全

  • KYC数据加密存储
  • 敏感信息脱敏处理
  • 访问权限控制
  • 审计日志完整记录

7. 性能优化

7.1 撮合引擎优化

  • 使用优先队列BinaryHeap实现订单簿
  • 订单索引优化HashMap快速查找
  • 批量撮合:一次处理多个订单
  • 异步处理:撮合与结算并行

7.2 数据库优化

  • 订单数据分片存储
  • 热数据内存缓存
  • 冷数据归档压缩
  • 索引优化按资产ID、用户地址、时间建立索引

7.3 网络优化

  • WebSocket推送实时行情
  • HTTP/2支持
  • 数据压缩传输
  • CDN加速静态资源

8. 监控与运维

8.1 监控指标

  • 订单处理延迟
  • 撮合引擎TPS
  • 系统资源使用率
  • 错误率和成功率
  • 用户活跃度

8.2 告警机制

  • 系统异常告警
  • 性能下降告警
  • 安全事件告警
  • 合规风险告警

8.3 日志管理

  • 结构化日志
  • 日志分级DEBUG, INFO, WARN, ERROR
  • 日志归档和清理
  • 日志分析和查询

9. 部署架构

9.1 服务部署

┌─────────────────────────────────────────────────────────────┐
│                         负载均衡器 (Nginx)                     │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                    API网关 (API Gateway)                      │
└─────────────────────────────────────────────────────────────┘
                              ↓
        ┌────────────────┬────────────────┬────────────────┐
        ↓                ↓                ↓                ↓
┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐
│ 交易服务实例1 │  │ 交易服务实例2 │  │ 交易服务实例3 │  │ 交易服务实例N │
└──────────────┘  └──────────────┘  └──────────────┘  └──────────────┘
        ↓                ↓                ↓                ↓
┌─────────────────────────────────────────────────────────────┐
│                      数据库集群 (Sled)                        │
└─────────────────────────────────────────────────────────────┘
        ↓
┌─────────────────────────────────────────────────────────────┐
│                    NAC区块链节点集群                          │
└─────────────────────────────────────────────────────────────┘

9.2 容灾备份

  • 主从数据库复制
  • 定期数据备份
  • 异地灾备
  • 快速故障切换

10. 开发计划

阶段1: 核心交易功能 (第1-2周)

  • 实现订单簿数据结构
  • 实现撮合引擎
  • 实现清算结算机制
  • 单元测试覆盖

阶段2: 合规功能 (第3周)

  • 实现KYC验证接口
  • 实现交易限额控制
  • 实现合规报告生成
  • 实现监管接口

阶段3: 前端界面 (第4周)

  • 设计交易界面
  • 实现行情展示
  • 实现交易操作
  • 实现用户资产管理

阶段4: 测试与文档 (第5周)

  • 集成测试
  • 性能测试
  • API文档
  • 用户手册

阶段5: 部署上线 (第6周)

  • 生产环境部署
  • 监控配置
  • 安全审计
  • 正式上线

11. 参考资料

  • NAC公链技术白皮书
  • Charter智能合约语言规范
  • CBPP共识协议文档
  • NRPC4.0协议规范
  • ACC-20资产协议标准