docs: 完成nac-cbpp-l0模块深度分析报告(900行,75%完成,发现2个编译错误待修复)
This commit is contained in:
parent
f7afb6084b
commit
7d8fc1078f
|
|
@ -0,0 +1,555 @@
|
||||||
|
# nac-cbpp-l0 模块深度分析报告
|
||||||
|
|
||||||
|
**模块名称**: nac-cbpp-l0
|
||||||
|
**版本**: 0.1.0
|
||||||
|
**分析日期**: 2026-02-18
|
||||||
|
**分析人员**: NAC开发团队
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 模块概览
|
||||||
|
|
||||||
|
**功能定位**: CBPP L0层 - 宪政区块生产协议基础层实现
|
||||||
|
**英文全称**: Constitutional Block Production Protocol - Layer 0 Implementation
|
||||||
|
**代码行数**: 900行
|
||||||
|
**完成度**: 75%
|
||||||
|
**测试覆盖**: 编译错误(待修复)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🏗️ 架构设计
|
||||||
|
|
||||||
|
### 核心组件
|
||||||
|
|
||||||
|
nac-cbpp-l0实现了CBPP协议的L0层,包含三个核心子系统:
|
||||||
|
|
||||||
|
1. **CR Cache** - Constitutional Receipt Cache(宪法收据缓存)
|
||||||
|
2. **Params** - Consensus Parameters Storage(共识参数存储)
|
||||||
|
3. **Propagation** - Block Propagation Optimization(区块传播优化)
|
||||||
|
|
||||||
|
### 目录结构
|
||||||
|
|
||||||
|
```
|
||||||
|
nac-cbpp-l0/
|
||||||
|
├── Cargo.toml
|
||||||
|
├── README.md
|
||||||
|
└── src/
|
||||||
|
├── lib.rs (51行) - 统一接口
|
||||||
|
├── cr_cache/
|
||||||
|
│ └── mod.rs (219行) - 宪法收据缓存
|
||||||
|
├── params/
|
||||||
|
│ └── mod.rs (274行) - 共识参数管理
|
||||||
|
└── propagation/
|
||||||
|
└── mod.rs (360行) - 区块传播优化
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📦 依赖关系
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[dependencies]
|
||||||
|
# NAC核心依赖
|
||||||
|
nac-udm = { path = "../nac-udm" } # NAC统一定义模块
|
||||||
|
nac-serde = { path = "../nac-serde" } # NAC序列化
|
||||||
|
|
||||||
|
# 网络
|
||||||
|
quinn = "0.10" # QUIC协议
|
||||||
|
tokio = { version = "1.35", features = ["full"] } # 异步运行时
|
||||||
|
futures = "0.3"
|
||||||
|
|
||||||
|
# 数据结构
|
||||||
|
lru = "0.12" # LRU缓存
|
||||||
|
dashmap = "5.5" # 并发哈希表
|
||||||
|
|
||||||
|
# 序列化
|
||||||
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
bincode = "1.3"
|
||||||
|
|
||||||
|
# 密码学
|
||||||
|
sha3 = "0.10" # SHA3哈希
|
||||||
|
|
||||||
|
# 日志
|
||||||
|
log = "0.4"
|
||||||
|
env_logger = "0.11"
|
||||||
|
|
||||||
|
# 错误处理
|
||||||
|
thiserror = "1.0"
|
||||||
|
anyhow = "1.0"
|
||||||
|
```
|
||||||
|
|
||||||
|
**关键依赖**:
|
||||||
|
- **quinn**: QUIC协议实现(支持0-RTT和FEC)
|
||||||
|
- **lru**: LRU缓存算法
|
||||||
|
- **dashmap**: 高性能并发哈希表
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 核心功能详解
|
||||||
|
|
||||||
|
### 1. CR Cache - 宪法收据缓存 (219行)
|
||||||
|
|
||||||
|
#### 1.1 数据结构
|
||||||
|
|
||||||
|
```rust
|
||||||
|
pub struct CRCacheEntry {
|
||||||
|
pub tx_hash: Hash, // 交易哈希
|
||||||
|
pub expiry_height: BlockHeight, // 过期高度
|
||||||
|
pub receipt_id: Hash, // 收据ID
|
||||||
|
pub cached_at: u64, // 缓存时间戳
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct CRCache {
|
||||||
|
cache: Arc<Mutex<LruCache<Hash, CRCacheEntry>>>,
|
||||||
|
max_size: usize,
|
||||||
|
current_height: Arc<Mutex<BlockHeight>>,
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 1.2 核心功能
|
||||||
|
|
||||||
|
**缓存管理**:
|
||||||
|
- LRU淘汰策略
|
||||||
|
- 默认大小:10,000条记录
|
||||||
|
- 线程安全(Arc + Mutex)
|
||||||
|
|
||||||
|
**过期机制**:
|
||||||
|
- 基于区块高度的自动过期
|
||||||
|
- 每次高度更新时清理过期条目
|
||||||
|
- 查询时检查过期状态
|
||||||
|
|
||||||
|
**核心API**:
|
||||||
|
|
||||||
|
| 方法 | 功能 | 参数 | 返回值 |
|
||||||
|
|------|------|------|--------|
|
||||||
|
| `new` | 创建缓存 | size | Self |
|
||||||
|
| `with_default_size` | 创建默认大小缓存 | - | Self |
|
||||||
|
| `insert` | 插入收据 | receipt_id, entry | Result<(), CRCacheError> |
|
||||||
|
| `get` | 获取收据 | receipt_id | Result<CRCacheEntry, CRCacheError> |
|
||||||
|
| `contains` | 检查是否存在 | receipt_id | bool |
|
||||||
|
| `update_height` | 更新当前高度 | new_height | - |
|
||||||
|
| `cleanup_expired` | 清理过期条目 | - | - |
|
||||||
|
| `stats` | 获取统计信息 | - | CRCacheStats |
|
||||||
|
| `clear` | 清空缓存 | - | - |
|
||||||
|
|
||||||
|
#### 1.3 测试覆盖
|
||||||
|
|
||||||
|
```rust
|
||||||
|
#[test]
|
||||||
|
fn test_cache_insert_and_get() // 插入和获取
|
||||||
|
fn test_cache_expiry() // 过期机制
|
||||||
|
fn test_cache_lru() // LRU淘汰
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Params - 共识参数存储 (274行)
|
||||||
|
|
||||||
|
#### 2.1 数据结构
|
||||||
|
|
||||||
|
```rust
|
||||||
|
pub struct CBPPParams {
|
||||||
|
pub epoch_number: u64, // 当前epoch编号
|
||||||
|
pub gas_limit: u64, // 动态gas限制
|
||||||
|
pub delta_t_min: u64, // 最小出块间隔(ms)
|
||||||
|
pub delta_t_max: u64, // 最大出块间隔(ms)
|
||||||
|
pub target_utilization: f64, // 目标利用率(0.0-1.0)
|
||||||
|
pub adjust_factor: f64, // gas调整系数(0.0-1.0)
|
||||||
|
pub gas_limit_min: u64, // 最小gas限制
|
||||||
|
pub gas_limit_max: u64, // 最大gas限制
|
||||||
|
pub constitutional_hash: Hash, // 宪法哈希(当前版本)
|
||||||
|
pub last_update_height: BlockHeight, // 最后更新高度
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2.2 默认参数
|
||||||
|
|
||||||
|
| 参数 | 默认值 | 说明 |
|
||||||
|
|------|--------|------|
|
||||||
|
| epoch_number | 0 | 初始epoch |
|
||||||
|
| gas_limit | 10,000,000 | 10M gas |
|
||||||
|
| delta_t_min | 100ms | 最小出块间隔 |
|
||||||
|
| delta_t_max | 2000ms | 最大出块间隔(2秒) |
|
||||||
|
| target_utilization | 0.7 | 目标70%利用率 |
|
||||||
|
| adjust_factor | 0.125 | 12.5%调整系数 |
|
||||||
|
| gas_limit_min | 1,000,000 | 1M gas |
|
||||||
|
| gas_limit_max | 100,000,000 | 100M gas |
|
||||||
|
|
||||||
|
#### 2.3 Gas限制动态调整算法
|
||||||
|
|
||||||
|
**算法来源**: CBPP白皮书 Section 5.2
|
||||||
|
|
||||||
|
**调整逻辑**:
|
||||||
|
```rust
|
||||||
|
if avg_block_size > target_size {
|
||||||
|
// 拥堵,增加限制
|
||||||
|
adjustment = (avg_size / target_size) - 1.0
|
||||||
|
new_limit = current_limit * (1.0 + adjustment * adjust_factor)
|
||||||
|
} else {
|
||||||
|
// 空闲,减少限制
|
||||||
|
adjustment = 1.0 - (avg_size / target_size)
|
||||||
|
new_limit = current_limit * (1.0 - adjustment * adjust_factor)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**限制条件**:
|
||||||
|
1. 单次调整不超过±12.5%
|
||||||
|
2. 绝对限制:1M - 100M gas
|
||||||
|
|
||||||
|
#### 2.4 参数验证
|
||||||
|
|
||||||
|
```rust
|
||||||
|
pub fn validate(&self) -> Result<(), ParamsError> {
|
||||||
|
// delta_t_min < delta_t_max
|
||||||
|
// 0.0 < target_utilization < 1.0
|
||||||
|
// 0.0 < adjust_factor < 1.0
|
||||||
|
// gas_limit_min <= gas_limit <= gas_limit_max
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2.5 ParamsManager
|
||||||
|
|
||||||
|
**线程安全管理器**:
|
||||||
|
- 使用 `Arc<RwLock<CBPPParams>>`
|
||||||
|
- 支持并发读取
|
||||||
|
- 写入时独占锁
|
||||||
|
|
||||||
|
**核心API**:
|
||||||
|
|
||||||
|
| 方法 | 功能 | 参数 | 返回值 |
|
||||||
|
|------|------|------|--------|
|
||||||
|
| `new` | 创建管理器(默认参数) | - | Self |
|
||||||
|
| `with_params` | 创建管理器(自定义参数) | params | Result<Self, ParamsError> |
|
||||||
|
| `get` | 获取当前参数 | - | CBPPParams |
|
||||||
|
| `update` | 更新参数 | new_params | Result<(), ParamsError> |
|
||||||
|
| `update_gas_limit` | 更新gas限制 | avg_block_size | - |
|
||||||
|
| `start_new_epoch` | 开始新epoch | epoch, hash | - |
|
||||||
|
| `get_gas_limit` | 获取gas限制 | - | u64 |
|
||||||
|
| `get_delta_t_min` | 获取最小间隔 | - | u64 |
|
||||||
|
| `get_delta_t_max` | 获取最大间隔 | - | u64 |
|
||||||
|
| `get_constitutional_hash` | 获取宪法哈希 | - | Hash |
|
||||||
|
|
||||||
|
#### 2.6 测试覆盖
|
||||||
|
|
||||||
|
```rust
|
||||||
|
#[test]
|
||||||
|
fn test_default_params() // 默认参数验证
|
||||||
|
fn test_gas_limit_adjustment_increase() // gas限制增加
|
||||||
|
fn test_gas_limit_adjustment_decrease() // gas限制减少
|
||||||
|
fn test_gas_limit_clamping() // gas限制钳制
|
||||||
|
fn test_params_manager() // 参数管理器
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Propagation - 区块传播优化 (360行)
|
||||||
|
|
||||||
|
#### 3.1 数据结构
|
||||||
|
|
||||||
|
**区块公告消息**:
|
||||||
|
```rust
|
||||||
|
pub struct BlockAnnounce {
|
||||||
|
pub block_hash: Hash, // 区块哈希
|
||||||
|
pub height: u64, // 区块高度
|
||||||
|
pub producer: Address, // 生产者地址
|
||||||
|
pub timestamp: u64, // 时间戳
|
||||||
|
pub tx_count: u32, // 交易数量
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**骨干网络连接**:
|
||||||
|
```rust
|
||||||
|
pub struct BackboneConnection {
|
||||||
|
pub peer_address: Address, // 对等节点地址
|
||||||
|
pub quality_score: u8, // 连接质量分数(0-100)
|
||||||
|
pub rtt_ms: u64, // 往返时间(ms)
|
||||||
|
pub last_seen: u64, // 最后活跃时间
|
||||||
|
pub is_direct: bool, // 是否直连
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**传播配置**:
|
||||||
|
```rust
|
||||||
|
pub struct PropagationConfig {
|
||||||
|
pub min_cbp_connections: usize, // 最小CBP连接数(默认12)
|
||||||
|
pub target_cbp_connections: usize, // 目标CBP连接数(默认24)
|
||||||
|
pub max_rtt_ms: u64, // 最大RTT(默认500ms)
|
||||||
|
pub connection_timeout_ms: u64, // 连接超时(默认5000ms)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3.2 核心功能
|
||||||
|
|
||||||
|
**连接管理**:
|
||||||
|
- 维护CBP骨干网络连接池
|
||||||
|
- 支持添加/删除连接
|
||||||
|
- 自动清理过期连接
|
||||||
|
- 连接质量评分
|
||||||
|
|
||||||
|
**区块传播**:
|
||||||
|
- 区块公告广播(Block Announce)
|
||||||
|
- 按需请求完整区块
|
||||||
|
- 基于质量选择最佳节点
|
||||||
|
- QUIC + 0-RTT + FEC优化(待实现)
|
||||||
|
|
||||||
|
**核心API**:
|
||||||
|
|
||||||
|
| 方法 | 功能 | 参数 | 返回值 |
|
||||||
|
|------|------|------|--------|
|
||||||
|
| `new` | 创建传播管理器 | config | Self |
|
||||||
|
| `with_default_config` | 创建默认配置管理器 | - | Self |
|
||||||
|
| `add_connection` | 添加CBP连接 | connection | Result<(), PropagationError> |
|
||||||
|
| `remove_connection` | 删除CBP连接 | peer | Result<(), PropagationError> |
|
||||||
|
| `get_connections` | 获取所有连接 | - | Vec<BackboneConnection> |
|
||||||
|
| `has_sufficient_connections` | 检查连接是否充足 | - | bool |
|
||||||
|
| `broadcast_block_announce` | 广播区块公告 | announce | Result<(), PropagationError> |
|
||||||
|
| `request_block` | 请求完整区块 | block_hash, from_peer | Result<(), PropagationError> |
|
||||||
|
| `update_connection_quality` | 更新连接质量 | peer, score, rtt | Result<(), PropagationError> |
|
||||||
|
| `get_best_peers` | 获取最佳节点 | count | Vec<BackboneConnection> |
|
||||||
|
| `cleanup_stale_connections` | 清理过期连接 | max_age_secs | - |
|
||||||
|
| `get_stats` | 获取统计信息 | - | PropagationStats |
|
||||||
|
|
||||||
|
#### 3.3 节点选择算法
|
||||||
|
|
||||||
|
**排序规则**:
|
||||||
|
1. 首先按质量分数降序
|
||||||
|
2. 其次按RTT升序
|
||||||
|
|
||||||
|
```rust
|
||||||
|
peers.sort_by(|a, b| {
|
||||||
|
b.quality_score.cmp(&a.quality_score)
|
||||||
|
.then(a.rtt_ms.cmp(&b.rtt_ms))
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3.4 宪法条款引用
|
||||||
|
|
||||||
|
**NET_CONN_MIN_CBP**: 最小CBP连接数 = 12
|
||||||
|
|
||||||
|
这是NAC宪法中定义的网络连接要求,确保骨干网络的健壮性。
|
||||||
|
|
||||||
|
#### 3.5 测试覆盖
|
||||||
|
|
||||||
|
```rust
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_add_remove_connection() // 连接添加/删除
|
||||||
|
async fn test_get_best_peers() // 最佳节点选择
|
||||||
|
async fn test_broadcast_block_announce() // 区块公告广播
|
||||||
|
async fn test_has_sufficient_connections() // 连接充足性检查
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🐛 发现的问题
|
||||||
|
|
||||||
|
### 问题1: 编译错误 - Hash::from_low_u64_be 不存在
|
||||||
|
|
||||||
|
**位置**: `src/cr_cache/mod.rs:205-207`
|
||||||
|
|
||||||
|
**错误代码**:
|
||||||
|
```rust
|
||||||
|
let id1 = Hash::from_low_u64_be(1);
|
||||||
|
let id2 = Hash::from_low_u64_be(2);
|
||||||
|
let id3 = Hash::from_low_u64_be(3);
|
||||||
|
```
|
||||||
|
|
||||||
|
**错误信息**:
|
||||||
|
```
|
||||||
|
error[E0599]: no function or associated item named `from_low_u64_be` found for struct `Hash`
|
||||||
|
```
|
||||||
|
|
||||||
|
**修复方案**:
|
||||||
|
```rust
|
||||||
|
// 使用Hash::new()或Hash::zero()
|
||||||
|
let id1 = {
|
||||||
|
let mut bytes = [0u8; 32];
|
||||||
|
bytes[0] = 1;
|
||||||
|
Hash::new(bytes)
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
**状态**: ❌ 待修复
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 问题2: 编译错误 - Address::from_low_u64_be 不存在
|
||||||
|
|
||||||
|
**位置**: `src/propagation/mod.rs:283`
|
||||||
|
|
||||||
|
**错误代码**:
|
||||||
|
```rust
|
||||||
|
peer_address: Address::from_low_u64_be(peer),
|
||||||
|
```
|
||||||
|
|
||||||
|
**错误信息**:
|
||||||
|
```
|
||||||
|
error[E0599]: no function or associated item named `from_low_u64_be` found for struct `Address`
|
||||||
|
```
|
||||||
|
|
||||||
|
**修复方案**:
|
||||||
|
```rust
|
||||||
|
// 使用Address::new()
|
||||||
|
let mut bytes = [0u8; 32];
|
||||||
|
bytes[0..8].copy_from_slice(&peer.to_le_bytes());
|
||||||
|
peer_address: Address::new(bytes),
|
||||||
|
```
|
||||||
|
|
||||||
|
**状态**: ❌ 待修复
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 问题3: QUIC网络功能未实现
|
||||||
|
|
||||||
|
**状态**: ⚠️ 高优先级
|
||||||
|
|
||||||
|
**描述**:
|
||||||
|
- 当前只有日志输出,无实际网络传输
|
||||||
|
- `broadcast_block_announce` 和 `request_block` 只是占位符
|
||||||
|
- 需要集成quinn库实现QUIC协议
|
||||||
|
|
||||||
|
**建议**:
|
||||||
|
```rust
|
||||||
|
// 实现QUIC连接
|
||||||
|
async fn establish_quic_connection(&self, peer: Address) -> Result<Connection, PropagationError> {
|
||||||
|
// 使用quinn创建QUIC连接
|
||||||
|
// 支持0-RTT
|
||||||
|
// 支持FEC
|
||||||
|
}
|
||||||
|
|
||||||
|
// 实际发送区块公告
|
||||||
|
async fn send_block_announce(&self, conn: &Connection, announce: BlockAnnounce) -> Result<(), PropagationError> {
|
||||||
|
// 通过QUIC发送
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 完成度评估
|
||||||
|
|
||||||
|
| 组件 | 代码行数 | 完成度 | 状态 |
|
||||||
|
|------|---------|--------|------|
|
||||||
|
| lib.rs | 51行 | 100% | ✅ 完成 |
|
||||||
|
| CR Cache | 219行 | 90% | ⚠️ 有编译错误 |
|
||||||
|
| Params | 274行 | 95% | ✅ 基本完成 |
|
||||||
|
| Propagation | 360行 | 60% | ⚠️ 网络功能未实现 |
|
||||||
|
| **总计** | **900行** | **75%** | **🚧 进行中** |
|
||||||
|
|
||||||
|
### 待完善功能
|
||||||
|
|
||||||
|
1. **高优先级**:
|
||||||
|
- ❌ 修复Hash和Address的编译错误
|
||||||
|
- ❌ 实现QUIC网络传输
|
||||||
|
- ⏳ 实现0-RTT优化
|
||||||
|
- ⏳ 实现FEC(前向纠错)
|
||||||
|
|
||||||
|
2. **中优先级**:
|
||||||
|
- ⏳ 添加更多单元测试
|
||||||
|
- ⏳ 实现性能监控
|
||||||
|
- ⏳ 添加网络统计
|
||||||
|
|
||||||
|
3. **低优先级**:
|
||||||
|
- ⏳ 优化缓存策略
|
||||||
|
- ⏳ 添加配置热更新
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌟 设计亮点
|
||||||
|
|
||||||
|
1. **流体区块模型支持**
|
||||||
|
- 动态gas限制调整
|
||||||
|
- 基于利用率的自适应算法
|
||||||
|
- 符合CBPP白皮书规范
|
||||||
|
|
||||||
|
2. **高效缓存机制**
|
||||||
|
- LRU淘汰策略
|
||||||
|
- 自动过期清理
|
||||||
|
- 线程安全设计
|
||||||
|
|
||||||
|
3. **智能节点选择**
|
||||||
|
- 质量分数 + RTT双重排序
|
||||||
|
- 自动清理过期连接
|
||||||
|
- 支持连接质量动态更新
|
||||||
|
|
||||||
|
4. **宪法参数集成**
|
||||||
|
- 参数存储在L0系统状态树
|
||||||
|
- 支持epoch级别的参数更新
|
||||||
|
- 宪法哈希验证
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 模块依赖关系
|
||||||
|
|
||||||
|
```
|
||||||
|
nac-cbpp-l0
|
||||||
|
├── 依赖
|
||||||
|
│ ├── nac-udm (Address, Hash等基础类型)
|
||||||
|
│ └── nac-serde (序列化)
|
||||||
|
├── 被依赖
|
||||||
|
│ └── nac-cbpp (主CBPP模块)
|
||||||
|
└── 协作模块
|
||||||
|
└── nac-cbpp-l1 (L1层)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 开发建议
|
||||||
|
|
||||||
|
1. **优先级P1**: 修复编译错误(Hash和Address的from_low_u64_be)
|
||||||
|
2. **优先级P2**: 实现QUIC网络传输功能
|
||||||
|
3. **优先级P3**: 实现0-RTT和FEC优化
|
||||||
|
4. **优先级P4**: 添加完整的集成测试
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 使用示例
|
||||||
|
|
||||||
|
```rust
|
||||||
|
use nac_cbpp_l0::{CRCache, ParamsManager, PropagationManager};
|
||||||
|
use nac_udm::primitives::{Hash, Address};
|
||||||
|
|
||||||
|
// 1. 使用CR缓存
|
||||||
|
let cache = CRCache::with_default_size();
|
||||||
|
let entry = CRCacheEntry {
|
||||||
|
tx_hash: Hash::zero(),
|
||||||
|
expiry_height: 1000,
|
||||||
|
receipt_id: Hash::zero(),
|
||||||
|
cached_at: 1000,
|
||||||
|
};
|
||||||
|
cache.insert(Hash::zero(), entry).unwrap();
|
||||||
|
|
||||||
|
// 2. 使用参数管理器
|
||||||
|
let params_mgr = ParamsManager::new();
|
||||||
|
let params = params_mgr.get();
|
||||||
|
println!("Gas limit: {}", params.gas_limit);
|
||||||
|
|
||||||
|
// 更新gas限制
|
||||||
|
params_mgr.update_gas_limit(7_000_000); // 70%利用率
|
||||||
|
|
||||||
|
// 3. 使用传播管理器
|
||||||
|
let prop_mgr = PropagationManager::with_default_config();
|
||||||
|
|
||||||
|
// 添加CBP连接
|
||||||
|
let conn = BackboneConnection {
|
||||||
|
peer_address: Address::zero(),
|
||||||
|
quality_score: 90,
|
||||||
|
rtt_ms: 100,
|
||||||
|
last_seen: 1000,
|
||||||
|
is_direct: true,
|
||||||
|
};
|
||||||
|
prop_mgr.add_connection(conn).await.unwrap();
|
||||||
|
|
||||||
|
// 广播区块公告
|
||||||
|
let announce = BlockAnnounce {
|
||||||
|
block_hash: Hash::zero(),
|
||||||
|
height: 1000,
|
||||||
|
producer: Address::zero(),
|
||||||
|
timestamp: 1000,
|
||||||
|
tx_count: 10,
|
||||||
|
};
|
||||||
|
prop_mgr.broadcast_block_announce(announce).await.unwrap();
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**分析完成时间**: 2026-02-18
|
||||||
|
**下一步**: 修复编译错误后继续分析下一个模块
|
||||||
Loading…
Reference in New Issue