Sari la conținutul principal

Rularea unui nod

Acest ghid acoperă rularea unei implementări QoreChain de tip doar nod — un nod complet sau RPC care sincronizează lanțul și expune endpoint-uri pentru integrare, fără atribuții de validator. Se adresează burselor (CEX), backend-urilor de portofele, indexatoarelor și integratorilor care au nevoie de acces fiabil de citire/scriere la rețea, dar nu semnează blocuri.

notă

Pentru producerea de blocuri, staking, slashing și clasificarea pool-urilor, consultați în schimb Rularea unui validator. O implementare de tip doar nod nu deține niciodată o cheie de consens de validator și nu apare niciodată în setul activ.

avertisment

Binarele, genesis-ul și snapshot-urile sunt publicate la download.qore.host cu sume de control SHA-256. Verificați întotdeauna sumele de control înainte de instalare sau extragere și verificați depunerile doar față de propriul nod sincronizat.


Nod vs Validator

AspectDoar nod (acest ghid)Validator
Cheie de consensNiciunaCheie de consens ed25519 (trebuie securizată)
Producere de blocuriNuDa — propune și semnează blocuri
Staking / slashingNu se aplicăAuto-delegare, risc de slashing
Scop principalServește RPC/REST/gRPC/EVM/SVM pentru integrăriSecurizează rețeaua, câștigă recompense
Expunere publicăEndpoint-urile RPC/EVM sunt de regulă expuseValidatorul este ascuns în spatele nodurilor sentinelă

Rețele țintă

RețeaChain IDEVM chain IDNote
Mainnetqorechain-vladi9801 (hex 0x2649)Principală — activă din 7 iun. 2026
Testnetqorechain-diana9800Exersați integrările mai întâi aici

Înlocuiți --chain-id cu valoarea potrivită rețelei dumneavoastră țintă pe parcursul acestui ghid. Exemplele folosesc implicit mainnet.


Hardware recomandat

ProfilCPURAMDisc (SSD NVMe)Rețea
Nod RPC cu pruning4 nuclee16 GB500 GB+100 Mbps+
Nod complet/arhivă8 nuclee32 GB2 TB+ (crește în timp)1 Gbps
Integrare pentru burse8 nuclee32 GB2 TB+ cu spațiu de rezervă1 Gbps

SSD-ul NVMe este puternic recomandat — starea lanțului și store-urile EVM/SVM sunt intensive la I/O. Nodurile de arhivă (fără pruning, indexare completă a tranzacțiilor) cresc continuu; provizionați discul cu spațiu de rezervă și monitorizare.


Implementare

Docker Compose

O implementare de tip doar nod cu Docker Compose. Fixați tag-ul imaginii la versiunea live a lanțului (v3.1.85 pe mainnet) și montați un volum persistent pentru datele lanțului.

# 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:

Inițializați directorul de date o singură dată (genesis-ul și configurarea peer-ilor sunt acoperite mai jos), apoi porniți:

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

systemd

Pentru o instalare bare-metal, rulați qorechaind sub 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

Alăturarea la rețea

1. Inițializare

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

2. Descărcați și verificați genesis-ul

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. Configurați peer-ii și pragul minim de comision

Deschideți ~/.qorechaind/config/config.toml și setați peer-ii sentinelă publici de pe mainnet:

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

Apoi setați prețul minim al gazului în ~/.qorechaind/config/app.toml (pragul de comision al rețelei: 0.1uqor):

minimum-gas-prices = "0.1uqor"

4. Porniți sincronizarea

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

Bootstrap rapid

Sincronizarea de la genesis poate dura mult timp. Pentru integrări, folosiți state sync sau un snapshot pentru o pornire la rece rapidă.

State sync

State sync preia un snapshot recent al stării aplicației de la servere RPC de încredere, în loc să reproducă fiecare bloc. Configurați secțiunea [statesync] din 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"

Determinați o înălțime și un hash de încredere recente de la RPC-ul public:

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

Restaurare din snapshot

Alternativ, descărcați snapshot-ul publicat cu datele lanțului, verificați-i suma de control și extrageți-l peste directorul dumneavoastră de date:

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
notă

Snapshot-urile sunt publicate sub nume de fișiere marcate cu înălțimea blocului — verificați download.qore.host pentru cel mai recent snapshot și suma sa de control SHA-256 și verificați întotdeauna înainte de extragere.


