NAC_Blockchain/nac-bridge-ethereum/README.md

129 lines
2.6 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以太坊桥接模块
NAC到以太坊的跨链桥接功能实现资产锁定/解锁、事件监听、交易验证和安全机制。
## 功能特性
### 1. 资产锁定/解锁
- ✅ NAC资产锁定
- ✅ 以太坊资产解锁
- ✅ 反向桥接
- ✅ 多签验证
### 2. 事件监听
- ✅ NAC链事件监听
- ✅ 以太坊事件监听
- ✅ 事件过滤
- ✅ 事件重放保护
### 3. 交易验证
- ✅ 跨链交易验证
- ✅ Merkle证明验证
- ✅ SPV验证
- ✅ 欺诈证明
### 4. 安全机制
- ✅ 资金上限控制
- ✅ 暂停机制
- ✅ 紧急提款
- ✅ 审计日志
## 使用示例
```rust
use nac_bridge_ethereum::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 创建桥接插件
let bridge = EthereumBridgePlugin::new(
"https://eth-mainnet.g.alchemy.com/v2/your-api-key",
1,
"0x1234567890123456789012345678901234567890".to_string(),
).await?;
// 查询余额
let balance = bridge.get_eth_balance("0xYourAddress").await?;
println!("Balance: {}", balance);
// 创建锁定/解锁管理器
let signers = vec!["signer1".to_string(), "signer2".to_string()];
let mut manager = LockUnlockManager::new(2, signers);
// 记录锁定
let lock = LockRecord {
lock_id: "lock1".to_string(),
eth_tx_hash: "0x123".to_string(),
amount: 1000,
token_address: None,
nac_target_address: [0u8; 32],
locked_at: 1234567890,
status: LockStatus::Pending,
signatures: vec![],
};
manager.record_lock(lock)?;
// 创建事件监听器
let mut listener = EventListener::new();
// 创建安全管理器
let config = SecurityConfig::default();
let mut security = SecurityManager::new(config);
// 验证交易金额
security.validate_amount(1000, "ETH")?;
Ok(())
}
```
## 测试
运行测试:
```bash
cargo test
```
测试覆盖范围:
- 锁定/解锁管理3个测试
- 事件监听3个测试
- 安全机制3个测试
- 以太坊桥接2个测试
- SPV验证4个测试
## 依赖
- `ethers`: 以太坊客户端
- `tokio`: 异步运行时
- `serde`: 序列化
- `chrono`: 时间处理
- `sha3`: 哈希算法
- `hex`: 十六进制编码
## 版本历史
### v0.4.0 (2026-02-18)
- ✅ 实现完整的资产锁定/解锁机制
- ✅ 实现事件监听系统
- ✅ 实现安全机制
- ✅ 添加15个单元测试
- ✅ 代码行数从594行增加到1500+行
### v0.3.0
- 基础的以太坊桥接功能
## 许可证
NAC公链项目专有
## 作者
NAC开发团队