본문으로 건너뛰기

Arc Testnet(체인 5042002)을 보고 있습니다. 여기의 토큰에는 가치가 없습니다.

USDC 가격:$1.0000가스:
Arcscan

Arc 메인넷 API

Arc 메인넷의 모든 블록을 — 제네시스 블록부터 지금 막 제안되고 있는 블록까지 — 타입이 있는 REST API 와, 여러분의 기존 코드가 이미 말할 줄 아는 Etherscan 형태의 API 로 제공합니다.

지금 보고 계신 곳은 테스트넷 사이트입니다

이 페이지는 Arc 메인넷, 체인 5042 에 대한 것입니다. 여기의 모든 라우트·수치·예시는 https://api-testnet.arc-scan.io 를 대상으로 실측한 것입니다. 이를 감싸고 있는 헤더와 푸터는 체인 5042002 를 서비스하는 테스트넷 사이트의 것이며, 아래 내용 중 그 체인을 설명하는 것은 하나도 없습니다. 메인넷 안내로 읽으시고, 호출하기 전에 호스트를 바꾸십시오.

블록 0 부터 인덱싱

체인 5042 는 제네시스 블록부터 빠짐없이 인덱싱되어 있고, 그 뒤의 노드는 전체 이력을 보관합니다. 어떤 블록도, 어떤 트랜잭션도, 어떤 영수증도, 어떤 잔액도, 체인이 시작된 지점까지 거슬러 올라갑니다.

그냥 믿지 마십시오. 호출 한 번이 그것을 말해 주며, 아래 수치는 바로 그 호출에서 읽은 것입니다.

/v1/chain 에서 읽어 오며, 최대 한 시간에 한 번 갱신됩니다.

기본 URL

기본 URL 은 하나이며, 바로 이것입니다.

https://api-testnet.arc-scan.io

브라우저에서 직접 호출할 수 있습니다. 응답에 access-control-allow-origin: *이 포함되며 GET, HEAD, OPTIONS를 허용합니다. ETag, 레이트 리밋 헤더, X-Request-Id를 노출하므로 클라이언트가 추측하지 않고 읽을 수 있습니다. 다만 이 세 가지 메서드만 허용되어 브라우저에서 POST는 보낼 수 없고, 그래서 MCP 엔드포인트는 이 경로로 접근할 수 없습니다. curl, 백엔드, 봇, 인덱서는 영향을 받지 않습니다.

여기서 시작하십시오

이 페이지의 모든 명령은 운영 중인 서비스에 대해 실제로 실행했으며, 표시된 모든 응답은 그때 돌아온 내용입니다.

무엇을 보유하고 있고 얼마나 최신인가

체인 상수, 노드 능력, 그리고 정확히 어떤 블록이 인덱싱되어 있는지. 이 한 번의 호출이면 이 페이지의 나머지를 믿음으로 받아들일 필요가 없습니다.

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 를 보내십시오

User-Agent 헤더에 클라이언트 이름을 넣으십시오. 우리 엣지는 몇몇 기본 에이전트 문자열에 error 1010 으로 응답합니다 — Python-urllib/3.12 는 403 을 받습니다 — 그래서 손대지 않은 HTTP 클라이언트는 우리에게 닿기도 전에 첫 요청에서 실패합니다.

기존 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 코드 옮기기

기본 URL 을 바꾸십시오. apikey 는 쿼리 파라미터로 계속 보내십시오. 그 밖에는 아무것도 바뀌지 않습니다 — 봉투, 문자열로 표현되는 result, 모든 응답의 HTTP 200 은 동일한 계약입니다.

한 주소의 트랜잭션 CSV

모든 내보내기는 하나의 주소에 관한 것이라 <mono>address</mono> 가 필수이며, 블록 또는 날짜 범위는 그것을 좁힐 뿐입니다. 데이터셋은 네 가지 — <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

새 블록은 폴링이 아니라 밀어 보내집니다

