# Chuỗi được hỗ trợ

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

BlockVectra là nhà cung cấp dữ liệu blockchain đa chuỗi: JSON-RPC trên mọi chuỗi chúng tôi hỗ trợ và Data API tại những chuỗi có sẵn.

## Một API key, tất cả các chuỗi

* **API key phổ quát**: cùng một API key hoạt động trên mọi mạng blockchain mà BlockVectra hỗ trợ — không cần các key riêng biệt cho từng chuỗi.
* **Chuỗi trong URL**: mỗi yêu cầu nêu rõ chuỗi của nó thông qua phân đoạn đường dẫn `{chain}`.
* **Mức sử dụng tổng hợp**: số dư tài khoản, bucket giới hạn tần suất Compute Unit (CU) và giới hạn yêu cầu mỗi giây của gói miễn phí được chia sẻ trên tất cả các chuỗi.
* **Bảng giá**: xem [Bảng giá](https://blockvectra.com/en/pricing/).

## Thử nghiệm không cần API key

Chọn một [endpoint RPC công khai miễn phí](https://blockvectra.com/en/free/#public-rpc) cho các phương thức ví mà không cần API key. Các phương thức công khai và giới hạn theo từng IP được liệt kê theo mạng; xem [Bắt đầu nhanh](https://docs.blockvectra.com/en/quickstart/) để biết ví dụ gọi.

## Mẫu URL

Cấu trúc URL chuẩn để gọi JSON-RPC và Data API:

| Dịch vụ    | Chế độ               | Mẫu URL                      | Ghi chú                                                                        |
| ---------- | -------------------- | ---------------------------- | ------------------------------------------------------------------------------ |
| JSON-RPC   | Key trên đường dẫn   | `POST /v1/{chain}/{api_key}` | Hình thức đơn giản nhất; khuyến nghị cho curl và client HTTP                   |
| JSON-RPC   | Key trong header     | `POST /v1/{chain}`           | Truyền key trong header yêu cầu `x-api-key: {api_key}`                         |
| Data API   | Endpoint REST        | `GET /v1/data/{chain}/…`     | Truyền key trong header yêu cầu `x-api-key`                                    |
| Trạng thái | Trạng thái công khai | `GET /v1/status`             | Không yêu cầu key; trả về trạng thái và khối mới nhất của từng chuỗi công khai |

> **Ghi chú**: một yêu cầu không có phân đoạn chuỗi (ví dụ: `POST /v1` hoặc `POST /v1/`) trả về HTTP 404 với thân rỗng. Xem [Bắt đầu nhanh](https://docs.blockvectra.com/en/quickstart/) để biết chi tiết thiết lập.

## Ma trận chuỗi được hỗ trợ

Các mạng blockchain hiện có sẵn trên BlockVectra và tính năng dịch vụ của chúng:

Endpoint, phương thức có API key, đăng ký theo dõi, gửi giao dịch, giới hạn trạng thái và log, bộ dữ liệu, testnet liên quan và tài liệu hướng dẫn được hiển thị theo từng chuỗi. Thông tin chưa xác định sẽ được giữ nguyên là chưa xác định. Mở rộng một chuỗi bên dưới ma trận để xem các yêu cầu được hỗ trợ bởi chuỗi đó.

| Chuỗi | {chain} | Chain ID | Tracing | Endpoint công khai | WebSocket | Data API | Số phương thức dùng khóa API | Thông báo Webhook | Gửi giao dịch | Gửi giao dịch (endpoint công khai không cần key) | Cửa sổ lịch sử trạng thái | Khoảng khối tối đa của eth_getLogs | Tập dữ liệu Data API | Mạng thử nghiệm liên quan | Hướng dẫn liên quan |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [RPC và Data API của arb_mainnet](https://blockvectra.com/vi/chains/arb_mainnet/) | arb_mainnet | 42161 | ✓ | `https://api.blockvectra.com/v1/arb_mainnet/public` | Không được hỗ trợ | Khả dụng | 43 | [Được hỗ trợ · Số xác nhận 1–1 (mặc định 1)](https://blockvectra.com/vi/webhooks/), [Hướng dẫn thông báo Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) | Được hỗ trợ | Được hỗ trợ | Trạng thái lịch sử cho 6,000 khối gần đây nhất | 1,000 khối | Khối, Giao dịch, Giao dịch địa chỉ, Chuyển token, Siêu dữ liệu token, Độ mới dữ liệu | Không xác định | Không xác định |
| [RPC và Data API của base_mainnet](https://blockvectra.com/vi/chains/base_mainnet/) | base_mainnet | 8453 | — | `https://api.blockvectra.com/v1/base_mainnet/public` | Không được hỗ trợ | Khả dụng | 39 | [Được hỗ trợ · Số xác nhận 1–1 (mặc định 1)](https://blockvectra.com/vi/webhooks/), [Hướng dẫn thông báo Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) | Được hỗ trợ | Được hỗ trợ | Trạng thái lịch sử cho 10,000 khối gần đây nhất | 1,000 khối | Khối, Giao dịch, Giao dịch địa chỉ, Chuyển token, Siêu dữ liệu token, Độ mới dữ liệu | Không xác định | [Base](https://docs.blockvectra.com/en/guides/base/) |
| [RPC và Data API của bsc_mainnet](https://blockvectra.com/vi/chains/bsc_mainnet/) | bsc_mainnet | 56 | — | `https://api.blockvectra.com/v1/bsc_mainnet/public` | Không được hỗ trợ | Khả dụng | 25 | [Được hỗ trợ · Số xác nhận 1–1 (mặc định 1)](https://blockvectra.com/vi/webhooks/), [Hướng dẫn thông báo Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) | Được hỗ trợ | Được hỗ trợ | Trạng thái lịch sử cho 100 khối gần đây nhất | 1,000 khối | Khối, Giao dịch, Giao dịch địa chỉ, Chuyển token, Siêu dữ liệu token, Độ mới dữ liệu | Không xác định | Không xác định |
| [RPC và Data API của Ethereum](https://blockvectra.com/vi/chains/eth_mainnet/) | eth_mainnet | 1 | ✓ | `https://api.blockvectra.com/v1/eth_mainnet/public` | Không được hỗ trợ | Khả dụng | 38 | [Được hỗ trợ · Số xác nhận 1–1 (mặc định 1)](https://blockvectra.com/vi/webhooks/), [Hướng dẫn thông báo Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) | Được hỗ trợ | Được hỗ trợ | Trạng thái lịch sử cho 250,000 khối gần đây nhất | 1,000 khối | Khối, Giao dịch, Giao dịch địa chỉ, Chuyển token, Siêu dữ liệu token, Độ mới dữ liệu | Không xác định | Không xác định |
| [RPC và Data API của eth_sepolia](https://blockvectra.com/vi/chains/eth_sepolia/) | eth_sepolia | 11155111 | — | `https://api.blockvectra.com/v1/eth_sepolia/public` | Không được hỗ trợ | Khả dụng | 29 | [Được hỗ trợ · Số xác nhận 1–1 (mặc định 1)](https://blockvectra.com/vi/webhooks/), [Hướng dẫn thông báo Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) | Được hỗ trợ | Được hỗ trợ | Không xác định | 1,000 khối | Khối, Giao dịch, Giao dịch địa chỉ, Chuyển token, Siêu dữ liệu token, Độ mới dữ liệu | Không xác định | Không xác định |
| [RPC và Data API của HyperEVM](https://blockvectra.com/vi/chains/hyperevm_mainnet/) | hyperevm_mainnet | 999 | — | `https://api.blockvectra.com/v1/hyperevm_mainnet/public` | Không được hỗ trợ | Khả dụng | 24 | [Được hỗ trợ · Số xác nhận 1–1 (mặc định 1)](https://blockvectra.com/vi/webhooks/), [Hướng dẫn thông báo Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) | Không được hỗ trợ | Không được hỗ trợ | Không xác định | 1,000 khối | Khối, Giao dịch, Giao dịch địa chỉ, Chuyển token, Siêu dữ liệu token, Số dư, Người nắm giữ, NFT, Độ mới dữ liệu | Không xác định | [HyperEVM backfill and polling](https://docs.blockvectra.com/en/guides/hyperevm-backfill/) |
| [RPC và Data API của polygon_mainnet](https://blockvectra.com/vi/chains/polygon_mainnet/) | polygon_mainnet | 137 | ✓ | `https://api.blockvectra.com/v1/polygon_mainnet/public` | Không được hỗ trợ | Khả dụng | 43 | [Được hỗ trợ · Số xác nhận 1–1 (mặc định 1)](https://blockvectra.com/vi/webhooks/), [Hướng dẫn thông báo Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) | Được hỗ trợ | Được hỗ trợ | Trạng thái lịch sử cho 126 khối gần đây nhất | 1,000 khối | Khối, Giao dịch, Giao dịch địa chỉ, Chuyển token, Siêu dữ liệu token, Độ mới dữ liệu | Không xác định | Không xác định |
| [RPC và Data API của Robinhood Chain](https://blockvectra.com/vi/chains/robinhood_mainnet/) | robinhood_mainnet | 4663 | ✓ | `https://api.blockvectra.com/v1/robinhood_mainnet/public` | Được hỗ trợ (newHeads, logs) | Khả dụng | 43 | [Được hỗ trợ · Số xác nhận 1–1 (mặc định 1)](https://blockvectra.com/vi/webhooks/), [Hướng dẫn thông báo Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) | Được hỗ trợ | Được hỗ trợ | Trạng thái lịch sử cho 900 khối gần đây nhất | 1,000 khối | Khối, Giao dịch, Giao dịch địa chỉ, Chuyển token, Siêu dữ liệu token, Số dư, Người nắm giữ, NFT, Giao dịch hoán đổi DEX, Giá DEX, Cổ phiếu token hóa, Dấu vết, Độ mới dữ liệu | Không xác định | [Robinhood Chain](https://docs.blockvectra.com/en/guides/robinhood-chain/), [Stock token multiplier](https://docs.blockvectra.com/en/guides/stock-token-multiplier/), [Tokenized stocks](https://docs.blockvectra.com/en/guides/stocks/) |
| [RPC của robinhood_testnet](https://blockvectra.com/vi/chains/robinhood_testnet/) | robinhood_testnet | 46630 | ✓ | `https://api.blockvectra.com/v1/robinhood_testnet/public` | Được hỗ trợ (newHeads, logs) | Chưa khả dụng | 43 | [Được hỗ trợ · Số xác nhận 1–1 (mặc định 1)](https://blockvectra.com/vi/webhooks/), [Hướng dẫn thông báo Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) | Được hỗ trợ | Được hỗ trợ | Trạng thái lịch sử cho 1,023 khối gần đây nhất | 1,000 khối | Không được hỗ trợ | Không xác định | [Testnet faucet](https://docs.blockvectra.com/en/guides/robinhood-testnet-faucet/), [Robinhood Chain Testnet starter](https://docs.blockvectra.com/en/guides/robinhood-testnet-starter/) |

## Bước tiếp theo với khóa API

### 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/en/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/en/api/data/)

[Tạo đăng ký Webhook](https://blockvectra.com/vi/webhooks/) · [Tạo đăng ký Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) · [Mức sử dụng và CU](https://console.blockvectra.com/usage/) · [Nạp tiền](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/en/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/en/api/data/)

[Tạo đăng ký Webhook](https://blockvectra.com/vi/webhooks/) · [Tạo đăng ký Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) · [Mức sử dụng và CU](https://console.blockvectra.com/usage/) · [Nạp tiền](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/en/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/en/api/data/)

[Tạo đăng ký Webhook](https://blockvectra.com/vi/webhooks/) · [Tạo đăng ký Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) · [Mức sử dụng và CU](https://console.blockvectra.com/usage/) · [Nạp tiền](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/en/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/en/api/data/)

[Tạo đăng ký Webhook](https://blockvectra.com/vi/webhooks/) · [Tạo đăng ký Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) · [Mức sử dụng và CU](https://console.blockvectra.com/usage/) · [Nạp tiền](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/en/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/en/api/data/)

[Tạo đăng ký Webhook](https://blockvectra.com/vi/webhooks/) · [Tạo đăng ký Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) · [Mức sử dụng và CU](https://console.blockvectra.com/usage/) · [Nạp tiền](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/en/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/en/api/data/)

[Tạo đăng ký Webhook](https://blockvectra.com/vi/webhooks/) · [Tạo đăng ký Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) · [Mức sử dụng và CU](https://console.blockvectra.com/usage/) · [Nạp tiền](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/en/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/en/api/data/)

[Tạo đăng ký Webhook](https://blockvectra.com/vi/webhooks/) · [Tạo đăng ký Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) · [Mức sử dụng và CU](https://console.blockvectra.com/usage/) · [Nạp tiền](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/en/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/en/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/en/guides/websocket-subscriptions/)

[Tạo đăng ký Webhook](https://blockvectra.com/vi/webhooks/) · [Tạo đăng ký Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) · [Mức sử dụng và CU](https://console.blockvectra.com/usage/) · [Nạp tiền](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/en/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/en/guides/websocket-subscriptions/)

[Tạo đăng ký Webhook](https://blockvectra.com/vi/webhooks/) · [Tạo đăng ký Webhook](https://docs.blockvectra.com/en/guides/webhook-push/) · [Mức sử dụng và CU](https://console.blockvectra.com/usage/) · [Nạp tiền](https://console.blockvectra.com/billing/)

**HyperEVM**
Các khối HyperEVM bao gồm các giao dịch hệ thống HyperCore (từ địa chỉ 0x2222…2222 hoặc 0x20…, gasPrice 0).
Chuỗi này hiện chưa hỗ trợ gửi giao dịch (`eth_sendRawTransaction` trả về `-32601` `method_not_allowed`); các phương thức đọc hoạt động bình thường.

[Xem trạng thái thời gian thực →](https://blockvectra.com/vi/status/)

## Ethereum

* **Chain ID**: `1`
* **Tên chuỗi (`{chain}` trong URL)**: `eth_mainnet`, ví dụ `POST /v1/eth_mainnet/{api_key}` hoặc `GET /v1/data/eth_mainnet/…`.

### JSON-RPC

* **Phương thức**: các phương thức khả dụng cho từng chuỗi được xác định bởi `methods.allow` / `deny` trong `GET /v1/chains` (xem [Chính sách phương thức](https://docs.blockvectra.com/en/api/json-rpc/#method-policy)); các phương thức nằm ngoài phạm vi đó trả về `-32601`.
* **Chỉ dữ liệu gần đây**: cửa sổ trạng thái lịch sử được xác định bởi `state_window_blocks` trong `GET /v1/chains`. Các truy vấn trạng thái lịch sử ngoài cửa sổ trả về `-32011` (không tính phí); truy vấn khối, biên lai và log ngoài cửa sổ trả về `-32000 old data not available due to pruning` (không tính phí); giao dịch được tra cứu theo mã băm ngoài cửa sổ trả về `result: null`.
* **`eth_getLogs`**: phạm vi khối tối đa cho mỗi yêu cầu là `max_logs_block_range` trong `GET /v1/chains`.

### Data API

* **Chỉ dữ liệu gần đây**: phạm vi dữ liệu của Ethereum được xác định bởi `coverage.from_block` trong `GET /v1/data/chains`. Số hiệu khối hoặc cửa sổ nằm dưới điểm bắt đầu trả về `422 no_coverage`; mã băm giao dịch đã rời khỏi cửa sổ trả về `404`.
* **Khi `from_block` là `null`**: điểm bắt đầu tạm thời chưa xác định. Không coi đây là `0` hoặc lịch sử đầy đủ, và không gửi các yêu cầu lịch sử (theo số hiệu khối, cửa sổ hoặc mã băm) cho Ethereum cho đến khi nó trở lại là một số nguyên; chúng sẽ trả về `503 unavailable`.
* **`503 gateway_overloaded`**: thử lại với backoff (`Retry-After: 1`).
* **Bộ dữ liệu**: các bộ dữ liệu mà Ethereum phục vụ được liệt kê trong `features` của `GET /v1/data/chains`; các bộ dữ liệu khác trả về `422 no_coverage` (không tính phí). Giao dịch và chuyển giao của địa chỉ chỉ bao gồm trong cửa sổ: phản hồi vượt qua điểm bắt đầu được đánh dấu là `meta.coverage: "partial"`.

## Khám phá chuỗi theo chương trình

Sử dụng các endpoint công khai này để khám phá các chuỗi được hỗ trợ và trạng thái của chúng:

### 1. Trạng thái dịch vụ (GET /v1/status)

Một endpoint công khai không yêu cầu API key (CORS `*`). Chỉ liệt kê các chuỗi khả dụng công khai và trả về trạng thái của chúng cùng khối mới nhất được lập chỉ mục:

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

Phản hồi mẫu:

```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
      }
    }
  ]
}
```

Trường `name` của mỗi mục luôn là tên hiển thị của chuỗi bằng tiếng Anh. `jsonrpc` và `data` cho biết chuỗi có khả dụng cho JSON-RPC và Data API hay không; `status` là `"ok"` hoặc `"unavailable"`. Nếu một chuỗi đang đồng bộ, các lệnh gọi đến chuỗi đó sẽ trả về `-32010`. Trong `/v1/status`, `status` báo cáo JSON-RPC có hoạt động hay không và `data_status` báo cáo Data API có hoạt động hay không (`"ok"`, `"syncing"` hoặc `"unavailable"`); trong `/v1/data/chains`, `coverage.has_data` bằng `false` có nghĩa là chuỗi chưa có dữ liệu được lập chỉ mục.

### 2. Các chuỗi của Data API (GET /v1/data/chains)

Yêu cầu API key trong header `x-api-key` (có tính phí). Trả về các chuỗi công khai được phục vụ bởi Data API, mỗi chuỗi đi kèm các tính năng khả dụng (`features`), các khối được bao phủ (`coverage`), các mốc đồng thuận `safe`/`finalized` của node và trạng thái của chúng (`finality`), cùng các giới hạn cho mỗi yêu cầu (`limits`):

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

Phản hồi mẫu:

```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` báo cáo các mốc đồng thuận của node (`model` là `"node_tags"`), trạng thái của các mốc (`status` là `"ok"`, `"stale"` hoặc `"unavailable"`) và giá trị hiện tại của `safe_block` cùng `finalized_block` (`safe_block >= finalized_block`, và cả hai chỉ là `null` khi trạng thái là `"unavailable"`).

`coverage.from_block` là khối thấp nhất được lập chỉ mục, được truy vấn theo thời gian thực. Giá trị này là `0` khi lịch sử chuỗi bắt đầu từ khối nguyên thủy (genesis). Chỉ có thể là `null` khi chuỗi chưa có khối nào được lập chỉ mục (`has_data = false`) hoặc khi không thể xác định điểm bắt đầu: hãy coi `null` là không xác định — không phải lịch sử đầy đủ cũng không phải là `0` — và các yêu cầu lịch sử trong trường hợp đó sẽ trả về `503 unavailable`. Luôn truy vấn endpoint này trong thời gian chạy thay vì mã hóa cứng giá trị trong mã nguồn. `coverage.traces_from_block` là khối đầu tiên có dữ liệu trace; yêu cầu trace trước khối này hoặc trong khoảng trống sẽ trả về `422 no_coverage` (không tính phí).

Gọi `/v1/data/{chain}/…` với một chuỗi không xác định hoặc không công khai sẽ trả về HTTP `404` với `error.code` `not_found` (không tính phí; tên chuỗi phải là slug chính xác viết bằng chữ thường).