Pruning și indexare

Ajustați pruning-ul și indexarea tranzacțiilor pentru a se potrivi integrării dumneavoastră. Bursele care au nevoie de istoricul complet al tranzacțiilor ar trebui să ruleze cu pruning minim și cu un indexator de tranzacții activat.

Pruning (app.toml)

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

# Keep everything — required for archive / full historical queries
# pruning = "nothing"
pruningComportamentCaz de utilizare
defaultPăstrează starea recentă, elimină restulNod RPC, interogări de sold/stare
nothingPăstrează întreaga stare istoricăNod de arhivă, istoric complet
customValori keep/interval definite de operatorRetenție ajustată

Indexarea tranzacțiilor (config.toml)

[tx_index]
indexer = "kv"

Setați indexer = "kv" (sau un indexator mai bogat) astfel încât tranzacțiile să poată fi interogate după hash și eveniment — esențial pentru bursele care reconciliază depunerile și retragerile. Setați indexer = "null" doar dacă nu aveți nevoie de interogări istorice ale tranzacțiilor.


Expunerea endpoint-urilor pentru integrare

Activați și legați serverele API de care au nevoie integratorii în app.toml:

[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"

Și listener-ul RPC în config.toml:

[rpc]
laddr = "tcp://0.0.0.0:26657"
EndpointPortUtilizare pentru
RPC26657Difuzarea tranzacțiilor, interogarea blocurilor/stării
REST1317Interogări HTTP ale stării lanțului
gRPC9090Acces programatic de mare debit
EVM JSON-RPC8545Integrări compatibile Ethereum (chain ID 9801)
EVM WS8546Abonamente la evenimente EVM
SVM RPC8899Integrări compatibile Solana
avertisment

Nu expuneți niciodată RPC, EVM JSON-RPC sau gRPC direct pe internetul public fără un reverse proxy, limitare de rată, autentificare și un firewall. Legați la 0.0.0.0 doar în spatele unui strat de ingress controlat.


Monitorizarea sănătății și a sincronizării

Starea sincronizării

curl -s localhost:26657/status | jq '.result.sync_info.catching_up'
  • true — încă se sincronizează.
  • false — complet sincronizat și servește starea curentă.
# Latest height and network
curl -s localhost:26657/status | jq '.result.sync_info.latest_block_height, .result.node_info.network'

Câmpul network ar trebui să raporteze qorechain-vladi (mainnet) sau qorechain-diana (testnet).

Prometheus și Grafana

QoreChain expune metrici Prometheus pe portul 26660:

http://localhost:26660/metrics

Colectați-le cu orice colector compatibil Prometheus. Dacă rulați stack-ul de monitorizare Docker Compose, Grafana este disponibilă la http://localhost:3001 — setați-vă propriile credențiale la prima autentificare. Urmăriți întârzierea înălțimii blocurilor, numărul de peer-i și utilizarea resurselor; alertați când catching_up rămâne true sau numărul de peer-i scade la zero.

Verificarea endpoint-ului EVM

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

Bune practici operaționale

  1. Fixați versiunea lanțului. Rulați tag-ul live (v3.1.85 pe mainnet) și urmăriți lansările oficiale pentru upgrade-uri coordonate.

  2. Rulați noduri redundante. Operați cel puțin două noduri în spatele unui load balancer, astfel încât un singur restart sau o resincronizare să nu întrerupă traficul de integrare.

  3. Verificați genesis-ul și snapshot-urile. Validați întotdeauna SHA-256-ul genesis-ului și orice sumă de control a snapshot-urilor față de lansarea oficială înainte de pornire.

  4. Protejați endpoint-urile publice. Puneți RPC/EVM/gRPC în spatele unui reverse proxy, al limitării de rată și al unui firewall. Nu expuneți niciodată pe internet un RPC de scriere neautentificat.

  5. Potriviți pruning-ul cu nevoia. Folosiți pruning = "nothing" plus tx_index = "kv" pentru bursele care reconciliază istoricul complet al depunerilor/retragerilor; folosiți default pentru interogări ușoare.

  6. Monitorizați sincronizarea în mod continuu. Alertați la întârzierea înălțimii blocurilor, la zero peer-i și la un nod blocat în catching_up.

Pentru acces de citire ultra-ușor fără a rula un nod complet, consultați documentația Light Node.


Pașii următori