/v1/stream/head 는 진짜 text/event-stream 입니다. 커밋된 블록마다 이벤트 하나, 0.5 초 체인에서 초당 약 두 건이며, 각각 서버 자신의 시계를 실어 소비자가 시차를 보정할 수 있게 합니다. 연결만 열어 두면 블록이 옵니다. 폴링할 것도, 조정할 주기도 없습니다.

체인 헤드를 따라가기

이 명령은 끝나지 않습니다. 아래는 실제 연결에서 3 초 간격으로 연달아 온 두 이벤트입니다.

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}

무엇을 제공하는가

스키마에서 생성한 것이 아니라, 운영 중인 메인넷 서비스에 대해 라우트를 하나씩 직접 확인했습니다. 서비스가 공개하는 라우트는 이보다 많으며, 여기 실린 것이 우리가 지원하는 것입니다.

엔드포인트무엇에 답하는가
/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잔액과 활동을 갖춘 주소, 주고받은 트랜잭션, 발생시킨 로그, 그리고 그 주소를 스친 모든 일을 하나로 합친 타임라인.
/v1/address/{addr}/tokens/v1/address/{addr}/facts/v1/address/{addr}/contract주소가 보유한 토큰 잔액, 자금의 출처와 최초·최근 활동 시점, 그리고 컨트랙트라면 배포된 바이트코드.
/v1/tokens/{addr}/v1/tokens/{addr}/holders/v1/tokens/{addr}/transfers한 토큰의 온체인 사실, 잔액순 보유자, 그리고 전송 내역.
/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스물네 개 일별 지표의 카탈로그. 각각 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, 그리고 날짜 범위를 블록 범위로 옮겨 주는 라우트.내보내기는 언제나 하나의 주소에 관한 것입니다. address 는 필수이며, 범위는 그것을 대체하지 않고 좁힙니다.
/v1/actions/categories트랜잭션이 실제로 무엇을 했는지 분류하는 데 쓰이는 범주.
/v1/stream/head커밋된 블록마다 하나씩 오는 서버 전송 이벤트. 각각 서버 시계를 실어 소비자가 시차를 보정할 수 있게 합니다.

Etherscan 형태의 표면

하나의 경로에서 쿼리 문자열의 moduleaction 으로 분기합니다. 모든 응답이 HTTP 200 이므로 엄격한 클라이언트 라이브러리가 상태 코드 때문에 깨지지 않습니다. GET 과 form-encoded POST 를 모두 받으며, module=proxy 는 열세 개의 JSON-RPC 메서드를 노드로 그대로 통과시킵니다.

moduleaction무엇에 답하는가
accountbalance네이티브 잔액, 소수점 18자리 정수 문자열
accountbalancemulti호출당 최대 20개 주소
accounttxlist한 주소가 보내거나 받은 트랜잭션. 색인에서 읽습니다
accounttokentx스캔된 구간에서 제공. startblock과 endblock이 필요합니다이 체인에서는 토큰 이름·심볼·소수 자릿수 필드가 빈 값으로 옵니다. 자릿수는 전송 레코드가 아니라 토큰 라우트에서 읽으십시오.
accounttokenbalance진짜 ERC-20 조회. 계약 자신의 소수 스케일을 반환합니다
accountaddresstokenbalance한 주소가 보유한 모든 토큰 잔액
blockgetblockrewardblockReward는 트랜잭션 수수료의 합계입니다. 발행도 엉클 보상도 없습니다
blockgetblocknobytime높이에 대한 이진 탐색. 불변이며 영구 캐시됩니다
blockgetblockcountdown상수가 아니라 실측 블록 시간을 사용합니다
transactiongetstatus실행 상태
transactiongettxreceiptstatus영수증 상태
logsgetLogs범위 제한 있음. 범위를 넘는 요청에는 최대 폭을 명시해 응답합니다
contractgetabiArcscan에서 검증된 컨트랙트의 ABI이 체인에는 아직 검증된 컨트랙트가 없어 getabi 는 NOTOK 을, getsourcecode 는 빈 레코드를 답합니다. 배포된 바이트코드는 어느 쪽이든 제공됩니다.
contractgetsourcecode검증된 소스, 컴파일러 설정, ABI이 체인에는 아직 검증된 컨트랙트가 없어 getabi 는 NOTOK 을, getsourcecode 는 빈 레코드를 답합니다. 배포된 바이트코드는 어느 쪽이든 제공됩니다.
tokentokenholderlist토큰 하나의 보유자와 잔액
statstokensupply총 공급량. 컨트랙트에서 직접 읽습니다
statsethsupply네이티브 공급량, 소수점 18자리 정수 문자열
statsethprice가스 토큰은 구조상 달러이므로 1.00을 보고합니다
statsdailytxnfee완전한 UTC 하루 단위의 트랜잭션 수수료 합계
statsdailynewaddress완전한 UTC 하루 단위로 처음 나타난 주소
proxyeth_*블록, 트랜잭션, call, code, storage, gas 및 raw 전송 메서드

