Altscan explorers について
Altscanは、1つのコードベースからBNB ChainとEthereumのエクスプローラーを提供するオープンソースのマルチチェーン基盤です。ブロック、トランザクション、アドレス、トークン、分析機能、REST APIを利用する開発者やチェーンデータの閲覧者向けです。
主な機能
- 01ブロック・トランザクション・アドレス・トークンの閲覧
- 02アドレス・トランザクションハッシュ・ブロック番号の検索
- 03DEX取引・大口送金・ガスデータの確認
- 04類似トークンの表示とコントラクト状態の確認
- 05REST API・Webhook・CSVエクスポート
活用シーン
- 01BNB ChainまたはEthereumの取引とトークン送金の確認
- 02アドレスの保有資産・NFT・履歴の確認
- 03APIでオンチェーンデータを照会し、アドレスの取引を出力
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://altscan.io/mcpclaude mcp add --transport http io-altscan-explorers https://altscan.io/mcp{"mcpServers":{"io-altscan-explorers":{"type":"http","url":"https://altscan.io/mcp"}}}Cursor で開く{"servers":{"io-altscan-explorers":{"type":"http","url":"https://altscan.io/mcp"}}}VS Code で開く{"mcpServers":{"io-altscan-explorers":{"type":"http","url":"https://altscan.io/mcp"}}}{"mcpServers":{"io-altscan-explorers":{"serverUrl":"https://altscan.io/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Altscan
オープンソースのマルチチェーンブロックエクスプローラープラットフォームです。
1 つのコードベースで、現在はBNB ChainとEthereumの独立したエクスプローラーを提供しており、今後さらにチェーンを追加できるように構築されています。
Next.js 15、Drizzle ORM、ethers.js を採用しています。Measurable Data Token (MDT)がメンテナンスしています。
altscan.io | bnbscan.com | ethscan.io
これは何ですか?
Altscanは、オープンソースのマルチチェーンブロックエクスプローラープラットフォームです。1 つのコードベースで、現在は 2 つの独立したエクスプローラー、BNBScan(bnbscan.com、BNB Chain)とEthScan(ethscan.io、Ethereum)を提供しており、今後さらにチェーンを追加できるように設計されています。これらは BscScan、Etherscan、Binance、Ethereum Foundation から完全に独立しており、ブロック、トランザクション、アドレス、トークン、オンチェーンアクティビティを快適かつ高速に閲覧できます。
CHAIN環境変数 1 つで、デプロイ先が提供するチェーンを選択できます。フロントエンド、インデクサー、スキーマは共通です。
スクリーンショット
| EthScan のホームページ(ダークモード) | ブロック |
|---|---|
![]() | ![]() |
| トランザクション | アドレス |
|---|---|
![]() | ![]() |
| トークン | ステータスページ |
|---|---|
![]() | ![]() |
2026 年 10 月 12 日に本番環境から取得しました。スポンサー枠はオフにしてあります。
機能
エクスプローラー機能
- ブロックテープ — ホームページおよびブロック、トランザクション、アドレス、分析ページに、最新のブロックをライブ表示します(幅はトランザクション数、塗りつぶしは使用ガス量を表します)
- ブロック — バリデーター、ガス、トランザクション数を含む最新のブロックを表示します。各ブロックページにはそのブロックのトランザクションが一覧表示されます
- トランザクション — 発生した内容の概要、手数料の内訳、ログ、トークンと NFT の転送を1行で表示します。トレースエンドポイントを設定している場合は内部トランザクションも表示されます(デフォルトでは無効)
- アドレス — 残高と追跡対象トークンの保有状況、台帳形式のトランザクション履歴、トークン転送、NFT を表示します
- トークン — 市場データ、保有者、転送を含む ERC-20 / BEP-20 ページを表示します。類似文字(ホモグリフ)を使ったトークンにはラベルが付きます
- 検索 — アドレス、トランザクションハッシュ、ブロック番号、トークン名またはシンボルを検索します
分析
- DEX 取引 — Uniswap V2 形式のスワップを表示します(BNB Chain では PancakeSwap V2、Ethereum では Uniswap V2)。V3 形式のプールはインデックス化されません
- クジラトラッカー — 過去1時間、過去1日、または保持期間全体における、ネイティブトークン、ラップドトークン、ステーブルコインの大口転送を表示します
- ガストラッカー — 最近のブロックのパーセンタイルに基づいて、低速、標準、高速のガス価格を表示します
- ネットワークチャート — トランザクション数、生成されたブロック数、(Ethereum では)平均ベースフィーを表示します。インデックスに丸3日分のデータが蓄積されるまでは、時間単位で表示します
- バリデーター(BNB Chain)— 投票権、コミッション、過去24時間に生成されたブロック数とともに、バリデーターセットを表示します
開発者ツール
- REST API — v1 クエリ API、ウォレットでメッセージに署名して発行するオプションの API キー、Webhook を提供します
- CSV エクスポート — アドレスについてローカルでインデックス化された最新の1,000件のトランザクションをエクスポートします
- コントラクトのステータス — コントラクトが Sourcify で検証済みかどうかを表示します。sourcify.dev で新しいソースを検証できます
その他
- ダークモードはシステム設定に連動し、スマートフォン向けにレイアウトされています
- ウォッチリスト — ブラウザーにアドレスを保存します(アカウント不要。データがデバイスの外に送信されることはありません)
- ネットワーク切り替え — もう一方のチェーンに対応する姉妹エクスプローラーへのリンクを表示します
- ステータスページ — status.altscan.io で、ホストされているエクスプローラーの稼働時間、ブロックの遅延、応答時間を確認できます
アーキテクチャ
altscan/
├── apps/
│ ├── explorer/ Unified Next.js 15 frontend + API routes
│ │ CHAIN=bnb → bnbscan.com
│ │ CHAIN=eth → ethscan.io
│ ├── indexer/ Unified block indexer (direct polling loop)
│ │ CHAIN=bnb → indexes BNB Chain
│ │ CHAIN=eth → indexes Ethereum
│ ├── status/ Hono status page for the hosted explorers
│ │ Polls /api/health on bnbscan.com and ethscan.io
│ ├── altscan-site/ altscan.io umbrella site (Astro on Cloudflare Workers)
│ └── admin/ Operator console behind Cloudflare Access (Astro on Cloudflare Workers)
├── packages/
│ ├── chain-config/ getChainConfig() — chain-specific config
│ ├── db/ Drizzle ORM schema + Postgres client
│ ├── explorer-core/ Shared utils (rate limiting, formatting, Redis cache)
│ ├── providers/ Third-party data adapters (Moralis) and their spend budgets
│ ├── settings-schema/ Runtime settings shared by the explorer and the admin console
│ └── types/ Shared TypeScript types
├── render.yaml Render blueprint for the hosted explorers
├── docker-compose.yml Self-host stack: Postgres, Redis, indexer, explorer
├── turbo.json Turborepo pipeline config
└── pnpm-workspace.yaml
技術スタック
| レイヤー | 技術 |
|---|---|
| フロントエンド | Next.js 15 (App Router)、React 19、Tailwind CSS 3 |
| バックエンド | Next.js API ルート、Hono(ステータスページ) |
| データベース | PostgreSQL(Drizzle ORM 経由) |
| インデクサー | ethers.js、JSON-RPC(ジョブキューを使用しない直接ポーリングループ) |
| キャッシュ | Redis(レート制限、キャッシュ、Moralis CU 台帳) |
| エッジサイト | Cloudflare Workers 上の Astro(altscan.io、管理コンソール) |
| モノレポ | pnpm + Turborepo |
| ホスティング | Render.com(Web サービス + ワーカー + Postgres + Redis) |
仕組み
- インデクサーはチェーンの JSON-RPC エンドポイントに接続し、新しいブロックをポーリングして、ブロック、トランザクション、トークンのデータを Drizzle ORM 経由で Postgres に書き込みます。
- エクスプローラーは ISR(インクリメンタル静的再生成)を使用して Next.js フロントエンドを提供します。各ページは独自のスケジュール(45秒から5分)で再検証されるため、サーバーに負荷をかけずにデータを最新の状態に保てます。検索など、リクエストに依存するページはリクエストごとにレンダリングされます。
- チェーン設定パッケージでチェーン固有の差異(ブロック時間、通貨、テーマカラー、RPC URL、機能フラグ)を一元管理し、両方のチェーンで同じコードを実行できるようにします。
- ステータスページは、30秒ごとに2つのホスト済みエクスプローラーの
/api/healthエンドポイントをポーリングし、24時間および30日間にわたる稼働時間、ブロックの遅延、応答時間を個別に監視します。監視対象はapps/status/src/server.tsで固定されており、Docker スタックにも Render ブループリントにも含まれません。
はじめに
独自のエクスプローラーを実行する(Docker)
git clone https://github.com/heathermhuang/altscan.git
cd altscan
cp .env.docker.example .env
docker compose up -d
http://localhost:3000 を開きます。Postgres、Redis、インデクサー、エクスプローラーが起動します。
起動時の設定は不要で、インデクサーは初回起動時に独自のスキーマを作成します。
Ethereum を使用する場合は、.env に CHAIN=eth を設定し、--build を付けて再実行します。
Render へのデプロイ、データ保持の調整、制限事項を含む完全なガイド: docs/SELF_HOSTING.md。
Docker を使わずにローカルで開発する
前提条件
- Node.js 22 — CI と Docker イメージで使用されるバージョンです
- pnpm 10 —
package.jsonで固定されています。corepack enableを実行すると正確なバージョンが使用されます - PostgreSQL 16
- Redis 7 — 任意です。
REDIS_URLがない場合、レート制限とキャッシュはプロセスごとのメモリにフォールバックします
インストール
# Clone the repo
git clone https://github.com/heathermhuang/altscan.git
cd altscan
# Install dependencies
pnpm install
# Start Postgres from the Docker stack (localhost:5432; user, password and database all "altscan")
docker compose up -d postgres
# Set up the explorer environment (defaults match the local Docker Postgres)
cp apps/explorer/.env.example apps/explorer/.env.local
# Start the BNB explorer
CHAIN=bnb NEXT_PUBLIC_CHAIN=bnb pnpm --filter @altscan/explorer dev
BNB エクスプローラーは http://localhost:3000 で利用できます。インデクサーは初回起動時にデータベーススキーマを作成するため、データを参照する前に、以下の手順で一度起動してください。空のデータベースに対してエクスプローラーだけを起動しても、読み取るテーブルがありません。pnpm dev は Turborepo を通じて、エクスプローラー、インデクサー、ステータスページ、2 つの Astro サイトを含むすべてのアプリを一度に起動します。
特定のチェーンを実行する
# BNB Chain explorer only
CHAIN=bnb NEXT_PUBLIC_CHAIN=bnb pnpm --filter @altscan/explorer dev
# Ethereum explorer only
CHAIN=eth NEXT_PUBLIC_CHAIN=eth pnpm --filter @altscan/explorer dev -p 3001
# BNB indexer only — build the packages it imports first (see below)
pnpm --filter @altscan/db build && pnpm --filter @altscan/chain-config build && pnpm --filter @altscan/explorer-core build && pnpm --filter @altscan/providers build
CHAIN=bnb pnpm --filter @altscan/indexer dev
# Status page only (monitors the hosted sites)
pnpm --filter @altscan/status dev
CHAIN はサーバーを制御します。NEXT_PUBLIC_CHAIN はクライアントバンドルに埋め込まれるため、両方に同じチェーンを設定してください。インデクサーは環境変数または apps/indexer/.env から設定を読み込みます。少なくとも DATABASE_URL(または ETH_DATABASE_URL)、チェーンの RPC URL、チェーンの最新ブロック付近に設定した START_BLOCK が必要です。組み込みの開始位置は数百万ブロック前です。
エクスプローラーはワークスペースパッケージをソースからコンパイルしますが、インデクサーはビルド済みの dist/ 出力を読み込みます。この出力はコミットされていないため、クローン後に一度ビルドし、変更を加えた後も再度ビルドしてください。
環境変数
デプロイに必要な変数は次のとおりです。apps/explorer/.env.example には任意のプロバイダー上限値が記載されており、docs/SELF_HOSTING.md ではインデクサーのデータ保持とディスク設定について説明しています。
| 変数 | 必須 | 説明 |
|---|---|---|
CHAIN | はい | bnb または eth — 提供・インデックスするチェーンを選択します |
NEXT_PUBLIC_CHAIN | エクスプローラー | CHAIN と同じ値です。ビルド時にクライアントコンポーネントが読み込みます |
DATABASE_URL | CHAIN=bnb | PostgreSQL 接続文字列(BNB Chain) |
ETH_DATABASE_URL | CHAIN=eth | PostgreSQL 接続文字列(Ethereum) |
BNB_RPC_URL | CHAIN=bnb | BSC JSON-RPC エンドポイント。フェイルオーバー用にカンマ区切りのリストも指定できます |
ETH_RPC_URL | CHAIN=eth | Ethereum JSON-RPC エンドポイント。フェイルオーバー用にカンマ区切りのリストも指定できます |
REDIS_URL | 推奨 | Redis 接続文字列です。指定しない場合、レート制限とキャッシュはプロセスごとになります |
MORALIS_API_KEY | いいえ | 残高と NFT の補完に使用する Moralis API |
ADMIN_SECRET | いいえ | /api/admin/* エンドポイント用の Bearer トークンです。未設定の場合、すべてのリクエストが拒否されます |
GA_MEASUREMENT_ID | いいえ | Google Analytics 測定 ID です。未設定の場合、分析スクリプトは読み込まれません |
BINANCE_REF_CODE | いいえ | スポンサー付き Binance 掲載用の紹介コードです。未設定の場合、掲載は表示されません |
無料の RPC エンドポイント
有料の RPC プロバイダーを使わずに始められます。
| チェーン | 無料エンドポイント |
|---|---|
| BNB Chain | https://bsc-dataseed1.binance.org/ |
| Ethereum | https://ethereum-rpc.publicnode.com |
これらは Docker スタックのデフォルトです。どちらも過去のブロックに対する eth_getBlockReceipts を提供しており、インデクサーはこの機能に依存しています(2026 年 10 月に確認)。ほかのエンドポイントを利用する場合も、同じ方法で確認してください。数千ブロック前のブロックのレシートをリクエストしてから利用しましょう。公開 RPC の中には、チェーンの最新ブロックには応答してもこのメソッドに対応していないものや、このメソッドに対して空のリストを返すものがあります。インデクサーは、トランザクションを網羅していないレシートを含むブロックを拒否するため、どちらの場合も処理を進められません。また、無料プランによっては JSON-RPC のバッチサイズに上限があります。eth.drpc.org の無料プランでは 3 件を超えるバッチが拒否されるため、利用する場合はインデクサーで RPC_BATCH_MAX_COUNT=1 を設定してください。
本番環境では、有料の RPC プロバイダーを使用してください。無料エンドポイントは、インデクサーの負荷がかかるとレート制限されます。
API
どちらのエクスプローラーも v1 REST API を公開しています。いずれかのサイトの /api-docs にエンドポイントのリファレンスがあり、/developer ではウォレットでメッセージに署名して API キーを発行する方法を確認できます。キーは任意です。キーなしの呼び出しは IP アドレス単位でレート制限されます。
# Example: query transactions for an address
curl -X POST https://bnbscan.com/api/v1/query \
-H "X-API-Key: bnbs_..." \
-H "Content-Type: application/json" \
-d '{"entity":"transactions","filter":{"address":"0x..."}}'
テスト
pnpm test
すべてのワークスペースで Vitest スイートを実行します。実際の Postgres または Redis を必要とするスイートは、該当する環境変数が設定されていない限りスキップされます。対象のスイートと実行方法はCONTRIBUTING.mdに記載されています。CI では、2 つの保持パーティションスイートを除くすべてのスイートに加え、lint、インデクサーと管理コンソールの型チェック、エクスプローラーの本番ビルドを実行します。
デプロイ
ホスト型エクスプローラーは、render.yaml を使って Render.com 上で稼働しています。各チェーンにつき、Web サービスとインデクサーワーカーが 1 つずつあり、Postgres と Redis を使用します。Docker または Render で独自に実行するには、docs/SELF_HOSTING.md に従ってください。
データ保持
インデクサーは 6 時間ごとにデータ保持処理を実行します。RETENTION_DAYS(デフォルトは 7 日)を過ぎると、ログ、DEX 取引、ガス履歴を削除し、各トランザクションの入力データを削除します。入力データは必要に応じて RPC から再取得されます。トランザクション自体は引き続きクエリできます。COMPACT_RETENTION_DAYS も設定しない限り、トランザクション、トークン転送、ブロックは永久に保持されるため、ブロック履歴の上限を決めるのはこの設定です。addresses テーブルは一切削除されず、チェーンの進行に伴って増加し続けます。docs/SELF_HOSTING.mdを参照してください。
手動でプルーニングするエンドポイントもあります。これは days より古い行を(トランザクションやブロックも含めて)行全体ごと削除し、その後 VACUUM を実行します。まずドライランを実行してください。
curl -X POST "https://your-explorer.example/api/admin/db-prune?days=7&dry=true" \
-H "Authorization: Bearer $ADMIN_SECRET"
既知の制限事項
- ジェネシスアーカイブではありません — インデクサーは開始ブロックから前方に進みます。過去のアドレス履歴やトークン履歴は、ローカルでインデックス化するのではなく、プロバイダーから必要に応じて取得してキャッシュします。完全な履歴アーカイブには別のアーキテクチャが必要です。
- 詳細な履歴の取得には Moralis キーが必要です — キーがない場合、アドレス履歴はローカルでインデックス化されたブロックに限られ、保有者数は注意書き付きの推定値に切り替わります。これが唯一のサードパーティ製商用依存関係です。
- 最新の保有者データは Moralis から取得します — インデクサーの処理性能を高めるため、ブロックごとの保有者追跡は無効になっています。そのため、ローカルに保存された保有者数は更新されないスナップショットであり、UI では「indexed holders」と表示されます。最新の合計数と上位保有者は Moralis から取得します。キーがない場合、保有者リストは最近の送金から算出した推定値となり、注意書きが表示されます。
- 1 回のデプロイで対応するチェーンは 1 つです —
NEXT_PUBLIC_CHAINはビルド時にクライアントバンドルへ埋め込まれるため、チェーンの切り替えには再起動だけでなく再ビルドが必要です。 - 対応チェーンは 2 つです — BNB Chain と Ethereum に対応しています。現在、3 つ目のチェーンを追加するには設定変更ではなくコードの変更が必要です。
- コントラクト検証は Sourcify のみに対応しており、エクスプローラーはソースを受け付けるのではなく、Sourcify の情報を読み取ります。
- 正式なドメインとネットワーク切り替え機能の遷移先は、チェーンごとにコードで定義されています(
packages/chain-config)。そのため、公開フォークではここを編集します。分析機能と紹介広告は、設定しない限り無効です。docs/SELF_HOSTING.md をご覧ください。
コントリビュート
コントリビュートを歓迎します。開発環境のセットアップ、CHAIN モデル、プルリクエストの規約については、CONTRIBUTING.md と 行動規範 をお読みください。
- リポジトリをフォークします
- フィーチャーブランチを作成します:
git checkout -b feat/my-feature - 変更を加え、テストを追加します
- CONTRIBUTING.md に記載されているチェックを実行します
mainを対象にプルリクエストを送信します
初めてコントリビュートする方は、コントリビューターライセンス契約 に同意するため、最初のプルリクエストで CONTRIBUTORS.md に名前を追加してください。ご自身の成果物の所有権は保持できます。CLA はライセンス付与であり、著作権の譲渡ではありません。また、これにより以下で説明する商用ライセンスを提供できます。CI チェックで名前が記載されていることを確認します。
セキュリティ上の脆弱性を見つけましたか? セキュリティポリシー に従ってください。公開の Issue は作成しないでください。
ライセンス
AGPL-3.0 に基づくオープンソース — OSI 承認のライセンスです。誰でも、いつまでも無料で利用できます:
- 実行する — 商用利用や有料サービスを含め、あらゆる目的に利用できます
- フォークする — 変更を加え、フォークを配布できます
- 関連サービスを販売する — ホスティング、サポート、コンサルティング、マネージドデプロイメント、RaaS など
- 付与された権利は取り消し不能です — 公開済みのリリースには AGPL-3.0 が適用され続け、これを取り消すことはできません
AGPL で求められることは 1 つだけです。Altscan を変更し、ネットワーク経由で他の人に提供する場合、そのユーザーにも変更したソースを提供してください。変更せずに実行する場合や、変更を社内にとどめる場合は、何も提供する必要はありません。
AGPL コードを利用できない組織や、保証・サポート条件が必要な組織向けに、商用ライセンスも用意しています。対象範囲と、ソース公開型の代替ライセンスとの条件の比較については、LICENSING.md をご覧ください。
© Measurable Data Token (MDT)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。





