# 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) ```rust 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) ```rust 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) ```rust 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, // 结算时间 pub tx_hash: Hash, // 交易哈希 (48字节 SHA3-384) } pub enum TradeStatus { Pending, // 待处理 Executing, // 执行中 Completed, // 已完成 Failed, // 失败 Rolled Back, // 已回滚 } ``` ### 3.4 用户模型 (User) ```rust 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资产协议标准