99 lines
2.4 KiB
Rust
99 lines
2.4 KiB
Rust
//! # NAC跨链桥接模块
|
|
//!
|
|
//! 本模块实现NAC公链与以太坊、BSC等主流区块链之间的资产互通功能。
|
|
//!
|
|
//! ## 主要功能
|
|
//!
|
|
//! - **资产锁定/解锁**:在源链上锁定资产,在目标链上铸造/销毁包装资产
|
|
//! - **跨链消息传递**:安全可靠的跨链消息协议
|
|
//! - **多签验证**:基于验证器池的多签验证机制
|
|
//! - **中继网络**:去中心化的中继节点网络
|
|
//! - **事件监听**:实时监听各链上的桥接事件
|
|
//!
|
|
//! ## 使用示例
|
|
//!
|
|
//! ```rust,no_run
|
|
//! use nac_cross_chain_bridge::manager::{BridgeManager, BridgeManagerImpl};
|
|
//!
|
|
//! #[tokio::main]
|
|
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
//! // 创建桥接管理器
|
|
//! let manager = BridgeManagerImpl::new("/path/to/db")?;
|
|
//!
|
|
//! // 初始化
|
|
//! manager.initialize().await?;
|
|
//!
|
|
//! // 启动桥接
|
|
//! manager.start().await?;
|
|
//!
|
|
//! // 获取状态
|
|
//! let status = manager.get_status().await?;
|
|
//! println!("Bridge status: {:?}", status);
|
|
//!
|
|
//! // 停止桥接
|
|
//! manager.stop().await?;
|
|
//!
|
|
//! Ok(())
|
|
//! }
|
|
//! ```
|
|
//!
|
|
//! ## 架构说明
|
|
//!
|
|
//! 详细的架构设计请参考 `ARCHITECTURE.md` 文档。
|
|
|
|
pub mod types;
|
|
pub mod locker;
|
|
pub mod unlocker;
|
|
pub mod validator;
|
|
pub mod relayer;
|
|
pub mod eth_listener;
|
|
pub mod manager;
|
|
|
|
// 重新导出常用类型
|
|
pub use types::{
|
|
ChainId,
|
|
MessageType,
|
|
AssetInfo,
|
|
AssetId,
|
|
Address,
|
|
Amount,
|
|
Signature,
|
|
CrossChainMessage,
|
|
LockReceipt,
|
|
LockStatus,
|
|
UnlockReceipt,
|
|
UnlockStatus,
|
|
UnlockProof,
|
|
ValidatorInfo,
|
|
RelayerInfo,
|
|
BridgeConfig,
|
|
BridgeError,
|
|
Result,
|
|
};
|
|
|
|
pub use locker::{AssetLocker, AssetLockerImpl};
|
|
pub use unlocker::{AssetUnlocker, AssetUnlockerImpl};
|
|
pub use validator::{ValidatorPool, ValidatorPoolImpl};
|
|
pub use relayer::{Relayer, RelayerImpl, RelayerStats};
|
|
pub use eth_listener::{EventListener, EthereumListener, BridgeEvent};
|
|
pub use manager::{BridgeManager, BridgeManagerImpl, BridgeStatus};
|
|
|
|
/// 版本信息
|
|
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
|
|
|
|
/// 初始化日志系统
|
|
pub fn init_logger() {
|
|
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
|
|
.init();
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_version() {
|
|
assert!(!VERSION.is_empty());
|
|
}
|
|
}
|