CLI di QoreChain (@qorechain/qore-cli, comando qore)
qore legge QoreChain dal terminale. È pensata per sviluppatori, operatori e script che vogliono cercare una transazione, controllare se la sua firma post-quantistica si verifica, leggere un account o l'insieme dei validatori, simulare una transazione o preparare un trasferimento non firmato, senza scrivere codice. Ogni comando esegue uno strumento del server MCP di QoreChain, e --json stampa esattamente il JSON restituito dallo strumento, così uno script e un agente AI vedono gli stessi dati.
Nulla viene mai firmato o trasmesso, e la CLI non custodisce chiavi. Versione 0.1.0, pubblicata il 27 ottobre 2026, Apache-2.0, Node.js 20 o successivo.
Innovazioni
- JSON identico all'output dello strumento MCP.
qore <command> --jsonstampa lo stesso oggetto, con gli stessi nomi di campo, restituito dallo strumento MCP corrispondente. Senza--jsonlo stesso oggetto viene stampato come testo leggibile. Uno script scritto per uno funziona con l'altro. - Stato post-quantistico dal terminale.
qore pq status <txhash>indica se la transazione contiene esattamente un livello ibrido e se la firma ML-DSA-87 (FIPS 204) si verifica rispetto alla chiave che il firmatario ha registrato on-chain, per sign-bytes v1 e v2.qore pq status <address>indica la chiave registrata, il suo tipo, la prova di possesso e la finestra di autorizzazione EVM. - Una pipeline per un trasferimento che non richiede chiavi.
prepare-transfer --jsonscrive un trasferimento non firmato esimulateaccetta quel file, così puoi costruire, controllare e valutare il costo di un trasferimento da uno script di shell. Il passaggio di firma resta nel tuo wallet o in QoreSign. - Codici di uscita stabili. 0 è successo, 1 è un errore dello strumento che riporta un codice stabile come
NOT_FOUNDoINVALID_INPUT, e 2 è un errore d'uso, così uno script può ramificare in base al risultato.
A cosa serve
- Verificare che una transazione contenesse la firma ibrida. Subito dopo una trasmissione,
qore pq status <hash>riporta il livello di firma e se il livello ML-DSA-87 si verifica rispetto alla chiave registrata dal firmatario. - Consultare lo stato della chain da un terminale.
qore block,qore account <address>,qore validatorseqore search <query>rispondono a una domanda rapida senza aprire un explorer né scrivere codice. - Valutare il costo e controllare un trasferimento prima di firmarlo.
prepare-transferscrive un trasferimento non firmato,simulatemostra il gas, le variazioni di saldo ed eventuali rifiuti decodificati, eestimate-feefornisce la commissione suggerita. Firmi nel tuo wallet o con QoreSign. - Leggere contratti da uno script o da un job di CI.
qore read-contract --to 0x... --function "balanceOf(address)" --arg 0x... --returns uint256 --json | jqcontrolla il saldo di un token o una view di un contratto e ne analizza il risultato. - Script di shell e monitoraggio. L'output
--jsonpiù i codici di uscita stabili (0, 1, 2) permettono a uno script di ramificare in base al risultato. Lo stesso JSON è quello restituito dal server MCP, quindi un client AI e uno script vedono gli stessi dati.
Come funziona
Ogni comando qore esegue uno strumento del nucleo condiviso del server MCP, nel tuo processo, sugli endpoint pubblici REST, RPC e JSON-RPC EVM della rete che scegli. Le risposte sono costruite campo per campo a partire dalla risposta della chain, il testo degli errori a monte non viene mai stampato e un guasto corrisponde a uno dei sette codici di errore stabili (NOT_FOUND, INVALID_INPUT, UPSTREAM_UNAVAILABLE, NOT_AVAILABLE_ON_CHAIN, RATE_LIMITED, UNAUTHORIZED, INTERNAL_ERROR). Ogni richiesta a monte ha un timeout di 10 secondi (--timeout lo modifica), un limite di risposta di 4 MiB e nessun nuovo tentativo. I controlli della firma ibrida girano in locale con QoreSign. Nulla viene firmato o inviato. I dettagli di ogni strumento sono nella pagina del server MCP.
Come si usa
Eseguila senza installare, oppure installala una volta sola:
npx -y @qorechain/qore-cli chain
npm install -g @qorechain/qore-cli
qore --version
I comandi sono in sola lettura e usano la testnet per impostazione predefinita:
# the latest block, and the chain info
qore block
qore chain
# is this testnet transaction hybrid-signed, and does the ML-DSA-87 layer verify?
qore pq status F642F59F2A2FEDA2B3A61A3CF49F8B5F792D65985027997004FEBB22A6F42152
# an account on mainnet, as JSON
qore account qor1... --network mainnet --json
# the top bonded validators
qore validators --limit 3
# an unsigned transfer, then its simulation (nothing is signed or sent)
qore prepare-transfer --from qor1... --to qor1... --amount 1.5 --json > transfer.json
qore simulate transfer.json
qore estimate-fee --from qor1... --to qor1... --amount 1.5
Gli importi sono 1.5 o 1.5 QOR (QOR, fino a 6 decimali) oppure 1500000uqor. Gli indirizzi possono essere qor1... o 0x....
Uno script che controlla un account e una transazione
Il repository contiene uno script completo (examples/cli/pq-check.sh) che fa questo. Il nucleo:
net=testnet
qore() { npx -y @qorechain/qore-cli "$@" --network "$net" --json; }
qore account "$addr" | jq '{exists, balances: [.balances[] | {denom, amount, display}], pq_key_registered}'
qore pq status "$addr" | jq '.address_status | {registered, algorithm, key_type, possession_proven, evm_window: .evm_window.live}'
qore pq status "$tx" | jq '.transaction_status | {tier, has_exactly_one_pqc_layer, signer, verified: .verification.verified, reason: .verification.reason}'
# An unsigned transfer to yourself, then its fee (nothing is signed or sent).
qore prepare-transfer --from "$addr" --to "$addr" --amount 0.000001 > transfer.json
qore simulate transfer.json | jq '{ok, gas_used, suggested_gas_limit, refusal}'
Un esempio di qore block --network mainnet --json (27 ottobre 2026):
{
"network": "mainnet",
"height": "3858155",
"hash": "1DA8CA5049ACF8844A3B775E2E138B2B118EDC1FC8C1F3602369B0C18D0B90C2",
"time": "2026-10-27T21:32:48.831948088Z",
"chain_id": "qorechain-vladi",
"proposer_address": "B1CDC8C45DA1FFF9BA5A01320F16FC7460E90B8F",
"tx_count": 0,
"tx_hashes": [],
"tx_hashes_truncated": false,
"explorer_url": "https://explore.qore.network/block/3858155"
}
Comandi
| Comando | Strumento MCP | Cosa fa |
|---|---|---|
chain, features | get_chain_info | ID della chain, ultimo blocco, prezzo minimo del gas, versione dei sign-bytes, interruttori delle funzionalità del protocollo, precompile EVM attive |
block [height] | get_block | un blocco, l'ultimo per impostazione predefinita |
tx get <hash> | get_transaction | una transazione per hash nativo o EVM: stato, commissione, messaggi, firmatari, livello di firma |
account <address> | get_address_info | saldi, stato dell'account, importo in staking, entrambe le forme dell'indirizzo |
pq status <address|txhash> | get_pq_status | stato della chiave ML-DSA-87 per un indirizzo, oppure la verifica del livello ibrido per una transazione |
validators [--status S] [--limit N] | get_validators | validatori per stake; lo stato è bonded (predefinito), unbonding, unbonded o all; limite fino a 200 |
staking-tiers [--holder A] | get_staking_tiers | parametri e pool dei livelli di staking, e i blocchi di un singolo titolare (chain v3.2.4 e successive) |
search <query> | search | riconosce un'altezza, un hash, un indirizzo o un validatore e lo legge |
read-contract --to 0x.. (--data 0x.. | --function "f(address)" --arg V) [--returns T] | read_contract | solo un eth_call EVM, con codifica e decodifica opzionali |
simulate <txfile.json|base64> [--no-pqc-placeholder] | simulate_tx | gas, variazioni di saldo e un rifiuto decodificato per una transazione codificata |
estimate-fee (<txfile.json|base64> | --from A --to B --amount X) | estimate_fee | limite di gas suggerito e commissione, incluso il livello ML-DSA-87 |
prepare-transfer --from A --to B --amount X [--memo M] [--gas-limit N] | prepare_transfer | un trasferimento non firmato che il tuo wallet deve firmare |
Opzioni globali: --network testnet|mainnet (predefinita testnet), --json, --timeout <ms> (timeout a monte, predefinito 10000), --help e --version. Gli schemi degli strumenti sono nel riferimento degli strumenti MCP.
Cosa è stato eseguito
Il 27 ottobre 2026 @qorechain/qore-cli 0.1.0 e @qorechain/mcp 0.1.0 sono stati installati da npm in un progetto vuoto e questi comandi in sola lettura sono stati eseguiti sugli endpoint pubblici:
qore --versionha stampato0.1.0, eqore --helpha elencato i comandi qui sopra.qore chain(testnet) ha stampato la chainqorechain-diana, EVM chain ID 9800, prezzo minimo del gas 0.1 e sign-bytesv2;qore chain --network mainnetha stampato la chainqorechain-vladi, EVM chain ID 9801 e sign-bytesv2.qore block,qore validators --limit 3 --json,qore staking-tiers --json,qore search 8981000,qore account qor178nscfyp0cq2ac5x7un4u98xrj4ayp6pt0kw08eqore read-contract --to 0x...0a02 --function "x()"hanno restituito i loro dati.qore pq status F642F59F...2152ha stampato livellopqc,has_exactly_one_pqc_layer: trueeverified: truecon sign-bytesv2.qore prepare-transfer --from A --to A --amount 1.5 --jsonha scritto un trasferimento non firmato (limite di gas 171698, commissione 17170 uqor),qore simulatesu quel file ha restituitook: true, eqore estimate-feeha restituito una commissione coincidente. Mittente e destinatario erano lo stesso indirizzo, quindi lo strumento ha aggiunto un avviso, e nulla è stato firmato né inviato.qore tx get zzzha stampatoerror [INVALID_INPUT]ed è uscito con 1;qore bogusè uscito con 2.
Come accedere
- Reti. Testnet
qorechain-diana(predefinita) e mainnetqorechain-vladicon--network mainnet. - Endpoint. La CLI legge gli endpoint pubblici REST, RPC e JSON-RPC EVM:
https://api-testnet.qore.host,https://rpc-testnet.qore.hostehttps://evm-testnet.qore.hostsulla testnet, ehttps://api.qore.host,https://rpc.qore.hostehttps://evm.qore.hostsulla mainnet. - Account e chiavi. Nessuno. Non c'è accesso, né chiave API, né file di configurazione; la chiave dell'endpoint MCP ospitato non si applica alla CLI.
- Prerequisiti. Node.js 20 o successivo e HTTPS in uscita.
- Costo. Gratuita. Per inviare il trasferimento che hai preparato paghi la commissione di rete (minimo 0.1 uqor per gas) dal tuo wallet; la CLI non esegue quel passaggio.
Note sulla sicurezza
- Nessun percorso di firma. La CLI non custodisce chiavi, non firma nulla e non trasmette nulla;
prepare-transferrestituisce un documento non firmato. - I segreti vengono rifiutati. Un input che sembra una frase di recupero (12 o più parole BIP-39 consecutive) o una chiave privata nuda da 32 byte viene respinto con
INVALID_INPUTprima di qualsiasi richiesta. Non inserirne comunque uno in una riga di comando: la cronologia della shell lo conserva, e l'errore ti dice di considerare quel segreto compromesso. - Dalla tua macchina escono solo dati pubblici: indirizzi, hash e transazioni codificate che inserisci, inviati agli endpoint pubblici di QoreChain.
- La mainnet è esplicita. Le chiamate vanno alla testnet a meno che tu non passi
--network mainnet, e un trasferimento preparato per la mainnet riporta un avviso. - I memo sono pubblici e permanenti. Non inserire mai un segreto in un
--memo. - Segnala le vulnerabilità in privato a security@qore.network, mai in una issue pubblica.
Dove è pubblicata
| Registro | Pacchetto | Versione | Installazione | Note |
|---|---|---|---|---|
| npm | @qorechain/qore-cli | 0.1.0 | npm install -g @qorechain/qore-cli | Bin qore. Node.js 20 o successivo |
Sorgenti: github.com/qorechain/qorechain-mcp, cartella packages/cli (pubblico, Apache-2.0, verificato il 27 ottobre 2026). Non esiste una build Python o Rust della CLI; il server stesso è disponibile anche su PyPI come qorechain-mcp.
Limiti e problemi noti
- Sola lettura. Nessun comando firma o trasmette.
prepare-transfercostruisce solo unMsgSenddi uqor sul lane nativo; non prepara transazioni EVM, SVM, di staking, di governance o di contratti.simulateeestimate-feeaccettano qualsiasi transazione codificata del lane nativo. - Nessun faucet e nessun elenco dei titolari di token. Questi due strumenti MCP non hanno un comando CLI. I QOR di testnet arrivano dal Faucet.
- La cronologia della testnet viene eliminata. Un vecchio blocco o una vecchia transazione della testnet restituisce
NOT_FOUNDcon l'altezza minima disponibile; la mainnet era servita dall'altezza 1 al momento del controllo. - Le cifre del gas seguono la versione della chain. Entrambe le reti hanno applicato la v3.2.5, quindi la simulazione include il costo di verifica ML-DSA-87; con un nodo più vecchio il limite di gas suggerito ha un margine.
- Limiti di output. Al massimo 100 hash di transazione per blocco, 50 messaggi per transazione, 100 saldi per account, 200 validatori per chiamata. Ogni richiesta ha un timeout predefinito di 10 secondi, un limite di risposta di 4 MiB e nessun nuovo tentativo.
- I segreti vengono rifiutati. Un input che sembra una frase di recupero o una chiave privata nuda viene respinto con
INVALID_INPUT. Non inserirne uno in una riga di comando: la cronologia della shell lo conserva. - Le precompile EVM post-quantistiche
0x...0A01e0x...0A02sono attive solo sulla testnet. - Prima release. 0.1.0: i nomi dei comandi e le opzioni possono cambiare nelle versioni successive. Usa
--jsone i codici di uscita per gli script, e fissa la versione.
Pagine correlate
- Server MCP di QoreChain: gli stessi strumenti per i client AI, con un endpoint ospitato.
- QoreSign: firma il trasferimento scritto da
prepare-transfer. - Riferimento CLI dell'SDK: la riga di comando propria dell'SDK.
- Faucet: QOR di testnet.
- Panoramica dei pacchetti per sviluppatori.