264 lines
10 KiB
Markdown
264 lines
10 KiB
Markdown
# NAC跨链桥接架构设计文档
|
||
|
||
## 1. 架构概述
|
||
|
||
NAC跨链桥接模块采用**锁定-铸造-销毁-解锁**模型,实现NAC公链与以太坊、BSC等EVM兼容链之间的资产互通。
|
||
|
||
### 1.1 核心组件
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ NAC跨链桥接系统 │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||
│ │ 桥接管理器 │───▶│ 中继节点 │───▶│ 验证器池 │ │
|
||
│ │ (Manager) │ │ (Relayer) │ │ (Validator) │ │
|
||
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
||
│ │ │ │ │
|
||
│ ▼ ▼ ▼ │
|
||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||
│ │ 资产锁定器 │ │ 消息传递器 │ │ 事件监听器 │ │
|
||
│ │ (Locker) │ │ (Messenger) │ │ (Listener) │ │
|
||
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
||
│ │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
│ │
|
||
▼ ▼
|
||
┌─────────────────┐ ┌─────────────────┐
|
||
│ NAC主链 │ │ 以太坊/BSC │
|
||
│ │ │ │
|
||
│ 锁定合约 │◀────────跨链消息────────▶│ 映射合约 │
|
||
│ (Lock) │ │ (Wrapped) │
|
||
└─────────────────┘ └─────────────────┘
|
||
```
|
||
|
||
### 1.2 工作流程
|
||
|
||
#### 从NAC到以太坊(锁定-铸造)
|
||
|
||
1. 用户在NAC链上锁定资产
|
||
2. 事件监听器捕获锁定事件
|
||
3. 中继节点验证事件有效性
|
||
4. 验证器池达成共识
|
||
5. 在以太坊上铸造对应的包装资产
|
||
|
||
#### 从以太坊到NAC(销毁-解锁)
|
||
|
||
1. 用户在以太坊上销毁包装资产
|
||
2. 事件监听器捕获销毁事件
|
||
3. 中继节点验证事件有效性
|
||
4. 验证器池达成共识
|
||
5. 在NAC链上解锁原始资产
|
||
|
||
## 2. 跨链协议设计
|
||
|
||
### 2.1 消息格式
|
||
|
||
```rust
|
||
pub struct CrossChainMessage {
|
||
// 消息ID(唯一标识)
|
||
pub id: [u8; 32],
|
||
|
||
// 源链ID
|
||
pub source_chain: ChainId,
|
||
|
||
// 目标链ID
|
||
pub target_chain: ChainId,
|
||
|
||
// 消息类型(锁定/解锁/铸造/销毁)
|
||
pub message_type: MessageType,
|
||
|
||
// 资产信息
|
||
pub asset: AssetInfo,
|
||
|
||
// 发送者地址
|
||
pub sender: Address,
|
||
|
||
// 接收者地址
|
||
pub receiver: Address,
|
||
|
||
// 金额
|
||
pub amount: U256,
|
||
|
||
// 时间戳
|
||
pub timestamp: u64,
|
||
|
||
// 签名列表(多签验证)
|
||
pub signatures: Vec<Signature>,
|
||
}
|
||
```
|
||
|
||
### 2.2 验证机制
|
||
|
||
采用**多签验证**模式:
|
||
- 至少需要 2/3 的验证器签名
|
||
- 验证器通过质押NAC代币获得资格
|
||
- 恶意验证器将被罚没质押资产
|
||
|
||
### 2.3 安全措施
|
||
|
||
1. **双花防护**:消息ID唯一性检查
|
||
2. **重放攻击防护**:时间戳和nonce机制
|
||
3. **金额限制**:单笔和日累计限额
|
||
4. **暂停机制**:紧急情况下可暂停桥接
|
||
5. **审计日志**:所有操作完整记录
|
||
|
||
## 3. 资产锁定/解锁机制
|
||
|
||
### 3.1 锁定机制
|
||
|
||
```rust
|
||
pub trait AssetLocker {
|
||
// 锁定资产
|
||
async fn lock_asset(
|
||
&self,
|
||
asset: AssetId,
|
||
amount: U256,
|
||
target_chain: ChainId,
|
||
receiver: Address,
|
||
) -> Result<LockReceipt>;
|
||
|
||
// 查询锁定状态
|
||
async fn get_lock_status(&self, lock_id: [u8; 32]) -> Result<LockStatus>;
|
||
}
|
||
```
|
||
|
||
### 3.2 解锁机制
|
||
|
||
```rust
|
||
pub trait AssetUnlocker {
|
||
// 解锁资产
|
||
async fn unlock_asset(
|
||
&self,
|
||
lock_id: [u8; 32],
|
||
proof: UnlockProof,
|
||
) -> Result<UnlockReceipt>;
|
||
|
||
// 验证解锁证明
|
||
async fn verify_unlock_proof(&self, proof: &UnlockProof) -> Result<bool>;
|
||
}
|
||
```
|
||
|
||
### 3.3 状态管理
|
||
|
||
使用状态机模型管理资产状态:
|
||
|
||
```
|
||
Pending → Locked → Confirmed → Minted
|
||
↓
|
||
Failed → Refunded
|
||
```
|
||
|
||
## 4. 跨链消息传递协议
|
||
|
||
### 4.1 消息传递流程
|
||
|
||
```
|
||
发送方链 中继网络 接收方链
|
||
│ │ │
|
||
│──① 发送消息──────────▶│ │
|
||
│ │──② 验证消息──────────▶│
|
||
│ │ │
|
||
│ │◀─③ 确认接收──────────│
|
||
│◀─④ 返回收据──────────│ │
|
||
```
|
||
|
||
### 4.2 消息优先级
|
||
|
||
- **高优先级**:大额转账、紧急操作
|
||
- **普通优先级**:常规转账
|
||
- **低优先级**:批量操作
|
||
|
||
### 4.3 消息确认
|
||
|
||
- **快速确认**:1个区块确认(适用于小额)
|
||
- **标准确认**:12个区块确认(适用于中额)
|
||
- **安全确认**:64个区块确认(适用于大额)
|
||
|
||
## 5. 中继节点设计
|
||
|
||
### 5.1 节点职责
|
||
|
||
1. 监听源链事件
|
||
2. 验证事件有效性
|
||
3. 构造跨链消息
|
||
4. 提交到目标链
|
||
5. 处理失败重试
|
||
|
||
### 5.2 节点激励
|
||
|
||
- 每成功中继一笔交易,获得手续费分成
|
||
- 质押NAC代币获得中继资格
|
||
- 恶意行为将被罚没质押
|
||
|
||
### 5.3 去中心化
|
||
|
||
- 任何人都可以成为中继节点
|
||
- 通过质押和信誉系统筛选节点
|
||
- 多节点竞争提高效率和安全性
|
||
|
||
## 6. 性能指标
|
||
|
||
- **吞吐量**:100 TPS
|
||
- **确认时间**:1-5分钟(取决于确认级别)
|
||
- **手续费**:0.1%-0.5%
|
||
- **最大单笔金额**:100,000 USDT等值
|
||
- **日累计限额**:1,000,000 USDT等值
|
||
|
||
## 7. 技术栈
|
||
|
||
- **Rust**:核心逻辑实现
|
||
- **Tokio**:异步运行时
|
||
- **Ethers-rs**:以太坊集成
|
||
- **Sled**:本地状态存储
|
||
- **WebSocket**:实时事件监听
|
||
|
||
## 8. 部署架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 生产环境部署 │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
|
||
│ │ 中继节点1 │ │ 中继节点2 │ │ 中继节点3 │ │
|
||
│ │ (主节点) │ │ (备份节点) │ │(备份节点) │ │
|
||
│ └──────────────┘ └──────────────┘ └───────────┘ │
|
||
│ │ │ │ │
|
||
│ └────────────────────┴────────────────────┘ │
|
||
│ │ │
|
||
│ ┌─────────▼─────────┐ │
|
||
│ │ 负载均衡器 │ │
|
||
│ └─────────┬─────────┘ │
|
||
│ │ │
|
||
│ ┌────────────────────┼────────────────────┐ │
|
||
│ ▼ ▼ ▼ │
|
||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||
│ │ NAC节点 │ │ ETH节点 │ │ BSC节点 │ │
|
||
│ └──────────┘ └──────────┘ └──────────┘ │
|
||
│ │
|
||
└─────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## 9. 监控和告警
|
||
|
||
- **健康检查**:节点状态、网络连接、区块同步
|
||
- **性能监控**:TPS、延迟、成功率
|
||
- **异常告警**:交易失败、验证失败、网络异常
|
||
- **审计日志**:所有操作完整记录
|
||
|
||
## 10. 未来扩展
|
||
|
||
- 支持更多区块链(Polygon、Avalanche等)
|
||
- 支持NFT跨链
|
||
- 支持智能合约跨链调用
|
||
- 实现跨链流动性池
|
||
- 集成去中心化预言机
|
||
|
||
---
|
||
|
||
**文档版本**: 1.0
|
||
**最后更新**: 2026-02-18
|
||
**维护者**: NAC开发团队
|