요청 한도, 오류, 페이징

요청 한도

공개 호출자에게는 300 건의 버스트가 주어지고 초당 60 건씩 다시 채워집니다. 모든 응답이 현재 위치를 알려 주며, 거절은 HTTP 429 로 retry-after 를 함께 실어 보냅니다.

버킷은 우리 엣지가 보는 호출자 주소를 기준으로 계산되므로, 하나의 NAT 또는 하나의 클라우드 송신 주소를 함께 쓰는 호출자들은 같은 버킷을 나눠 씁니다.

x-ratelimit-limit: 300
x-ratelimit-remaining: 299

오류

/api 에서 거절은 HTTP 200 이며 status0, result 에 이유가 문장으로 들어갑니다. 결코 404 가 아니므로 엄격한 클라이언트 라이브러리가 그것 때문에 깨지지 않습니다.

/v1 에서 잘못된 요청으로 판정된 것은 엣지를 거쳐 400 이 아니라 404 로 돌아옵니다. 라우트가 없다고 결론짓기 전에 파라미터를 확인하십시오.

페이징

목록 라우트는 커서 페이징을 씁니다. 응답에 page.next 가 실리고, 그것을 cursor 로 돌려보내면 다음 페이지가 옵니다. 페이지 크기는 100 이 상한입니다.

이 API 가 답하지 않는 것

부딪혀 발견하는 대신 미리 우회할 수 있도록 공개합니다.

내부 트랜잭션

트랜잭션 하나를 물으면 그 내부 호출을 받습니다. 단일 트랜잭션 트레이스 라우트는 200 과 실제 프레임을 돌려주고, account/txlistinternaltxhash 를 넘기면 같은 프레임을 돌려줍니다. 주소나 체인 전체를 물으면 대신 거절을 받습니다. 이 배포에서는 Arcscan 자체 트레이스 인덱스에 블록이 하나도 없기 때문입니다. /v1/explore/internal-txs 는 빠진 능력을 밝히며 501 CAPABILITY_UNAVAILABLE 로 답하고, address 로 조회한 account/txlistinternal 은 이유를 적어 거절하며, internal CSV 내보내기는 헤더만 있고 행은 없습니다. 이것은 알아챠 수 있는 거절이지, 알아챠 수 없는 짧은 목록이 결코 아닙니다. 상태 변경은 별개의 결손입니다. 단일 트랜잭션 상태 라우트는 여전히 501 로 답합니다. 상태 차이는 트랜잭션을 그 블록 직전 상태에 다시 실행해야 나오는데, 이 체인을 읽는 엔드포인트가 그 호출을 제공하지 않기 때문입니다.

로그 조회 한 번이 닿는 범위

logs/getLogs 는 체인 5042 에서 답하며, 한 번에 최대 10,000 블록까지입니다. 그보다 넓은 요청은 그 상한을 밝히며 거절되지, 범위의 일부만 조용히 답해 주지 않습니다. account/tokentx 도 답하며 startblockendblock 이 필요하고 최대 200,000 블록까지입니다. 두 상한 모두 우리 자체 인덱스에는 적용되지 않으며, 더 넓은 질문은 거기서 답합니다. 주소별로는 주소 로그 라우트, 토큰별로는 토큰 전송 라우트, 체인 전역으로는 /v1/explore/token-transfers 입니다.

