Zum Hauptinhalt springen

Einen Node betreiben

Dieser Leitfaden behandelt den Betrieb eines reinen Node-Deployments von QoreChain — ein Full- oder RPC-Node, der die Chain synchronisiert und Endpunkte für Integrationen bereitstellt, ohne Validator-Aufgaben. Er richtet sich an Börsen (CEX), Wallet-Backends, Indexer und Integratoren, die zuverlässigen Lese-/Schreibzugriff auf das Netzwerk benötigen, aber keine Blöcke signieren.

hinweis

Für Blockproduktion, Staking, Slashing und Pool-Klassifizierung siehe stattdessen Einen Validator betreiben. Ein reines Node-Deployment hält niemals einen Validator-Konsensschlüssel und erscheint niemals im aktiven Set.

warnung

Binaries, Genesis und Snapshots werden unter download.qore.host mit SHA-256-Prüfsummen veröffentlicht. Verifizieren Sie Prüfsummen immer vor dem Installieren oder Entpacken, und verifizieren Sie Einzahlungen ausschließlich gegen Ihren eigenen, synchronisierten Node.


Node vs. Validator

AspektReiner Node (dieser Leitfaden)Validator
KonsensschlüsselKeinered25519-Konsensschlüssel (muss gesichert werden)
BlockproduktionNeinJa — schlägt Blöcke vor und signiert sie
Staking / SlashingNicht anwendbarSelbstdelegation, Slashing-Risiko
HauptzweckRPC/REST/gRPC/EVM/SVM für Integrationen bereitstellenNetzwerk sichern, Rewards verdienen
Öffentliche ErreichbarkeitRPC/EVM-Endpunkte typischerweise exponiertValidator hinter Sentry-Nodes verborgen

Zielnetzwerke

NetzwerkChain-IDEVM-Chain-IDHinweise
Mainnetqorechain-vladi9801 (hex 0x2649)Primär — live seit 7. Juni 2026
Testnetqorechain-diana9800Integrationen zuerst hier erproben

Setzen Sie in diesem Leitfaden durchgehend die passende --chain-id für Ihr Zielnetzwerk ein. Die Beispiele verwenden standardmäßig das Mainnet.


Empfohlene Hardware

ProfilCPURAMFestplatte (NVMe-SSD)Netzwerk
Geprunter RPC-Node4 Kerne16 GB500 GB+100 Mbps+
Full-/Archive-Node8 Kerne32 GB2 TB+ (wächst mit der Zeit)1 Gbps
Börsen-Integration8 Kerne32 GB2 TB+ mit Reserve1 Gbps

Eine NVMe-SSD wird dringend empfohlen — der Chain-State und die EVM-/SVM-Stores sind I/O-intensiv. Archive-Nodes (kein Pruning, vollständige Tx-Indexierung) wachsen kontinuierlich; stellen Sie Speicherplatz mit Reserve und Monitoring bereit.


Deployment

Docker Compose

Ein reines Node-Deployment mit Docker Compose. Pinnen Sie das Image-Tag auf die live laufende Chain-Version (v3.1.85 im Mainnet) und mounten Sie ein persistentes Volume für die Chain-Daten.

# docker-compose.yml
services:
qorechain-node:
image: qorechain/qorechaind:v3.1.85
container_name: qorechain-node
restart: unless-stopped
command: ["start", "--home", "/root/.qorechaind"]
volumes:
- qorechain-data:/root/.qorechaind
ports:
- "26657:26657" # RPC
- "26656:26656" # P2P
- "1317:1317" # REST
- "9090:9090" # gRPC
- "8545:8545" # EVM JSON-RPC
- "8546:8546" # EVM WebSocket
- "8899:8899" # SVM RPC
- "26660:26660" # Prometheus

volumes:
qorechain-data:

Initialisieren Sie das Datenverzeichnis einmalig (Genesis- und Peer-Konfiguration werden weiter unten behandelt) und starten Sie dann:

docker compose up -d
docker compose logs -f qorechain-node

systemd

Für eine Bare-Metal-Installation betreiben Sie qorechaind unter systemd:

# /etc/systemd/system/qorechaind.service
[Unit]
Description=QoreChain node
After=network-online.target
Wants=network-online.target

