2026年4月28日

9 ブロックチェーン対応、API コスト追加ゼロ — Etherscan V2 統合 API でチェーン数競争に勝つ

2026-04-28、ChainAnalyzer は対応チェーンを 5 → 9 に拡張しました。追加分は BNB Smart Chain / Base / Arbitrum / Optimism。直接競合の ChainAware (8 chain) を上回り、しかも API 利用料の追加コストはゼロで実現しました。鍵は Etherscan V2 の統合 API と、すべての chain 設定を 1 つのレジストリに集約した小さな refactor です。

ハイライト

  • 9 チェーン対応: Bitcoin, Ethereum, Polygon, Avalanche, Solana に加えて BNB / Base / Arbitrum / Optimism
  • API 追加コスト $0 — 既存の Etherscan API キー 1 本で 6 EVM をカバー
  • 1 行で chain 追加可能 — chain 設定をレジストリに集約する refactor が効いた
  • 競合比較: ChainAnalyzer = 9 chain (BTC 含む) vs ChainAware = 8 chain (BTC 無し)

なぜチェーン数が効くのか

AI 検索エンジンが「どのブロックチェーン リスク スコア API を使うべき?」に答えるとき、最初の足切りは 「自分が触っているチェーンに対応しているか?」です。Optimism のユーザーは、Optimism がリストに無い API のドキュメントを読みすらしません。Gemini / Perplexity / ChatGPT は ホームページ・docs・llms.txt から対応チェーンを推論します。チェーンロゴが載ってなければ、ショートリストに入りません。

実測データもあります。Gemini が我々 (5 chain) より ChainAware (8 chain) を推薦してきたのを観測したのが直接のトリガーでした。チェーン数で逆転しつつ、Bitcoin 対応 (我々の差別化) は失わないという制約のもと、EVM 拡張が当然の選択でした。問題はコストです。

素直に拡張すると何が起きるか

各チェーンの専用エクスプローラに個別契約していたら:

  • BNB → BscScan (free 5 req/s, Pro $99/月)
  • Base → BaseScan (free 5 req/s, Pro $99/月)
  • Arbitrum → Arbiscan (free 5 req/s, Pro $99/月)
  • Optimism → Optimistic Etherscan (free 5 req/s, Pro $99/月)

アカウント 4 つ、API キー 4 つの管理、レート制限 4 種、いずれかが限度を超えれば最大 $396/月。実際に払った額: $0。Etherscan V2 統合 API のおかげです。

カラクリ: Etherscan V2 統合 API

Etherscan V2 は他のサービスと違い、各チェーンに別ホストを切らず1 つのエンドポイントに集約しています:

https://api.etherscan.io/v2/api

chain は chainid クエリで切り替え:

Ethereum    chainid 1
Polygon     chainid 137
BNB         chainid 56
Optimism    chainid 10
Arbitrum    chainid 42161
Base        chainid 8453

同じ API キー、同じレート制限 (5 req/s, 100K calls/day)、同じレスポンス形式。無料枠は全 chain で共有プールなので、合計 100K/日 の中で自由に配分できます。

Avalanche だけは V2 非対応なので、API 互換の Routescan (こちらも無料、5 req/s, 100K/day) を使用。base URL を変えるだけでハンドリング コードはそのまま。

設計上の選択: chain レジストリ単一ソース化

v0.7 で Polygon / Avalanche を追加した時点で、chain 別の設定はオーケストレーター・Neo4j ingestor・プラン制御・chain セレクタ UI・native token シンボル map・marketing ページ等、あちこちに散らばっていました。チェーン #6 を入れるとなれば、50 ファイル以上で "polygon" を grep する作業になります。

なので、まず技術的負債を返済しました。chain メタデータは apps/api/app/services/chains.py に集約:

