# Unterstützte Chains

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

BlockVectra ist ein Multi-Chain-Blockchain-Datenanbieter: JSON-RPC auf jeder von uns unterstützten Chain und die Data API, wo sie verfügbar ist.

## Ein Schlüssel für alle Chains

* **Universeller Schlüssel**: Derselbe API-Schlüssel funktioniert auf jedem von BlockVectra unterstützten Blockchain-Netzwerk — keine separaten Schlüssel pro Chain.
* **Chain in der URL**: Jede Anfrage benennt ihre Chain explizit über das Pfadsegment `{chain}`.
* **Aggregierte Nutzung**: Kontoguthaben, Compute-Unit-Rate-Limit-Buckets (CU) und Limits für Anfragen pro Sekunde im kostenlosen Tarif werden über alle Chains hinweg geteilt.
* **Preise**: Siehe [Preise](https://blockvectra.com/de/pricing/).

## Ohne API-Schlüssel ausprobieren

Wählen Sie einen [kostenlosen öffentlichen RPC-Endpunkt](https://blockvectra.com/de/free/#public-rpc) für Wallet-Methoden ohne API-Schlüssel. Öffentliche Methoden und Limits pro IP sind pro Netzwerk aufgeführt; siehe [Schnellstart](https://docs.blockvectra.com/de/quickstart/) für ein Aufrufbeispiel.

## URL-Vorlagen

Standard-URL-Strukturen für den Aufruf von JSON-RPC und Data API:

| Dienst   | Modus               | URL-Vorlage                  | Hinweise                                                                                    |
| -------- | ------------------- | ---------------------------- | ------------------------------------------------------------------------------------------- |
| JSON-RPC | Schlüssel im Pfad   | `POST /v1/{chain}/{api_key}` | Einfachste Form; empfohlen für curl und HTTP-Clients                                        |
| JSON-RPC | Schlüssel im Header | `POST /v1/{chain}`           | Schlüssel im Anfrage-Header `x-api-key: {api_key}` übergeben                                |
| Data API | REST-Endpunkte      | `GET /v1/data/{chain}/…`     | Schlüssel im Anfrage-Header `x-api-key` übergeben                                           |
| Status   | Öffentlicher Status | `GET /v1/status`             | Kein Schlüssel erforderlich; gibt Status und aktuellen Head jeder öffentlichen Chain zurück |

> **Hinweis**: Eine Anfrage ohne Chain-Segment (z. B. `POST /v1` oder `POST /v1/`) gibt HTTP 404 mit leerem Body zurück. Siehe [Schnellstart](https://docs.blockvectra.com/de/quickstart/) für Einrichtungsdetails.

## Matrix der unterstützten Chains

Die derzeit auf BlockVectra verfügbaren Blockchain-Netzwerke und deren Dienstfunktionen:

Endpunkte, Methoden mit API-Schlüssel, Abonnements, Senden von Transaktionen, State- und Log-Limits, Datensätze, zugehörige Testnets und Anleitungen werden pro Chain dargestellt. Unbekannte Informationen bleiben unbekannt. Klappen Sie eine Chain unterhalb der Matrix auf, um die von dieser Chain unterstützten Anfragen anzuzeigen.

| Chain | {chain} | Chain-ID | Tracing | Öffentlicher Endpunkt | WebSocket | Data API | Methoden mit API-Schlüssel | Webhook-Push | Transaktionen senden | Transaktionen senden (öffentlicher Endpunkt ohne Key) | Fenster der Zustandshistorie | eth_getLogs maximaler Blockbereich | Data API Datensätze | Zugehörige Testnetze | Zugehörige Anleitungen |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [arb_mainnet RPC und Data API](https://blockvectra.com/de/chains/arb_mainnet/) | arb_mainnet | 42161 | ✓ | `https://api.blockvectra.com/v1/arb_mainnet/public` | Nicht unterstützt | Verfügbar | 43 | [Unterstützt · Bestätigungen 1–1 (Standard 1)](https://blockvectra.com/de/webhooks/), [Webhook-Push-Anleitung](https://docs.blockvectra.com/de/guides/webhook-push/) | Unterstützt | Unterstützt | Historischer Zustand für die letzten 6,000 Blöcke | 1,000 Blöcke | Blöcke, Transaktionen, Adresstransaktionen, Token-Transfers, Token-Metadaten, Datenaktualität | Unbekannt | Unbekannt |
| [base_mainnet RPC und Data API](https://blockvectra.com/de/chains/base_mainnet/) | base_mainnet | 8453 | — | `https://api.blockvectra.com/v1/base_mainnet/public` | Nicht unterstützt | Verfügbar | 39 | [Unterstützt · Bestätigungen 1–1 (Standard 1)](https://blockvectra.com/de/webhooks/), [Webhook-Push-Anleitung](https://docs.blockvectra.com/de/guides/webhook-push/) | Unterstützt | Unterstützt | Historischer Zustand für die letzten 10,000 Blöcke | 1,000 Blöcke | Blöcke, Transaktionen, Adresstransaktionen, Token-Transfers, Token-Metadaten, Datenaktualität | Unbekannt | [Base](https://docs.blockvectra.com/de/guides/base/) |
| [bsc_mainnet RPC und Data API](https://blockvectra.com/de/chains/bsc_mainnet/) | bsc_mainnet | 56 | — | `https://api.blockvectra.com/v1/bsc_mainnet/public` | Nicht unterstützt | Verfügbar | 25 | [Unterstützt · Bestätigungen 1–1 (Standard 1)](https://blockvectra.com/de/webhooks/), [Webhook-Push-Anleitung](https://docs.blockvectra.com/de/guides/webhook-push/) | Unterstützt | Unterstützt | Historischer Zustand für die letzten 100 Blöcke | 1,000 Blöcke | Blöcke, Transaktionen, Adresstransaktionen, Token-Transfers, Token-Metadaten, Datenaktualität | Unbekannt | Unbekannt |
| [Ethereum RPC und Data API](https://blockvectra.com/de/chains/eth_mainnet/) | eth_mainnet | 1 | ✓ | `https://api.blockvectra.com/v1/eth_mainnet/public` | Nicht unterstützt | Verfügbar | 38 | [Unterstützt · Bestätigungen 1–1 (Standard 1)](https://blockvectra.com/de/webhooks/), [Webhook-Push-Anleitung](https://docs.blockvectra.com/de/guides/webhook-push/) | Unterstützt | Unterstützt | Historischer Zustand für die letzten 250,000 Blöcke | 1,000 Blöcke | Blöcke, Transaktionen, Adresstransaktionen, Token-Transfers, Token-Metadaten, Datenaktualität | Unbekannt | Unbekannt |
| [eth_sepolia RPC und Data API](https://blockvectra.com/de/chains/eth_sepolia/) | eth_sepolia | 11155111 | — | `https://api.blockvectra.com/v1/eth_sepolia/public` | Nicht unterstützt | Verfügbar | 29 | [Unterstützt · Bestätigungen 1–1 (Standard 1)](https://blockvectra.com/de/webhooks/), [Webhook-Push-Anleitung](https://docs.blockvectra.com/de/guides/webhook-push/) | Unterstützt | Unterstützt | Unbekannt | 1,000 Blöcke | Blöcke, Transaktionen, Adresstransaktionen, Token-Transfers, Token-Metadaten, Datenaktualität | Unbekannt | Unbekannt |
| [HyperEVM RPC und Data API](https://blockvectra.com/de/chains/hyperevm_mainnet/) | hyperevm_mainnet | 999 | — | `https://api.blockvectra.com/v1/hyperevm_mainnet/public` | Nicht unterstützt | Verfügbar | 24 | [Unterstützt · Bestätigungen 1–1 (Standard 1)](https://blockvectra.com/de/webhooks/), [Webhook-Push-Anleitung](https://docs.blockvectra.com/de/guides/webhook-push/) | Nicht unterstützt | Nicht unterstützt | Unbekannt | 1,000 Blöcke | Blöcke, Transaktionen, Adresstransaktionen, Token-Transfers, Token-Metadaten, Salden, Inhaber, NFT-Bestände, Datenaktualität | Unbekannt | [HyperEVM backfill and polling](https://docs.blockvectra.com/de/guides/hyperevm-backfill/) |
| [polygon_mainnet RPC und Data API](https://blockvectra.com/de/chains/polygon_mainnet/) | polygon_mainnet | 137 | ✓ | `https://api.blockvectra.com/v1/polygon_mainnet/public` | Nicht unterstützt | Verfügbar | 43 | [Unterstützt · Bestätigungen 1–1 (Standard 1)](https://blockvectra.com/de/webhooks/), [Webhook-Push-Anleitung](https://docs.blockvectra.com/de/guides/webhook-push/) | Unterstützt | Unterstützt | Historischer Zustand für die letzten 126 Blöcke | 1,000 Blöcke | Blöcke, Transaktionen, Adresstransaktionen, Token-Transfers, Token-Metadaten, Datenaktualität | Unbekannt | Unbekannt |
| [Robinhood Chain RPC und Data API](https://blockvectra.com/de/chains/robinhood_mainnet/) | robinhood_mainnet | 4663 | ✓ | `https://api.blockvectra.com/v1/robinhood_mainnet/public` | Unterstützt (newHeads, logs) | Verfügbar | 43 | [Unterstützt · Bestätigungen 1–1 (Standard 1)](https://blockvectra.com/de/webhooks/), [Webhook-Push-Anleitung](https://docs.blockvectra.com/de/guides/webhook-push/) | Unterstützt | Unterstützt | Historischer Zustand für die letzten 900 Blöcke | 1,000 Blöcke | Blöcke, Transaktionen, Adresstransaktionen, Token-Transfers, Token-Metadaten, Salden, Inhaber, NFT-Bestände, DEX-Swaps, DEX-Preise, Tokenisierte Aktien, Transaktions-Traces, Datenaktualität | Unbekannt | [Robinhood Chain](https://docs.blockvectra.com/de/guides/robinhood-chain/), [Stock token multiplier](https://docs.blockvectra.com/de/guides/stock-token-multiplier/), [Tokenized stocks](https://docs.blockvectra.com/de/guides/stocks/) |
| [robinhood_testnet RPC](https://blockvectra.com/de/chains/robinhood_testnet/) | robinhood_testnet | 46630 | ✓ | `https://api.blockvectra.com/v1/robinhood_testnet/public` | Unterstützt (newHeads, logs) | Noch nicht verfügbar | 43 | [Unterstützt · Bestätigungen 1–1 (Standard 1)](https://blockvectra.com/de/webhooks/), [Webhook-Push-Anleitung](https://docs.blockvectra.com/de/guides/webhook-push/) | Unterstützt | Unterstützt | Historischer Zustand für die letzten 1,023 Blöcke | 1,000 Blöcke | Nicht unterstützt | Unbekannt | [Testnet faucet](https://docs.blockvectra.com/de/guides/robinhood-testnet-faucet/), [Robinhood Chain Testnet starter](https://docs.blockvectra.com/de/guides/robinhood-testnet-starter/) |

## Nächste Schritte mit einem API-Schlüssel

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

[Webhook-Abonnement erstellen](https://blockvectra.com/de/webhooks/) · [Webhook-Abonnement erstellen](https://docs.blockvectra.com/de/guides/webhook-push/) · [Nutzung und CU](https://console.blockvectra.com/usage/) · [Guthaben aufladen](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/de/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/de/api/data/)

[Webhook-Abonnement erstellen](https://blockvectra.com/de/webhooks/) · [Webhook-Abonnement erstellen](https://docs.blockvectra.com/de/guides/webhook-push/) · [Nutzung und CU](https://console.blockvectra.com/usage/) · [Guthaben aufladen](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/de/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/de/api/data/)

[Webhook-Abonnement erstellen](https://blockvectra.com/de/webhooks/) · [Webhook-Abonnement erstellen](https://docs.blockvectra.com/de/guides/webhook-push/) · [Nutzung und CU](https://console.blockvectra.com/usage/) · [Guthaben aufladen](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/de/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/de/api/data/)

[Webhook-Abonnement erstellen](https://blockvectra.com/de/webhooks/) · [Webhook-Abonnement erstellen](https://docs.blockvectra.com/de/guides/webhook-push/) · [Nutzung und CU](https://console.blockvectra.com/usage/) · [Guthaben aufladen](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/de/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/de/api/data/)

[Webhook-Abonnement erstellen](https://blockvectra.com/de/webhooks/) · [Webhook-Abonnement erstellen](https://docs.blockvectra.com/de/guides/webhook-push/) · [Nutzung und CU](https://console.blockvectra.com/usage/) · [Guthaben aufladen](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/de/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/de/api/data/)

[Webhook-Abonnement erstellen](https://blockvectra.com/de/webhooks/) · [Webhook-Abonnement erstellen](https://docs.blockvectra.com/de/guides/webhook-push/) · [Nutzung und CU](https://console.blockvectra.com/usage/) · [Guthaben aufladen](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/de/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/de/api/data/)

[Webhook-Abonnement erstellen](https://blockvectra.com/de/webhooks/) · [Webhook-Abonnement erstellen](https://docs.blockvectra.com/de/guides/webhook-push/) · [Nutzung und CU](https://console.blockvectra.com/usage/) · [Guthaben aufladen](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/de/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/de/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/de/guides/websocket-subscriptions/)

[Webhook-Abonnement erstellen](https://blockvectra.com/de/webhooks/) · [Webhook-Abonnement erstellen](https://docs.blockvectra.com/de/guides/webhook-push/) · [Nutzung und CU](https://console.blockvectra.com/usage/) · [Guthaben aufladen](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/de/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/de/guides/websocket-subscriptions/)

[Webhook-Abonnement erstellen](https://blockvectra.com/de/webhooks/) · [Webhook-Abonnement erstellen](https://docs.blockvectra.com/de/guides/webhook-push/) · [Nutzung und CU](https://console.blockvectra.com/usage/) · [Guthaben aufladen](https://console.blockvectra.com/billing/)

**HyperEVM**
HyperEVM-Blöcke enthalten HyperCore-Systemtransaktionen (von Adresse 0x2222…2222 oder 0x20…, gasPrice 0).
Das Senden von Transaktionen wird auf dieser Chain noch nicht unterstützt (`eth_sendRawTransaction` gibt `-32601` `method_not_allowed` zurück); Lesemethoden funktionieren normal.

[Live-Status ansehen →](https://blockvectra.com/de/status/)

## Ethereum

* **Chain ID**: `1`
* **Chain-Name (`{chain}` in URLs)**: `eth_mainnet`, z. B. `POST /v1/eth_mainnet/{api_key}` oder `GET /v1/data/eth_mainnet/…`.

### JSON-RPC

* **Methoden**: Verfügbare Methoden für jede Chain werden durch `methods.allow` / `deny` in `GET /v1/chains` bestimmt (siehe [Methodenrichtlinie](https://docs.blockvectra.com/de/api/json-rpc/#method-policy)); Methoden außerhalb dieses Rahmens geben `-32601` zurück.
* **Nur aktuelle Daten**: Das historische State-Fenster wird durch `state_window_blocks` in `GET /v1/chains` festgelegt. Historische State-Abfragen außerhalb des Fensters geben `-32011` zurück (nicht abgerechnet); Abfragen von Blöcken, Receipts und Logs außerhalb des Fensters geben `-32000 old data not available due to pruning` zurück (nicht abgerechnet); eine Transaktion, die nach Hash außerhalb des Fensters gesucht wird, gibt `result: null` zurück.
* **`eth_getLogs`**: Die maximale Blockspanne pro Anfrage beträgt `max_logs_block_range` in `GET /v1/chains`.

### Data API

* **Nur aktuelle Daten**: Die Datenabdeckung für Ethereum wird durch `coverage.from_block` in `GET /v1/data/chains` bestimmt. Eine Blocknummer oder ein Fenster unterhalb des Anfangs gibt `422 no_coverage` zurück; ein Transaktions-Hash, der das Fenster verlassen hat, liefert `404`.
* **Wenn `from_block` gleich `null` ist**: Der Startpunkt ist vorübergehend unbekannt. Behandeln Sie dies nicht als `0` oder vollständige Historie und senden Sie keine historischen Anfragen (nach Blocknummer, Fenster oder Hash) für Ethereum, bis es wieder eine Ganzzahl ist; diese geben `503 unavailable` zurück.
* **`503 gateway_overloaded`**: Mit Backoff wiederholen (`Retry-After: 1`).
* **Datensätze**: Die von Ethereum bereitgestellten Datensätze sind in `features` von `GET /v1/data/chains` aufgeführt; die übrigen geben `422 no_coverage` zurück (nicht abgerechnet). Adress-Transaktionen und Transfers decken nur das Fenster ab: Eine Antwort, die dessen Beginn überschreitet, wird mit `meta.coverage: "partial"` gekennzeichnet.

## Chains programmatisch ermitteln

Verwenden Sie diese öffentlichen Endpunkte, um unterstützte Chains und deren Status zu ermitteln:

### 1. Dienststatus (`GET /v1/status`)

Ein öffentlicher Endpunkt, der keinen API-Schlüssel erfordert (CORS `*`). Er listet nur öffentlich verfügbare Chains auf und gibt deren Status sowie den indizierten Head zurück:

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

Beispielantwort:

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

Das Feld `name` jedes Eintrags entspricht stets dem englischen Anzeigenamen der Chain. `jsonrpc` und `data` geben an, ob diese Chain für JSON-RPC bzw. die Data API freigegeben ist; `status` ist `"ok"` oder `"unavailable"`. Wenn eine Chain synchronisiert wird, geben Aufrufe an diese Chain `-32010` zurück. Unter `/v1/status` gibt `status` an, ob JSON-RPC funktionsfähig ist, und `data_status` gibt an, ob die Data API funktionsfähig ist (`"ok"`, `"syncing"` oder `"unavailable"`); in `/v1/data/chains` bedeutet ein `coverage.has_data` von `false`, dass für die Chain noch keine indizierten Daten vorliegen.

### 2. Data-API-Chains (`GET /v1/data/chains`)

Erfordert einen API-Schlüssel im Header `x-api-key` (wird abgerechnet). Gibt die öffentlichen Chains zurück, die von der Data API bedient werden, jeweils mit den bereitgestellten Funktionen (`features`), den durch die Daten abgedeckten Blöcken (`coverage`), den Konsensmarkern `safe`/`finalized` des Nodes und deren Status (`finality`) sowie den Obergrenzen pro Anfrage (`limits`):

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

Beispielantwort:

```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` gibt die Konsensmarker des Nodes an (`model` ist `"node_tags"`), die Integrität der Marker (`status` ist `"ok"`, `"stale"` oder `"unavailable"`) sowie den aktuellen `safe_block` und `finalized_block` (`safe_block >= finalized_block`, und beide sind nur dann `null`, wenn der Status `"unavailable"` ist).

`coverage.from_block` ist der niedrigste indizierte Block, der live ausgelesen wird. Er ist `0`, sobald die Historie der Chain den Genesis-Block erreicht. Er kann nur dann `null` sein, wenn die Chain überhaupt keinen indizierten Block aufweist (`has_data = false`) oder solange der Startpunkt nicht bestimmt werden kann: Behandeln Sie `null` als unbekannt — weder als vollständige Historie noch als `0` — und historische Anfragen geben dann `503 unavailable` zurück. Lesen Sie diesen Wert zur Laufzeit stets von diesem Endpunkt ab, anstatt ihn fest im Code zu hinterlegen. `coverage.traces_from_block` ist der erste Block mit Trace-Daten; eine Trace-Anfrage davor oder innerhalb einer Lücke gibt `422 no_coverage` zurück (nicht abgerechnet).

Der Aufruf von `/v1/data/{chain}/…` mit einer unbekannten oder nicht-öffentlichen Chain gibt HTTP `404` mit `error.code` `not_found` zurück (wird nicht abgerechnet; der Chain-Name muss der exakte Kleinbuchstaben-Slug sein).
