Arc メインネット API
ここはテストネットのサイトです
ブロック 0 からインデックス済み
チェーン 5042 はジェネシスブロックから欠けなくインデックスされ、背後のノードは全履歴を保持しています。どのブロックも、どのトランザクションも、どのレシートも、どの残高も、チェーンの始まりまで遡れます。
鵜呑みにする必要はありません。1 回の呼び出しがそれを述べており、下の数値はその呼び出しから読み取ったものです。
/v1/chain から読み取り、更新は最短で 1 時間に 1 回です。
ベース URL
ベース URL は 1 つだけ、これです。
https://api-testnet.arc-scan.ioブラウザから直接呼び出せます。レスポンスには access-control-allow-origin: * が 付き、GET・HEAD・OPTIONS が許可されています。ETag、レート制限のヘッダー、X-Request-Id を公開しているため、クライアントは推測せずに読み取れます。ただしこの三つのメソッドだけで、ブラウザから POST は送れません。そのため MCP エンドポイントにはこの経路では到達できません。curl、バックエンド、ボット、インデクサーには影響しません。
ここから始める
このページのコマンドはすべて稼働中のサービスに対して実際に実行しており、示している応答はそのとき返ってきた内容です。
何を保持していて、どれだけ新しいか
チェーンの定数、ノードの能力、そしてどのブロックがインデックスされているかの正確な範囲。この 1 回の呼び出しがあれば、このページの他の記述を信用で受け取る必要はありません。
curl -s -H 'User-Agent: my-app/1.0' https://api-testnet.arc-scan.io/v1/chain
返ってきた内容
{ "chain_id": 5042, "name": "Arc", "is_testnet": false, "mainnet_soon": false, "native": { "symbol": "USDC", "decimals": 18 }, "erc20_native": { "address": "0x3600000000000000000000000000000000000000", "decimals": 6 }, "block_time_ms": 506, "finality": "instant", "capabilities": { "ots": false, "ots_search": false, "trace": true, "debug": false, "archive": true, "tx_index": true, "holder_index": true, "verified_source": false, "verified_source_note": "<-- elided -->", "internal_transactions": true }, "index": { "available": true, "streams": [ { "stream": "balances", "genesis_block": 0, "last_contiguous_block": 13849844, "from_block": 0, "to_block": 13849844, "ranges": 1, "blocks_indexed": 13849845, "contiguous_from_genesis": true }, { "stream": "chain", "genesis_block": 0, "last_contiguous_block": 13849856, "from_block": 0, "to_block": 13849856, "ranges": 1, "blocks_indexed": 13849857, "contiguous_from_genesis": true }, { "stream": "traces", "genesis_block": 0, "last_contiguous_block": -1, "from_block": null, "to_block": null, "ranges": 0, "blocks_indexed": 0, "contiguous_from_genesis": false } ], "head_block": 13849856, "chain_blocks_indexed": 13849857, "chain_genesis_block": 0, "chain_first_indexed_block": 0, "covers_chain_from_block": 0, "complete_above_start_block": true, "unindexed_blocks_below_start": 0, "complete": true, "message": null }, "capabilities_note": null, "capabilities_note_phrases": [] }
User-Agent を送ってください
既存の Etherscan 向けコードがすでに出している呼び出し
キーはクエリ文字列に <mono>apikey</mono> として入ります。Etherscan のクライアントがすでに置いている場所です。
curl -s -H 'User-Agent: my-app/1.0' "https://api-testnet.arc-scan.io/api?module=account\ &action=txlist&address=0x03a13352ef67977d1601ec1276e9bc27c0ee7b75\ &startblock=13800000&endblock=13830000&page=1&offset=1&sort=desc\ &apikey=YourApiKeyToken"
返ってきた内容
{ "status": "1", "message": "OK", "result": [ { "blockNumber": "13830000", "timeStamp": "1785842041", "hash": "0x3ae69af3843877c10d1aedde0fb299f0de358a76c4b704f338fc738b5d952ef5", "nonce": "88966", "blockHash": "", "transactionIndex": "0", "from": "0x92Df01DB3C69a49f4c4E694849E44C75D62B6752", "to": "0x03a13352eF67977d1601ec1276e9BC27C0Ee7b75", "value": "0", "gas": "598264", "gasPrice": "40000000000", "isError": "0", "txreceipt_status": "1", "input": "", "contractAddress": "", "cumulativeGasUsed": "348673", "gasUsed": "348673", "confirmations": "2933", "methodId": "0x38aaba3d", "functionName": "open" } ] }
既存の Etherscan 向けコードの移行
1 つのアドレスのトランザクションを CSV で
エクスポートは常に 1 つのアドレスについてのもので、<mono>address</mono> は必須、ブロックまたは日付の範囲はそれを絞り込むだけです。データセットは 4 つ — <mono>transactions</mono>、<mono>internal</mono>、<mono>logs</mono>、<mono>token-transfers</mono> — で、<mono>/v1/export/limits</mono> が上限にぶつかる前に上限を教えてくれます。
curl -s -H 'User-Agent: my-app/1.0' "https://api-testnet.arc-scan.io/v1/export/transactions/csv\ ?address=0x03a13352ef67977d1601ec1276e9bc27c0ee7b75\ &from_block=13800000&to_block=13800010"
返ってきた内容
block_number,block_time_utc,block_timestamp,tx_hash,tx_index,from,to,created_contract,direction,value_raw,value_18dec,fee_raw,fee_18dec,gas_limit,gas_used,effective_gas_price_raw,nonce,tx_type,method_id,input_size,status 13800001,2026-08-04T07:00:48Z,1785826848,0xb244d2791aa392fcc49e2c6bca9df0b6c402da2c1cd322f6356724fb77cc3131,0,0x8031885f93e31676132128557e987a011ff99d27,0x03a13352ef67977d1601ec1276e9bc27c0ee7b75,,in,0,0,13951720000000000,0.01395172,570664,348793,40000000000,141603,2,0x38aaba3d,516,success
新しいブロックはポーリングではなく push で届きます
/v1/stream/head は本物の text/event-stream です。コミットされたブロックごとに 1 件、0.5 秒チェーンでは毎秒約 2 件、それぞれがサーバー自身の時刻を運ぶので消費側でずれを補正できます。接続を開いたままにしておけばブロックが届きます。ポーリングするものも、調整する間隔もありません。
チェーンヘッドを追う
このコマンドは終了しません。以下はライブ接続から 3 秒差で連続して届いた 2 件のイベントです。
curl -N -H 'User-Agent: my-app/1.0' https://api-testnet.arc-scan.io/v1/stream/head
返ってきた内容
event: head data: {"height": 13830746, "hash": "0xc580470583007f827ebfb3098b66d0682528c4ebaca4eb1213ab992c5952e65e", "timestamp": 1785842418, "tx_count": 1, "server_now": 1785842422, "available": true} event: head data: {"height": 13830751, "hash": "0x63d064be03dc0f5d530e10350b8dddd3de2cc8e6dbbffbe59306bb9fdc96c162", "timestamp": 1785842421, "tx_count": 1, "server_now": 1785842422, "available": true}
何を提供しているか
スキーマから生成したものではなく、稼働中のメインネットサービスに対して 1 ルートずつ手で確認しています。サービスが公開しているルートはこれより多く、ここに挙げたものがサポート対象です。
| エンドポイント | 何に答えるか |
|---|---|
/v1/chain | チェーン id、ネイティブトークン、ノードの能力、そして各インデクサーストリームが保持する正確なブロック範囲。 |
/v1/network/status/v1/network/validators | チェーンヘッドとその経過秒数、実測したブロック時間、そして稼働中のバリデータ集合。 |
/v1/blocks/v1/blocks/{ref}/v1/blocks/{ref}/txs | 新しい順のブロック、単一ブロック、そしてその中のトランザクション。すべてのブロックが提案したバリデータを明示します。 |
/v1/txs/v1/txs/{hash}/v1/txs/{hash}/trace/v1/txs/{hash}/raw | 新しい順のトランザクション、ステータスと revert 理由を含む単一トランザクション、そのトランザクションについて復元した内部呼び出しフレーム、そしてその背後にある無加工のノードオブジェクト。 |
/v1/address/{addr}/v1/address/{addr}/txs/v1/address/{addr}/logs/v1/address/{addr}/activity | 残高と活動を伴うアドレス、送受信したトランザクション、発行したログ、そしてそのアドレスに触れたすべてを 1 本にまとめた時系列。 |
/v1/address/{addr}/tokens/v1/address/{addr}/facts/v1/address/{addr}/contract | アドレスが保有するトークン残高、どこから資金を得たか、最初と直近の活動時刻、そしてコントラクトであればデプロイ済みバイトコード。 |
/v1/tokens/{addr}/v1/tokens/{addr}/holders/v1/tokens/{addr}/transfers | 1 つのトークンのオンチェーン事実、残高順の保有者、そして送金履歴。 |
/v1/approvals/{addr} | アドレスが与えて取り消していない ERC-20・ERC-721・ERC-1155 の承認すべて。 |
/v1/search/v1/search/suggest | 高さ・ハッシュ・アドレス・トークンの解決と、入力中のサジェスト。 |
/v1/stats/summary/v1/stats/gas/v1/stats/tx-history | ネットワーク概要、ガス統計、そして完全な UTC 日単位の日次トランザクション履歴。 |
/v1/charts/v1/charts/{metric}/v1/charts/{metric}/csv | 24 の日次指標のカタログ。それぞれ JSON でも CSV でも読めます。 |
/v1/explore/* | チェーン全体の一覧: アカウント、コントラクト、トークン、トークン送金、アドレスラベル、名前のついた主体のディレクトリ、そして選んだ区間のトップ統計。 |
/v1/filter/limits/v1/filter/transactions/v1/filter/token-transfers | アドレス・メソッド・金額・資産・ステータス・範囲でトランザクションとトークン送金を照会します。制限ルートが、ぶつかる前に境界を教えてくれます。 |
/v1/export/limits/v1/export/resolve/v1/export/{dataset}/csv | トランザクション・内部トランザクション・ログ・トークン送金の CSV、および日付範囲をブロック範囲へ対応づけるルート。エクスポートは常に 1 つのアドレスについてのものです。address は必須で、範囲はそれを置き換えるのではなく絞り込みます。 |
/v1/actions/categories | トランザクションが実際に何をしたかを分類するためのカテゴリ。 |
/v1/stream/head | コミットされたブロックごとに 1 件のサーバー送信イベント。各々がサーバーの時刻を運ぶので、消費側でずれを補正できます。 |
Etherscan 形式の面
1 つのパスで、クエリ文字列の module と action により振り分けます。応答はすべて HTTP 200 なので、厳格なクライアントライブラリがステータスコードで壊れることはありません。GET と form-encoded の POST の双方を受け付け、module=proxy は 13 の JSON-RPC メソッドをノードへそのまま通します。
| module | action | 何に答えるか |
|---|---|---|
account | balance | ネイティブ残高、小数 18 桁の整数文字列 |
account | balancemulti | 1 回の呼び出しにつき最大 20 アドレス |
account | txlist | あるアドレスが送受信したトランザクション。インデックスから読み出します |
account | tokentx | 走査済みウィンドウから提供。startblock と endblock が必要ですこのチェーンではトークン名・シンボル・小数桁のフィールドは空で返ります。桁数は送金レコードではなくトークンルートから読んでください。 |
account | tokenbalance | 本物の ERC-20 クエリ。コントラクト自身の小数スケールを返します |
account | addresstokenbalance | 1 つのアドレスが保有するすべてのトークン残高 |
block | getblockreward | blockReward はトランザクション手数料の合計です。発行もアンクル報酬もありません |
block | getblocknobytime | 高さに対する二分探索。不変で恒久的にキャッシュされます |
block | getblockcountdown | 定数ではなく実測のブロック時間を使用します |
transaction | getstatus | 実行ステータス |
transaction | gettxreceiptstatus | レシートステータス |
logs | getLogs | 範囲は上限付き。範囲外の要求には最大スパンを明示して応答します |
contract | getabi | Arcscan で検証済みのコントラクトの ABIこのチェーンでは検証済みのコントラクトがまだ 1 つも無いため、getabi は NOTOK を、getsourcecode は空のレコードを返します。デプロイ済みバイトコードはいずれの場合も提供されます。 |
contract | getsourcecode | 検証済みのソース、コンパイラ設定、ABIこのチェーンでは検証済みのコントラクトがまだ 1 つも無いため、getabi は NOTOK を、getsourcecode は空のレコードを返します。デプロイ済みバイトコードはいずれの場合も提供されます。 |
token | tokenholderlist | 1 つのトークンの保有者と残高 |
stats | tokensupply | 総供給量。コントラクトから読み取ります |
stats | ethsupply | ネイティブ供給量、小数 18 桁の整数文字列 |
stats | ethprice | ガストークンは構造上ドルなので、1.00 を返します |
stats | dailytxnfee | 完全な UTC 1 日ごとの取引手数料の合計 |
stats | dailynewaddress | 完全な UTC 1 日ごとに初めて現れたアドレス |
proxy | eth_* | ブロック、トランザクション、call、code、storage、gas、raw 送信の各メソッド |
レート制限、エラー、ページング
レート制限
公開の呼び出し元には 300 リクエストのバーストがあり、毎秒 60 の速度で補充されます。すべての応答が現在位置を伝え、拒否は HTTP 429 で retry-after を伴います。
バケットは当方のエッジから見た呼び出し元アドレスを鍵にしているため、1 つの NAT や 1 つのクラウド送信元アドレスを共有する呼び出し元は同じバケットを分け合います。
x-ratelimit-limit: 300 x-ratelimit-remaining: 299
エラー
/api では拒否も HTTP 200 で、status が 0、result に理由の一文が入ります。404 になることはないので、厳格なクライアントライブラリがそれで壊れることはありません。
/v1 では不正と判定されたリクエストは、エッジを経て 400 ではなく 404 として返ります。ルートが存在しないと結論づける前にパラメータを確認してください。
ページング
一覧系ルートはカーソルページングです。応答に page.next が入っており、それを cursor として送り返すと次のページが返ります。ページサイズの上限は 100 です。
この API が答えないこと
ぶつかってから気づくのではなく、あらかじめ回避できるように公開しています。
内部トランザクション
1 件のトランザクションについて尋ねれば、その内部呼び出しが得られます。単一トランザクションのトレースルートは 200 と実際のフレームを返し、account/txlistinternal も txhash を渡せば同じフレームを返します。アドレスやチェーン全体について尋ねると、代わりに拒否が返ります。この配備では Arcscan 自身のトレースインデックスにブロックが 1 つも入っていないからです。/v1/explore/internal-txs は欠けている能力を明示して 501 CAPABILITY_UNAVAILABLE を返し、address で引いた account/txlistinternal は理由を述べて拒否し、internal の CSV エクスポートはヘッダーだけで行がありません。これは気づける拒否であって、気づけない短い一覧では決してありません。状態変化は別の欠落です。単一トランザクションの状態ルートは今も 501 を返します。状態差分はトランザクションをそのブロック直前の状態に対して実行し直さなければ得られず、このチェーンを読んでいるエンドポイントがその呼び出しを提供していないからです。
ログ照会 1 回が届く範囲
logs/getLogs はチェーン 5042 で応答し、1 回あたり最大 10,000 ブロックまでです。それを超えた要求は上限を明示して拒否され、範囲の一部だけを黙って返すことはありません。account/tokentx も応答し、startblock と endblock が必要で、最大 200,000 ブロックまでです。どちらの上限も当方自身のインデックスには適用されず、より広い問いはそちらで答えます。アドレス単位はアドレスのログルート、トークン単位はトークン送金ルート、チェーン全体は /v1/explore/token-transfers です。
検証済みソース
当方の検証プロバイダがチェーン 5042 を対象にしていないため、今日ここに検証済みのコントラクトはなく、それが変わるまで検証もできません。デプロイ済みバイトコード、生成バイトコード、コントラクトの作成者はそれとは無関係に提供されます。
オフチェーンのデータ
オラクル価格も、時価総額も、ロゴも、ウェブサイトも、人手で整備した取引所ラベルもありません。私たちが公開するアドレスラベルは、チェーンのデータから証明できるもの — バリデータ、システムコントラクト、デプロイを見届けたコントラクト — であり、推測によるものが加わることはありません。
拒否で答えるアクション
1 つの汎用エラーではなく、それぞれが自分の理由を result に載せて返します。
contract.getcontractcreation- チェーン 5042 の背後のノードは otterscan 名前空間を公開していません。コントラクトの作成者と作成トランザクションはアドレスのコントラクトルートにあります。
account.getminedblocks- Arc には採掘もブロック報酬もありません。ブロックは輪番の BFT バリデータ集合が提案し、ブロック内の唯一の価値はその取引手数料です。提案者の列にもインデックスが無いため、全表走査なしには答えられません。代わりにブロックのルートがバリデータを明示します。
account.tokennfttx- ERC-721 の送金はインデックスされていますが、アドレス単位ではありません。送金テーブルに送信者・受信者のインデックスが無いため、アドレスで絞り込むと全走査になります。トークン単位とチェーン全体では読めます。
account.token1155tx- ERC-1155 も同様です。
account.addresstokennftbalance- 私たちの残高ストリームは代替可能な残高だけを保持します。トークンと保有者の組ごとに 1 つの数量で、token id の次元が無いため、NFT の保有一覧を読み出せません。同じ問いの ERC-20 版には答えがあります。
token.tokeninfo- このアクションのフィールドの大半はオフチェーンです。価格、時価総額、ウェブサイト、ソーシャルリンク。Arcscan はオフチェーンのトークンデータを保持せず、価格オラクルも参照しません。オンチェーン側の半分 — 名称、シンボル、小数桁、総供給量、保有者数 — はトークンのルートが提供します。
contract.verifysourcecode- 検証は Etherscan の平坦化ソース用フォームフィールドを受け付けません。Solidity の標準 JSON を検証ページから送信してください。そのルートが到達できる場所はそこです。
キーを申し込む
サービス自身のスキーマから生成した、ルート単位の完全なリファレンスは API ドキュメントのページにあります。