Skip to content

00. 适配层架构 (Overview)

Code: src/services/chain-adapter/

为了支持多链 (EVM, UTXO, TVM),KeyApp 引入了一个抽象层,称为 Driver Layer (或 HAL)

核心概念

1. ApiProvider (Driver)

每个 Provider 代表一个特定的数据源驱动。

  • 例如:EtherscanProvider, EvmRpcProvider, MempoolProvider
  • 职责:负责与具体的后端 API 通信,并规范化数据格式。

2. ChainProvider (Manager)

每个链 (chainId) 拥有一个 ChainProvider 实例。

  • 职责:聚合该链配置下的所有 ApiProvider
  • 策略:实现 Fallback 逻辑。如果 Etherscan 挂了,自动切换到 RPC。

3. Registry (Factory)

负责根据 default-chains.json 的配置,动态实例化对应的 Providers。

架构图

mermaid
graph TD
    User[UI / WalletStore]
    
    subgraph "ChainProvider (Manager)"
        LB[Load Balancer / Fallback]
    end
    
    subgraph "Drivers"
        P1[Etherscan Provider]
        P2[RPC Provider]
        P3[WalletAPI Provider]
    end
    
    subgraph "External World"
        API1[api.etherscan.io]
        API2[infura.io]
        API3[walletapi.bfmeta.info]
    end
    
    User --> LB
    LB --> P1 & P2 & P3
    P1 --> API1
    P2 --> API2
    P3 --> API3

Released under the MIT License.