[Service]
User=qorechain
ExecStart=/usr/local/bin/qorechaind start --home /var/lib/qorechaind
Restart=on-failure
RestartSec=5
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now qorechaind
sudo journalctl -u qorechaind -f

Dem Netzwerk beitreten

1. Initialisieren

qorechaind init my-node --chain-id qorechain-vladi

2. Genesis herunterladen und verifizieren

curl -fsSL https://download.qore.host/genesis.json -o ~/.qorechaind/config/genesis.json

# Cross-verify against the genesis served live by the chain:
curl -s https://rpc.qore.host/genesis | jq '.result.genesis' > /tmp/genesis-live.json

3. Peers und die Gebührenuntergrenze konfigurieren

Öffnen Sie ~/.qorechaind/config/config.toml und setzen Sie die öffentlichen Mainnet-Sentry-Peers:

persistent_peers = "0c9b83801ad519671daf19387b6635f72cb9ddd3@44.200.237.4:26656,83cab9ae05d17073c4e45c25d2422b25fff71fe7@35.174.136.254:26656"

Setzen Sie anschließend den minimalen Gaspreis in ~/.qorechaind/config/app.toml (Netzwerk-Gebührenuntergrenze: 0.1uqor):

minimum-gas-prices = "0.1uqor"

4. Synchronisierung starten

qorechaind start --minimum-gas-prices=0.1uqor

Schneller Bootstrap

Die Synchronisierung ab Genesis kann sehr lange dauern. Verwenden Sie für Integrationen State Sync oder einen Snapshot für einen schnellen Kaltstart.

State Sync

State Sync lädt einen aktuellen Snapshot des Anwendungszustands von vertrauenswürdigen RPC-Servern, anstatt jeden Block erneut abzuspielen. Konfigurieren Sie den Abschnitt [statesync] in config.toml:

[statesync]
enable = true
rpc_servers = "https://rpc.qore.host:443,https://rpc.qore.host:443"
trust_height = <TRUSTED_BLOCK_HEIGHT>
trust_hash = "<TRUSTED_BLOCK_HASH>"
trust_period = "168h0m0s"

Ermitteln Sie eine aktuelle vertrauenswürdige Höhe und deren Hash über den öffentlichen RPC:

curl -s https://rpc.qore.host/block | jq -r '.result.block.header.height, .result.block_id.hash'

Snapshot-Wiederherstellung

Alternativ laden Sie den veröffentlichten Chain-Daten-Snapshot herunter, verifizieren dessen Prüfsumme und entpacken ihn über Ihr Datenverzeichnis:

curl -fsSL https://download.qore.host/qore-vladi-snapshot-90833.tar.gz -o snapshot.tar.gz
sha256sum snapshot.tar.gz
# ebe469796ad96e692877846c7bfd8513d773321c77e415b1358790b7c4e53396

tar xzf snapshot.tar.gz -C ~/.qorechaind/
qorechaind start --minimum-gas-prices=0.1uqor
hinweis

Snapshots werden unter höhengestempelten Dateinamen veröffentlicht — prüfen Sie download.qore.host auf den aktuellsten Snapshot und dessen SHA-256-Prüfsumme, und verifizieren Sie immer vor dem Entpacken.


Pruning und Indexierung

Stimmen Sie Pruning und Transaktionsindexierung auf Ihre Integration ab. Börsen, die eine vollständige Transaktionshistorie benötigen, sollten mit minimalem Pruning und aktiviertem Transaktionsindexer laufen.

Pruning (app.toml)

# Keep recent state only — smallest disk footprint
pruning = "default"

# Keep everything — required for archive / full historical queries
# pruning = "nothing"
pruningVerhaltenAnwendungsfall
defaultBehält aktuellen State, prunt den RestRPC-Node, Kontostands-/State-Abfragen
nothingBehält den gesamten historischen StateArchive-Node, vollständige Historie
customVom Betreiber definierte Keep-/Intervall-WerteFeinabgestimmte Aufbewahrung

Transaktionsindexierung (config.toml)

[tx_index]
indexer = "kv"

