API 集成 — 设计
概述
架构
┌─────────────────────────────────────────────────────┐
│ OracleWiringLayer │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │CoinGecko │ │ Binance │ │ Mock (test) │ │
│ │ Source │ │ Source │ │ Source │ │
│ └─────┬────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ └───────┬───────┘───────────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ PriceAggregator │ │
│ │ ├─ parallel fetch (tokio::join!) │ │
│ │ ├─ median price │ │
│ │ ├─ deviation detection (max_deviation_bps) │ │
│ │ ├─ confidence scoring (0-100) │ │
│ │ └─ failover (min 1 source) │ │
│ └───────────────────┬──────────────────────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ OracleService │ │
│ │ ├─ latest_prices: HashMap<String, PriceData> │ │
│ │ ├─ encode_oracle_calldata() → ABI bytes │ │
│ │ └─ keccak256 ← sha3 crate (修复!) │ │
│ └───────────────────┬──────────────────────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Operator Priority Transaction │ │
│ │ State Keeper → OracleHub.batchUpdatePrices() │ │
│ │ (替代 bootloader memory slot 注入) │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘注入方式变更(关键架构决策)
模块结构
PriceSource Trait
数据源实现
CoinGecko
Binance
Mock (测试)
聚合策略
配置扩展
当前 (baby-chain.toml)
改为
SymbolConfig 结构
keccak256 修复
新增依赖
测试策略
单元测试 (~15)
集成测试 (~3)
文件清单
新建文件
文件
用途
修改文件
文件
改动
暂不修改(后续任务)
文件
原因
交付计划
任务
内容
预估
Last updated