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

483 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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<i64>, // 结算时间
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资产协议标准