# เชนที่รองรับ

> Source: https://docs.blockvectra.com/th/chains/

BlockVectra คือผู้ให้บริการข้อมูลบล็อกเชนแบบมัลติเชน: รองรับ JSON-RPC ในทุกเชนที่เราสนับสนุน และรองรับ Data API ในเชนที่เปิดให้บริการ

## คีย์เดียว ใช้ได้ทุกเชน

* **คีย์เดียวใช้ได้ทุกเครือข่าย**: API key เดียวกันสามารถใช้ได้กับทุกเครือข่ายบล็อกเชนที่ BlockVectra รองรับ โดยไม่ต้องแยกคีย์ตามเชน
* **ระบุเชนใน URL**: ทุกคำขอจะระบุชื่อเชนอย่างชัดเจนผ่านส่วนพาธ `{chain}`
* **การใช้งานรวมข้ามเชน**: ยอดคงเหลือของบัญชี, บักเก็ตจำกัดอัตรา Compute Unit (CU) และขีดจำกัดคำขอต่อวินาทีของแพ็กเกจฟรีจะแชร์ร่วมกันในทุกเชน
* **ราคา**: ดูที่ [หน้าแสดงราคา](https://blockvectra.com/en/pricing/)

## ทดลองใช้โดยไม่ต้องมี API key

เลือก [public RPC endpoint ฟรี](https://blockvectra.com/en/free/#public-rpc) สำหรับเมธอดของกระเป๋าเงินโดยไม่ต้องใช้ API key โดยมีการแสดงรายการเมธอดสาธารณะและขีดจำกัดต่อ IP แยกตามเครือข่าย โปรดดู [เริ่มต้นใช้งานอย่างรวดเร็ว](https://docs.blockvectra.com/en/quickstart/) สำหรับตัวอย่างการเรียกใช้งาน

## เทมเพลต URL

โครงสร้าง URL มาตรฐานสำหรับการเรียกใช้ JSON-RPC และ Data API:

| บริการ   | โหมด          | เทมเพลต URL                  | หมายเหตุ                                                   |
| -------- | ------------- | ---------------------------- | ---------------------------------------------------------- |
| JSON-RPC | คีย์ในพาธ     | `POST /v1/{chain}/{api_key}` | รูปแบบที่ง่ายที่สุด แนะนำสำหรับ curl และ HTTP client       |
| JSON-RPC | คีย์ในส่วนหัว | `POST /v1/{chain}`           | ส่งคีย์ในส่วนหัวคำขอ `x-api-key: {api_key}`                |
| Data API | REST endpoint | `GET /v1/data/{chain}/…`     | ส่งคีย์ในส่วนหัวคำขอ `x-api-key`                           |
| Status   | สถานะสาธารณะ  | `GET /v1/status`             | ไม่ต้องใช้คีย์ ส่งคืนสถานะและบล็อกล่าสุดของแต่ละเชนสาธารณะ |

> **หมายเหตุ**: คำขอที่ไม่มีส่วนระบุเชน (เช่น `POST /v1` หรือ `POST /v1/`) จะส่งคืน HTTP 404 พร้อมเนื้อหาว่างเปล่า (empty body) ดูรายละเอียดการตั้งค่าได้ที่ [เริ่มต้นใช้งานอย่างรวดเร็ว](https://docs.blockvectra.com/en/quickstart/)

## เมทริกซ์เชนที่รองรับ

เครือข่ายบล็อกเชนที่พร้อมใช้งานในปัจจุบันบน BlockVectra พร้อมความสามารถในการให้บริการ:

แสดง endpoint, เมธอดที่ใช้ API key, การสมัครรับข้อมูล (subscription), การส่งธุรกรรม, ขีดจำกัดของสถานะและบันทึก (logs), ชุดข้อมูล, เทสต์เน็ตที่เกี่ยวข้อง และคู่มือแยกตามแต่ละเชน ข้อมูลที่ไม่ทราบจะยังคงแสดงว่าไม่ทราบ สามารถขยายดูรายละเอียดของเชนใต้เมทริกซ์เพื่อดูตัวอย่างคำขอที่เชนนั้นรองรับ

| เชน | {chain} | Chain ID | Tracing | Endpoint สาธารณะ | WebSocket | Data API | จำนวนเมธอดที่ใช้ API key | Webhook push | ส่งธุรกรรม | ส่งธุรกรรม (endpoint สาธารณะแบบไม่ต้องใช้ API key) | ช่วงประวัติสถานะ | ช่วงบล็อกสูงสุดของ eth_getLogs | ชุดข้อมูล Data API | testnet ที่เกี่ยวข้อง | คู่มือที่เกี่ยวข้อง |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [RPC และ Data API ของ arb_mainnet](https://blockvectra.com/th/chains/arb_mainnet/) | arb_mainnet | 42161 | ✓ | `https://api.blockvectra.com/v1/arb_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 43 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 5,000 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | ไม่ระบุ |
| [RPC และ Data API ของ base_mainnet](https://blockvectra.com/th/chains/base_mainnet/) | base_mainnet | 8453 | — | `https://api.blockvectra.com/v1/base_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 39 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 10,000 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | [Base](https://docs.blockvectra.com/th/guides/base/) |
| [RPC และ Data API ของ bsc_mainnet](https://blockvectra.com/th/chains/bsc_mainnet/) | bsc_mainnet | 56 | — | `https://api.blockvectra.com/v1/bsc_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 25 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 100 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | ไม่ระบุ |
| [RPC และ Data API ของ Ethereum](https://blockvectra.com/th/chains/eth_mainnet/) | eth_mainnet | 1 | ✓ | `https://api.blockvectra.com/v1/eth_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 38 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 250,000 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | ไม่ระบุ |
| [RPC และ Data API ของ eth_sepolia](https://blockvectra.com/th/chains/eth_sepolia/) | eth_sepolia | 11155111 | — | `https://api.blockvectra.com/v1/eth_sepolia/public` | ไม่รองรับ | เปิดให้บริการ | 29 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | ไม่ระบุ | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | ไม่ระบุ |
| [RPC และ Data API ของ HyperEVM](https://blockvectra.com/th/chains/hyperevm_mainnet/) | hyperevm_mainnet | 999 | — | `https://api.blockvectra.com/v1/hyperevm_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 24 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | ไม่รองรับ | ไม่รองรับ | ไม่ระบุ | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ยอดคงเหลือ, ผู้ถือ, NFT, ความสดใหม่ของข้อมูล | ไม่ระบุ | [การดึงข้อมูลย้อนหลังและการโพลล์ HyperEVM](https://docs.blockvectra.com/th/guides/hyperevm-backfill/) |
| [RPC และ Data API ของ polygon_mainnet](https://blockvectra.com/th/chains/polygon_mainnet/) | polygon_mainnet | 137 | ✓ | `https://api.blockvectra.com/v1/polygon_mainnet/public` | ไม่รองรับ | เปิดให้บริการ | 43 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 126 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ความสดใหม่ของข้อมูล | ไม่ระบุ | ไม่ระบุ |
| [RPC และ Data API ของ Robinhood Chain](https://blockvectra.com/th/chains/robinhood_mainnet/) | robinhood_mainnet | 4663 | ✓ | `https://api.blockvectra.com/v1/robinhood_mainnet/public` | รองรับ (newHeads, logs) | เปิดให้บริการ | 43 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 900 บล็อกล่าสุด | 1,000 บล็อก | บล็อก, ธุรกรรม, ธุรกรรมของแอดเดรส, การโอน, เมทาดาตาของโทเค็น, ยอดคงเหลือ, ผู้ถือ, NFT, การสวอป DEX, ราคา DEX, หุ้นโทเค็น, Trace, ความสดใหม่ของข้อมูล | ไม่ระบุ | [Robinhood Chain](https://docs.blockvectra.com/th/guides/robinhood-chain/), [ตัวคูณโทเค็นหุ้น](https://docs.blockvectra.com/th/guides/stock-token-multiplier/), [หุ้นโทเค็น](https://docs.blockvectra.com/th/guides/stocks/) |
| [RPC ของ robinhood_testnet](https://blockvectra.com/th/chains/robinhood_testnet/) | robinhood_testnet | 46630 | ✓ | `https://api.blockvectra.com/v1/robinhood_testnet/public` | รองรับ (newHeads, logs) | ยังไม่พร้อมใช้งาน | 43 | [รองรับ · การยืนยัน 1–1 (ค่าเริ่มต้น 1)](https://blockvectra.com/th/webhooks/), [คู่มือ Webhook push](https://docs.blockvectra.com/th/guides/webhook-push/) | รองรับ | รองรับ | สถานะย้อนหลังสำหรับ 1,023 บล็อกล่าสุด | 1,000 บล็อก | ไม่รองรับ | ไม่ระบุ | [คู่มือ testnet faucet](https://docs.blockvectra.com/th/guides/robinhood-testnet-faucet/), [คู่มือเริ่มต้นสำหรับ Robinhood Chain Testnet](https://docs.blockvectra.com/th/guides/robinhood-testnet-starter/) |

## ขั้นตอนถัดไปเมื่อมี API key

### arb_mainnet

#### eth_getLogs

```bash
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/arb_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/arb_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
```

[eth_getLogs](https://docs.blockvectra.com/th/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/arb_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](https://console.blockvectra.com/billing/)

### base_mainnet

#### eth_getLogs

```bash
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/base_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/base_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
```

[eth_getLogs](https://docs.blockvectra.com/th/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/base_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](https://console.blockvectra.com/billing/)

### bsc_mainnet

#### eth_getLogs

```bash
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/bsc_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/bsc_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
```

[eth_getLogs](https://docs.blockvectra.com/th/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/bsc_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](https://console.blockvectra.com/billing/)

### Ethereum

#### eth_getLogs

```bash
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/eth_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/eth_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
```

[eth_getLogs](https://docs.blockvectra.com/th/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/eth_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](https://console.blockvectra.com/billing/)

### eth_sepolia

#### eth_getLogs

```bash
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/eth_sepolia' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/eth_sepolia' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
```

[eth_getLogs](https://docs.blockvectra.com/th/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/eth_sepolia/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](https://console.blockvectra.com/billing/)

### HyperEVM

#### eth_getLogs

```bash
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/hyperevm_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/hyperevm_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
```

[eth_getLogs](https://docs.blockvectra.com/th/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/hyperevm_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](https://console.blockvectra.com/billing/)

### polygon_mainnet

#### eth_getLogs

```bash
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/polygon_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/polygon_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
```

[eth_getLogs](https://docs.blockvectra.com/th/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/polygon_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/th/api/data/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](https://console.blockvectra.com/billing/)

### Robinhood Chain

#### eth_getLogs

```bash
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/robinhood_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/robinhood_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
```

[eth_getLogs](https://docs.blockvectra.com/th/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/robinhood_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/th/api/data/)

#### WebSocket

```bash
echo '{"jsonrpc":"2.0","id":1,"method":"eth_subscribe","params":["newHeads"]}' | websocat --no-close -H="x-api-key: $BLOCKVECTRA_API_KEY" 'wss://api.blockvectra.com/v1/robinhood_mainnet'
```

[WebSocket](https://docs.blockvectra.com/th/guides/websocket-subscriptions/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](https://console.blockvectra.com/billing/)

### robinhood_testnet

#### eth_getLogs

```bash
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/robinhood_testnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/robinhood_testnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
  -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"
```

[eth_getLogs](https://docs.blockvectra.com/th/guides/getlogs-block-range/)

#### WebSocket

```bash
echo '{"jsonrpc":"2.0","id":1,"method":"eth_subscribe","params":["newHeads"]}' | websocat --no-close -H="x-api-key: $BLOCKVECTRA_API_KEY" 'wss://api.blockvectra.com/v1/robinhood_testnet'
```

[WebSocket](https://docs.blockvectra.com/th/guides/websocket-subscriptions/)

[สร้างการติดตาม Webhook](https://blockvectra.com/th/webhooks/) · [สร้างการติดตาม Webhook](https://docs.blockvectra.com/th/guides/webhook-push/) · [การใช้งานและ CU](https://console.blockvectra.com/usage/) · [เติมเงิน](https://console.blockvectra.com/billing/)

**HyperEVM**
บล็อก HyperEVM รวมธุรกรรมระบบของ HyperCore (จากแอดเดรส 0x2222…2222 หรือ 0x20…, gasPrice 0)
การส่งธุรกรรมยังไม่รองรับบนเชนนี้ (`eth_sendRawTransaction` ส่งกลับ `-32601` `method_not_allowed`); เมธอดการอ่านทำงานได้ตามปกติ

[ดูสถานะแบบเรียลไทม์ →](https://blockvectra.com/th/status/)

## Ethereum

* **Chain ID**: `1`
* **ชื่อเชน (`{chain}` ใน URL)**: `eth_mainnet` เช่น `POST /v1/eth_mainnet/{api_key}` หรือ `GET /v1/data/eth_mainnet/…`

### JSON-RPC

* **เมธอด**: เมธอดที่พร้อมใช้งานสำหรับแต่ละเชนจะกำหนดโดย `methods.allow` / `deny` ใน `GET /v1/chains` (ดู [นโยบายเมธอด](https://docs.blockvectra.com/en/api/json-rpc/#method-policy)) เมธอดที่อยู่นอกเหนือขอบเขตดังกล่าวจะส่งคืน `-32601`
* **เฉพาะข้อมูลล่าสุด**: หน้าต่างสถานะย้อนหลังจะกำหนดโดย `state_window_blocks` ใน `GET /v1/chains` การค้นหาสถานะย้อนหลังที่อยู่นอกหน้าต่างจะส่งคืน `-32011` (ไม่คิดค่าบริการ); การค้นหาบล็อก, ใบเสร็จ (receipt) และบันทึก (log) นอกหน้าต่างจะส่งคืน `-32000 old data not available due to pruning` (ไม่คิดค่าบริการ); การค้นหาธุรกรรมด้วยแฮชนอกหน้าต่างจะส่งคืน `result: null`
* **`eth_getLogs`**: ช่วงบล็อกสูงสุดต่อคำขอกำหนดโดย `max_logs_block_range` ใน `GET /v1/chains`

### Data API

* **เฉพาะข้อมูลล่าสุด**: ความครอบคลุมของข้อมูล Ethereum กำหนดโดย `coverage.from_block` ใน `GET /v1/data/chains` หมายเลขบล็อกหรือช่วงที่ต่ำกว่าจุดเริ่มต้นจะส่งคืน `422 no_coverage`; แฮชธุรกรรมที่หลุดออกจากหน้าต่างไปแล้วจะส่งคืน `404`
* **เมื่อ `from_block` เป็น `null`**: จุดเริ่มต้นจะไม่ทราบค่าชั่วคราว อย่าถือว่าเป็น `0` หรือเป็นประวัติทั้งหมด และอย่าส่งคำขอย้อนหลัง (ตามหมายเลขบล็อก, ช่วง หรือแฮช) สำหรับ Ethereum จนกว่าค่านี้จะกลับมาเป็นจำนวนเต็มอีกครั้ง คำขอเหล่านี้จะส่งคืน `503 unavailable`
* **`503 gateway_overloaded`**: ลองใหม่อีกครั้งพร้อม backoff (`Retry-After: 1`)
* **ชุดข้อมูล**: ชุดข้อมูลที่ Ethereum ให้บริการจะระบุไว้ใน `features` ของ `GET /v1/data/chains`; ชุดข้อมูลอื่นจะส่งคืน `422 no_coverage` (ไม่คิดค่าบริการ) ธุรกรรมและการโอนของแอดเดรสจะครอบคลุมเฉพาะในหน้าต่างเท่านั้น: การตอบกลับที่คร่อมจุดเริ่มต้นจะถูกระบุเป็น `meta.coverage: "partial"`

## การค้นหาเชนโดยใช้โปรแกรม

ใช้ endpoint สาธารณะเหล่านี้เพื่อค้นหาเชนที่รองรับและสถานะของเชน:

### 1. สถานะการให้บริการ (GET /v1/status)

endpoint สาธารณะที่ไม่ต้องใช้ API key (CORS `*`) โดยจะแสดงรายการเฉพาะเชนที่เปิดให้บริการแก่สาธารณะ และส่งคืนสถานะพร้อมบล็อกล่าสุดที่ได้รับการทำดัชนี:

```bash
curl -s "https://api.blockvectra.com/v1/status"
```

ตัวอย่างการตอบกลับ:

```json
{
  "checked_at": "2026-09-28T07:40:00Z",
  "gateway": { "status": "ok" },
  "chains": [
    {
      "chain": "robinhood_mainnet",
      "name": "Robinhood Chain",
      "chain_id": 4663,
      "jsonrpc": true,
      "data": true,
      "status": "ok",
      "data_status": "ok",
      "sync": { "stage": "synced", "node_block": 74600000, "target_block": null },
      "head": {
        "block": 74600000,
        "time": "2026-09-28T07:39:58Z",
        "lag_seconds": 3
      }
    },
    {
      "chain": "eth_mainnet",
      "name": "Ethereum",
      "chain_id": 1,
      "jsonrpc": true,
      "data": true,
      "status": "ok",
      "data_status": "ok",
      "sync": { "stage": "synced", "node_block": 26010000, "target_block": null },
      "head": {
        "block": 26010000,
        "time": "2026-09-28T07:39:59Z",
        "lag_seconds": 1
      }
    }
  ]
}
```

ฟิลด์ `name` ของแต่ละรายการจะเป็นชื่อแสดงผลภาษาอังกฤษของเชนเสมอ `jsonrpc` และ `data` จะรายงานว่าเชนนั้นเปิดให้บริการสำหรับ JSON-RPC และ Data API หรือไม่ตามลำดับ; `status` จะเป็น `"ok"` หรือ `"unavailable"` หากเชนกำลังซิงค์อยู่ การเรียกใช้เชนนั้นจะส่งคืน `-32010` ใน `/v1/status` นั้น `status` จะรายงานว่า JSON-RPC ทำงานปกติหรือไม่ และ `data_status` จะรายงานว่า Data API ทำงานปกติหรือไม่ (`"ok"`, `"syncing"` หรือ `"unavailable"`); ใน `/v1/data/chains` ค่า `coverage.has_data` ที่เป็น `false` หมายความว่าเชนยังไม่มีข้อมูลที่ได้รับการทำดัชนี

### 2. เชนของ Data API (GET /v1/data/chains)

ต้องระบุ API key ในส่วนหัว `x-api-key` (คิดค่าบริการ) ส่งคืนรายการเชนสาธารณะที่ Data API ให้บริการ โดยแต่ละเชนจะระบุสิ่งที่ให้บริการ (`features`), บล็อกที่ข้อมูลครอบคลุม (`coverage`), มาร์กเกอร์ฉันทามติ `safe`/`finalized` ของโหนดและสถานะ (`finality`) ตลอดจนขีดจำกัดต่อคำขอ (`limits`):

```bash
curl -s "https://api.blockvectra.com/v1/data/chains" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

ตัวอย่างการตอบกลับ:

```json
{
  "data": [
    {
      "chain": "robinhood_mainnet",
      "chain_slug": "ROBINHOOD_MAINNET",
      "name": "Robinhood Chain",
      "chain_id": 4663,
      "chain_external_id": "eip155:4663",
      "features": [
        "blocks", "transactions", "address_transactions", "transfers", "token_metadata",
        "balances", "holders", "nfts", "dex_swaps", "dex_prices", "stocks", "traces", "freshness"
      ],
      "coverage": { "from_block": 0, "traces_from_block": 1000000, "has_data": true },
      "finality": { "model": "node_tags", "status": "ok", "safe_block": 74599400, "finalized_block": 74598900 },
      "limits": { "max_page_size": 500, "max_window_blocks": 100000, "max_pools_for_token": 200, "max_batch_addresses": 100 }
    },
    {
      "chain": "eth_mainnet",
      "chain_slug": "ETH_MAINNET",
      "name": "Ethereum",
      "chain_id": 1,
      "chain_external_id": "eip155:1",
      "features": ["blocks", "transactions", "address_transactions", "transfers", "token_metadata", "freshness"],
      "coverage": { "from_block": 1000000, "traces_from_block": null, "has_data": true },
      "finality": { "model": "node_tags", "status": "stale", "safe_block": 26009950, "finalized_block": 26009900 },
      "limits": { "max_page_size": 500, "max_window_blocks": 100000, "max_pools_for_token": 200, "max_batch_addresses": 100 }
    }
  ]
}
```

`finality` จะรายงานมาร์กเกอร์ฉันทามติของโหนด (`model` คือ `"node_tags"`), สุขภาพของมาร์กเกอร์ (`status` คือ `"ok"`, `"stale"` หรือ `"unavailable"`) และ `safe_block` กับ `finalized_block` ปัจจุบัน (`safe_block >= finalized_block` และทั้งสองค่าจะเป็น `null` เฉพาะเมื่อสถานะเป็น `"unavailable"`)

`coverage.from_block` คือบล็อกต่ำสุดที่ได้รับการทำดัชนี ซึ่งอ่านค่าแบบเรียลไทม์ โดยจะมีค่าเป็น `0` เมื่อประวัติของเชนครอบคลุมไปถึงบล็อกแรก (genesis) ค่านี้จะเป็น `null` ได้ก็ต่อเมื่อเชนไม่มีบล็อกที่ได้รับการทำดัชนีเลย (`has_data = false`) หรือในระหว่างที่ไม่สามารถระบุจุดเริ่มต้นได้: ให้ถือว่า `null` คือไม่ทราบค่า — ไม่ใช่ประวัติที่สมบูรณ์และไม่ใช่ `0` — และคำขอย้อนหลังจะส่งคืน `503 unavailable` โปรดอ่านค่าจาก endpoint นี้ระหว่างรันไทม์เสมอแทนที่จะฮาร์ดโค้ดค่าไว้ สำหรับ `coverage.traces_from_block` คือบล็อกแรกที่มีข้อมูล trace โดยคำขอ trace ก่อนหน้าบล็อกนี้ หรือที่อยู่ในช่วงที่มีช่องว่าง จะส่งคืน `422 no_coverage` (ไม่คิดค่าบริการ)

การเรียกใช้ `/v1/data/{chain}/…` ด้วยเชนที่ไม่รู้จักหรือไม่เปิดเผยต่อสาธารณะจะส่งคืน HTTP `404` พร้อม `error.code` เป็น `not_found` (ไม่คิดค่าบริการ; ชื่อเชนต้องเป็น slug ตัวพิมพ์เล็กที่ตรงกันทุกประการ)