Setzen Sie indexer = "kv" (oder einen umfangreicheren Indexer), damit Transaktionen per Hash und Event abfragbar sind — essenziell für Börsen, die Ein- und Auszahlungen abgleichen. Setzen Sie indexer = "null" nur, wenn Sie keine historischen Tx-Abfragen benötigen.


Endpunkte für Integrationen bereitstellen

Aktivieren und binden Sie in app.toml die API-Server, die Integratoren benötigen:

[api]
enable = true
address = "tcp://0.0.0.0:1317"

[grpc]
enable = true
address = "0.0.0.0:9090"

[json-rpc]
enable = true
address = "0.0.0.0:8545"
ws-address = "0.0.0.0:8546"
api = "eth,net,web3,qor"

Und den RPC-Listener in config.toml:

[rpc]
laddr = "tcp://0.0.0.0:26657"
EndpunktPortVerwendung für
RPC26657Broadcasting von Transaktionen, Abfragen von Blöcken/Status
REST1317HTTP-Abfragen des Chain-States
gRPC9090Programmatischer Zugriff mit hohem Durchsatz
EVM JSON-RPC8545Ethereum-kompatible Integrationen (Chain-ID 9801)
EVM WS8546EVM-Event-Subscriptions
SVM RPC8899Solana-kompatible Integrationen
warnung

Exponieren Sie RPC, EVM JSON-RPC oder gRPC niemals direkt ins öffentliche Internet ohne Reverse Proxy, Rate Limiting, Authentifizierung und Firewall. Binden Sie an 0.0.0.0 nur hinter einer kontrollierten Ingress-Schicht.


Health- und Sync-Monitoring

Sync-Status

curl -s localhost:26657/status | jq '.result.sync_info.catching_up'
  • true — synchronisiert noch.
  • false — vollständig synchronisiert und liefert den aktuellen State.
# Latest height and network
curl -s localhost:26657/status | jq '.result.sync_info.latest_block_height, .result.node_info.network'

Das Feld network sollte qorechain-vladi (Mainnet) oder qorechain-diana (Testnet) melden.

Prometheus und Grafana

QoreChain stellt Prometheus-Metriken auf Port 26660 bereit:

http://localhost:26660/metrics

Scrapen Sie diese mit einem beliebigen Prometheus-kompatiblen Collector. Wenn Sie den Docker-Compose-Monitoring-Stack betreiben, ist Grafana unter http://localhost:3001 erreichbar — legen Sie beim ersten Login eigene Zugangsdaten fest. Überwachen Sie Blockhöhen-Rückstand, Peer-Anzahl und Ressourcennutzung; alarmieren Sie, wenn catching_up dauerhaft true bleibt oder die Peer-Anzahl auf null fällt.

EVM-Endpunkt-Prüfung

curl -s -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
# Expect "0x2649" (9801) on mainnet

Bewährte Betriebspraktiken

  1. Pinnen Sie die Chain-Version. Betreiben Sie das live laufende Tag (v3.1.85 im Mainnet) und verfolgen Sie offizielle Releases für koordinierte Upgrades.

  2. Betreiben Sie redundante Nodes. Betreiben Sie mindestens zwei Nodes hinter einem Load Balancer, damit ein einzelner Neustart oder Resync den Integrationsverkehr nicht unterbricht.

  3. Verifizieren Sie Genesis und Snapshots. Validieren Sie die Genesis-SHA-256 und jede Snapshot-Prüfsumme immer gegen das offizielle Release, bevor Sie starten.

  4. Schützen Sie öffentliche Endpunkte. Stellen Sie RPC/EVM/gRPC einen Reverse Proxy, Rate Limiting und eine Firewall voran. Exponieren Sie niemals unauthentifiziertes Schreib-RPC ins Internet.

  5. Passen Sie das Pruning an den Bedarf an. Verwenden Sie pruning = "nothing" plus tx_index = "kv" für Börsen, die die vollständige Ein-/Auszahlungshistorie abgleichen; verwenden Sie default für leichtgewichtige Abfragen.

  6. Überwachen Sie die Synchronisierung kontinuierlich. Alarmieren Sie bei Blockhöhen-Rückstand, null Peers und einem Node, der in catching_up feststeckt.

Für ultraleichten Lesezugriff ohne den Betrieb eines Full Nodes siehe die Light Node-Dokumentation.


Nächste Schritte