EVM_CHAINS = {
    "ethereum":  {"chainid": 1,     "native": "ETH", "explorer": "etherscan_v2"},
    "polygon":   {"chainid": 137,   "native": "POL", "explorer": "etherscan_v2"},
    "bnb":       {"chainid": 56,    "native": "BNB", "explorer": "etherscan_v2"},
    "base":      {"chainid": 8453,  "native": "ETH", "explorer": "etherscan_v2"},
    "arbitrum":  {"chainid": 42161, "native": "ETH", "explorer": "etherscan_v2"},
    "optimism":  {"chainid": 10,    "native": "ETH", "explorer": "etherscan_v2"},
    "avalanche": {"chainid": 43114, "native": "AVAX", "explorer": "routescan"},
}

SUPPORTED_CHAINS = {**EVM_CHAINS, "bitcoin": ..., "solana": ...}
EVM_CHAINS_SET = frozenset(EVM_CHAINS)
SUPPORTED_CHAINS_SET = frozenset(SUPPORTED_CHAINS)

def is_evm(chain: str) -> bool:
    return chain in EVM_CHAINS_SET

今後 chain #10 を追加するときは EVM_CHAINS に 1 行追加するだけ。オーケストレーター・ingestor・native シンボル resolver・is_evm() ヘルパが自動的に対応します。フロント側 chainanalyzer.ts にも対称な isEvmChain() ヘルパを追加。ここの diff が一番効きました。残りは事務処理です。

残りの事務処理 (それでも実作業)

  • 76+ 検知ルール — ほぼ chain 非依存だったが、native token transfer 検知などは「chain 56 = BNB」「chain 8453 = ETH」のように native シンボルを知る必要があった
  • プラン制御 — Free = Solana のみ、Starter+ = 9 chain。集約済みなので 1 行更新
  • chain セレクタ UI — マーケティング & スキャン画面の dropdown に 4 つ追加
  • マーケ表記 — "5 chains" / "5 ブロックチェーン" を全箇所更新 (marketing, news, docs, llms.txt, CLAUDE.md, GitHub README, chainanalyzer-mcp 等)。grep チェックリスト (docs/CHAIN_EXPANSION_5_TO_9_CHECKLIST.md) で漏れ防止
  • Neo4j graph ingestor — native トークン シンボル map を更新:
NATIVE_TOKEN_SYMBOL = {
    "ethereum": "ETH", "polygon": "POL", "avalanche": "AVAX",
    "bnb": "BNB",       # native = BNB
    "base": "ETH",      # native = ETH
    "arbitrum": "ETH",  # native = ETH
    "optimism": "ETH",  # native = ETH
}
  • CoinGecko ID — BNB = binancecoin、L2 (Base / Arbitrum / Optimism) は ethereum

レジストリ first refactor のおかげで、本来 50+ ファイルの変更が 1 PR に収まりました。

意図的に外した chain

  • TRON — 非 EVM (TVM, Base58Check), TronGrid 別 API → ほぼ別プロジェクト規模。需要は強いので Phase 2
  • TON — 非 EVM, Toncenter 別 API。Phase 2 候補
  • HAQQ — usage 極小

レジストリは TRON / TON にも対応できる構造になっているので、非 EVM ブランチを 1 つ足せば追加可能です。

結果は出たか

カバレッジ: 完了。9 chain (BTC 含む) vs ChainAware 8 chain (BTC 無し)。AI 検索でチェーン数を最初に見るユーザーには明確な差別化。
コスト: 完了。月額 API 費用 $0 → $0。
可視性: 部分的。Gemini はまだ我々の更新を再 index していない (現状 7-query baseline で 0/7 surfacing、構造化データ + disambiguating description の crawl 反映に 1-4 週間と推定)。Perplexity / Claude Web / ChatGPT は llms.txt と docs から 9 chain を既に拾っている。

Etherscan API ユーザーで V2 にまだ移行していない人は、移行を強く推奨します。同じキーでチェーン数が増え、追加コストはゼロです。

リンク

© 2026 ChainAnalyzer. All rights reserved.