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.
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.
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
| Aspect | Doar nod (acest ghid) | Validator |
|---|---|---|
| Cheie de consens | Niciuna | Cheie de consens ed25519 (trebuie securizată) |
| Producere de blocuri | Nu | Da — propune și semnează blocuri |
| Staking / slashing | Nu se aplică | Auto-delegare, risc de slashing |
| Scop principal | Servește RPC/REST/gRPC/EVM/SVM pentru integrări | Securizează rețeaua, câștigă recompense |
| Expunere publică | Endpoint-urile RPC/EVM sunt de regulă expuse | Validatorul este ascuns în spatele nodurilor sentinelă |
Rețele țintă
| Rețea | Chain ID | EVM chain ID | Note |
|---|---|---|---|
| Mainnet | qorechain-vladi | 9801 (hex 0x2649) | Principală — activă din 7 iun. 2026 |
| Testnet | qorechain-diana | 9800 | Exersaț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
| Profil | CPU | RAM | Disc (SSD NVMe) | Rețea |
|---|---|---|---|---|
| Nod RPC cu pruning | 4 nuclee | 16 GB | 500 GB+ | 100 Mbps+ |
| Nod complet/arhivă | 8 nuclee | 32 GB | 2 TB+ (crește în timp) | 1 Gbps |
| Integrare pentru burse | 8 nuclee | 32 GB | 2 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
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"
pruning | Comportament | Caz de utilizare |
|---|---|---|
default | Păstrează starea recentă, elimină restul | Nod RPC, interogări de sold/stare |
nothing | Păstrează întreaga stare istorică | Nod de arhivă, istoric complet |
custom | Valori keep/interval definite de operator | Retenț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"
| Endpoint | Port | Utilizare pentru |
|---|---|---|
| RPC | 26657 | Difuzarea tranzacțiilor, interogarea blocurilor/stării |
| REST | 1317 | Interogări HTTP ale stării lanțului |
| gRPC | 9090 | Acces programatic de mare debit |
| EVM JSON-RPC | 8545 | Integrări compatibile Ethereum (chain ID 9801) |
| EVM WS | 8546 | Abonamente la evenimente EVM |
| SVM RPC | 8899 | Integrări compatibile Solana |
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
-
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.
-
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.
-
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.
-
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.
-
Potriviți pruning-ul cu nevoia. Folosiți
pruning = "nothing"plustx_index = "kv"pentru bursele care reconciliază istoricul complet al depunerilor/retragerilor; folosițidefaultpentru interogări ușoare. -
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
- Conectarea la Mainnet — Genesis-ul mainnet, peer-ii și detaliile de conectare
- Rularea unui validator — Adăugați atribuții de producere a blocurilor
- Compilarea din sursă — Compilați binarul
qorechaind - Light Node — Acces de citire ultra-ușor (documentație în curând)