검증된 소스

우리 검증 제공자가 체인 5042 를 다루지 않으므로 오늘 이곳에 검증된 컨트랙트는 없고, 그것이 바뀌기 전까지는 검증할 수도 없습니다. 배포된 바이트코드, 생성 바이트코드, 컨트랙트 생성자는 그와 무관하게 제공됩니다.

오프체인 데이터

오라클 가격도, 시가총액도, 로고도, 웹사이트도, 사람이 큐레이션한 거래소 라벨도 없습니다. 우리가 공개하는 주소 라벨은 체인 데이터로 증명되는 것들 — 검증자, 시스템 컨트랙트, 배포를 우리가 지켜본 컨트랙트 — 이며, 추측으로 붙인 라벨은 앞으로도 없습니다.

거절로 답하는 액션

하나의 일반 오류가 아니라, 각자 자기 이유를 result 에 담아 돌려줍니다.

contract.getcontractcreation
체인 5042 뒤의 노드는 otterscan 네임스페이스를 노출하지 않습니다. 컨트랙트의 생성자와 생성 트랜잭션은 주소 컨트랙트 라우트에 있습니다.
account.getminedblocks
Arc 에는 채굴도 블록 보상도 없습니다. 블록은 순환하는 BFT 검증자 집합이 제안하며, 블록 안의 유일한 가치는 트랜잭션 수수료입니다. 제안자 컬럼에도 인덱스가 없어 전체 테이블 스캔 없이는 답할 수 없습니다. 대신 블록 라우트가 검증자를 밝힙니다.
account.tokennfttx
ERC-721 전송은 인덱싱되어 있지만 주소 기준은 아닙니다. 전송 테이블에 송신자·수신자 인덱스가 없어 주소로 거르면 전체 스캔이 됩니다. 토큰별로, 그리고 체인 전역으로는 읽을 수 있습니다.
account.token1155tx
ERC-1155 도 동일합니다.
account.addresstokennftbalance
우리 잔액 스트림은 대체 가능한 잔액만 저장합니다. 토큰과 보유자 쌍마다 하나의 수량이며 token id 차원이 없으므로 NFT 인벤토리를 읽어 낼 수 없습니다. 같은 질문의 ERC-20 형태에는 답이 있습니다.
token.tokeninfo
이 액션의 필드 대부분은 오프체인입니다. 가격, 시가총액, 웹사이트, 소셜 링크. Arcscan 은 오프체인 토큰 데이터를 보유하지 않으며 가격 오라클도 조회하지 않습니다. 온체인 절반 — 이름, 심볼, 소수 자릿수, 총 공급량, 보유자 수 — 은 토큰 라우트가 제공합니다.
contract.verifysourcecode
검증은 Etherscan 의 평탄화된 소스 폼 필드를 받지 않습니다. Solidity 표준 JSON 을 검증 페이지로 제출하십시오. 그 라우트가 닿는 곳이 거기입니다.

키 요청하기

이 데이터 위에 무언가를 만들고 계신다면, 누구인지, 무엇을 만드는지, 대략 어느 정도 볼륨을 예상하는지 적어 보내 주십시오. 그것이 키 시스템이 갖춰야 할 요건을 만들고, 전용 API 주소가 공지되기 전에 소식을 듣는 경로이기도 합니다.

그때까지는 위의 기본 URL 이 인증 없이 응답하며, apikey 파라미터는 받아들여진 뒤 무시되므로 기존 Etherscan 클라이언트가 그대로 계속 동작합니다.

서비스 자체 스키마에서 생성된 라우트별 전체 레퍼런스는 API 문서 페이지에 있습니다.

Arc 메인넷 API — Circle이 만든 Arc, 체인 ID 5042 | Arcscan