跳至内容

Gateway 提供对多个区块链网络的标准化访问,支持钱包管理、交易执行以及节点 RPC 交互。每个链的集成都经过定制,以处理该区块链特有的需求和功能。

Gateway 当前支持以下区块链架构:

以太坊

Gateway 的以太坊集成功能支持以太坊主网以及所有兼容 EVM 的一层和二层区块链作为网络。这些网络共享相同的基础架构,从而实现对钱包、交易和智能合约交互的统一处理。

网络 描述 链 ID 原生代币
mainnet 以太坊主网 1 ETH
arbitrum Arbitrum One 42161 ETH
optimism Optimism 10 ETH
base Base 8453 ETH
polygon Polygon 137 MATIC
bsc BNB 链 56 BNB
avalanche Avalanche C-Chain 43114 AVAX
celo Celo 42220 CELO
sepolia Sepolia(测试网) 11155111 ETH

链配置

每个链和网络都可以通过 YAML 配置文件在 Gateway 中进行配置:

  • 模板:/src/templates/chains/ethereum.yml
  • 用户配置位置:/conf/chains/ethereum.yml
defaultNetwork: mainnet
defaultWallet: '<ethereum-wallet-address>'

网络配置

  • 模板:/src/templates/chains/ethereum.yml
  • 用户配置文件:/conf/chains/ethereum/mainnet.yml
chainID: 1
nodeURL: https://eth.llamarpc.com
nativeCurrencySymbol: ETH
minGasPrice: 0.1

API 端点

所有 EVM 链共享相同的 API 结构:

  • GET /chains/ethereum/status - 链连接状态和区块信息
  • GET /chains/ethereum/tokens - 代币信息
  • POST /chains/ethereum/balances - 钱包余额
  • POST /chains/ethereum/allowances - 代币授权额度
  • POST /chains/ethereum/approve - 授权代币支出
  • POST /chains/ethereum/wrap - 封装原生代币
  • POST /chains/ethereum/unwrap - 解封装为原生代币
  • POST /chains/ethereum/poll - 查询交易状态
  • POST /chains/ethereum/estimate-gas - 估算交易 Gas 费用

Solana

网关的 Solana 集成提供了对 Solana 区块链及其他使用 Solana 虚拟机网络的访问。

网络 描述 原生代币
mainnet-beta Solana 主网 SOL
devnet Solana 开发网(测试网) SOL

链配置

每个链和网络都可以通过 YAML 配置文件在 Gateway 中进行配置:

  • 模板:/src/templates/chains/solana.yml
  • 用户配置文件位置:/conf/chains/solana.yml
defaultNetwork: mainnet-beta
defaultWallet: '<solana-wallet-address>'

网络配置

  • 模板:/src/templates/chains/solana.yml
  • 用户配置文件:/conf/chains/solana/mainnet-beta.yml
nodeURL: "https://api.mainnet-beta.solana.com"
commitment: "confirmed"
skipPreflight: false
preflightCommitment: "confirmed"
maxFee: 0.01
priorityFee: 0.00001

API 端点

所有 Solana 网络共享相同的 API 结构:

  • GET /chains/solana/status - 链连接状态和时隙信息
  • GET /chains/solana/tokens - SPL 代币信息
  • POST /chains/solana/balances - 钱包 SOL 和代币余额
  • POST /chains/solana/poll - 查询交易状态
  • POST /chains/solana/estimate-gas - 估算交易费用

链结构定义

网关在所有支持的区块链上实施标准化的链操作结构。这些结构定义了常见区块链操作的请求和响应格式。

状态检查

返回链连接状态以及当前区块/时隙信息。

请求结构:

{
  "network": "string (optional)" // Network identifier (e.g., "mainnet", "mainnet-beta")
}

响应结构:

{
  "chain": "string",           // Chain name (e.g., "ethereum", "solana")
  "network": "string",         // Network identifier
  "rpcUrl": "string",          // Current RPC endpoint
  "currentBlockNumber": 12345, // Current block number or slot
  "nativeCurrency": "string"   // Native token symbol (e.g., "ETH", "SOL")
}

代币信息

获取代币元数据,包括地址和小数位数。

请求结构:

{
  "network": "string (optional)",           // Network identifier
  "tokenSymbols": "string | string[] (optional)" // Single symbol or array of symbols/addresses
}

响应结构:

{
  "tokens": [
    {
      "symbol": "string",   // Token symbol
      "address": "string",  // Token contract address
      "decimals": 6,        // Token decimals
      "name": "string"      // Token full name
    }
  ]
}

余额查询

获取钱包的原生资产及指定代币的余额。

请求结构:

{
  "network": "string (optional)",      // Network identifier
  "address": "string (optional)",      // Wallet address to query
  "tokens": ["string"] (optional)",    // Array of token symbols or addresses
  "fetchAll": false                    // Fetch all tokens in wallet, not just those in token list
}

响应结构:

{
  "balances": {
    "TOKEN_SYMBOL": 1234.56  // Token symbol/address as key, balance as number
  }
}

交易轮询

轮询已提交交易的状态。

请求结构:

{
  "network": "string (optional)",         // Network identifier
  "signature": "string",                  // Transaction signature/hash
  "tokens": ["string"] (optional)",       // Token symbols/addresses for balance change calculation
  "walletAddress": "string (optional)"    // Wallet address for balance change calculation
}

响应结构:

{
  "currentBlock": 12345,              // Current block number
  "signature": "string",              // Transaction signature
  "txBlock": 12340 | null,            // Block where transaction was included
  "txStatus": 0 | 1 | -1,             // 0=PENDING, 1=CONFIRMED, -1=FAILED
  "fee": 0.001 | null,                // Transaction fee paid
  "tokenBalanceChanges": {            // Optional: token balance changes
    "TOKEN": 100.5                    // Change amount for each token
  },
  "txData": {} | null,                // Additional transaction data
  "error": "string (optional)"        // Error message if failed
}

Gas/费用估算

估算网络上的交易费用。

请求结构:

{
  "network": "string (optional)"  // Network identifier
}

响应结构:

{
  "feePerComputeUnit": 0.000001,  // Fee per compute unit or gas unit
  "denomination": "string",       // Unit denomination ("lamports" for Solana, "gwei" for Ethereum)
  "computeUnits": 200000,          // Default compute units/gas limit used for calculation
  "feeAsset": "string",            // Native currency symbol (ETH, SOL, etc.)
  "fee": 0.002,                    // Total estimated fee using default limits
  "timestamp": 1234567890          // Unix timestamp of estimate
}

交易状态枚举

所有链都使用标准化的交易状态枚举:

  • 0 = 待确认:交易已提交但尚未确认
  • 1 = 已确认:交易已在链上成功确认
  • -1 = 失败:交易失败或被拒绝

添加新网络

网关的模块化架构使其易于添加对新的 EVM 和 SVM 基础区块链网络的支持。

  1. 创建网络配置文件:

    # /conf/chains/ethereum/mynetwork.yml
    nodeURL: "https://rpc.mynetwork.com"
    chainId: 12345
    nativeCurrencySymbol: "MYT"
    minGasPrice: 0.1
    

  2. 添加代币列表: 创建 /conf/tokens/ethereum/mynetwork.json 文件并包含支持的代币

  3. 更新连接器 更新每个支持的连接器的配置文件(例如 uniswap.config.ts),以包含新网络