Skip to main content

qorollup — the operator CLI

qorollup is the command line for creating, operating, and monitoring rollups on the QoreChain network. It is a thin, friendly wrapper over @qorechain/rdk: every command maps to a documented library call, so anything the CLI does you can also do in code.

Install

npm i -g @qorechain/rdk-cli
# or run it without installing:
npx @qorechain/rdk-cli doctor

The package ships the qorollup binary and targets Node.js 20+.

Configure

qorollup reads endpoints and signing material from flags or QORE_* environment variables. Flags always win over environment variables.

export QORE_NETWORK=testnet # or mainnet (default: testnet)
export QORE_REST_URL=https://rest... # Cosmos REST (LCD) — reads
export QORE_RPC_URL=https://rpc... # consensus RPC — signing/broadcast
export QORE_EVM_RPC_URL=https://evm... # EVM + qor_ JSON-RPC
export QORE_MNEMONIC="word word ..." # signer (mnemonic)
# or, instead of a mnemonic:
export QORE_OPERATOR_PRIVATE_KEY_HEX=0x... # signer (raw hex key)
export QORE_GAS_PRICE=0.025uqor # gas price for "auto" fees
export QORE_FAUCET_URL=https://faucet... # testnet faucet endpoint (no fixed default)

The default endpoints point at localhost, so set QORE_REST_URL (and, for signing, QORE_RPC_URL) — or pass --rest/--rpc — to talk to a real node.

Global flags

FlagMeaning
--network testnet|mainnetTarget network. Default testnet.
--rest <url>REST (LCD) endpoint override (or QORE_REST_URL).
--rpc <url>Consensus RPC endpoint, used for signing (or QORE_RPC_URL).
--evm-rpc <url>EVM / qor_ JSON-RPC endpoint (or QORE_EVM_RPC_URL).
--mnemonic <value>Signer mnemonic (or QORE_MNEMONIC).
--key <hex>Signer raw hex key (or QORE_OPERATOR_PRIVATE_KEY_HEX).
--profile <name>defi, gaming, nft, enterprise, or custom.
--jsonMachine-readable JSON output.
-y, --yesSkip confirmation prompts.
-h, --helpShow help.
-v, --versionPrint the version.

Read commands (status, watch, params, suggest, doctor) need only a REST endpoint. Anything that broadcasts a transaction (create, pause, resume, stop, withdraw) also needs a signer and an RPC endpoint.

Commands

doctor

Run preflight checks before you create or operate a rollup: REST reachable, network as expected, module parameters readable, config valid (when a --profile is given), a signer configured, and the operator balance covering the stake plus a fee buffer. Each check prints ok, warn, or fail with a hint. Exit code is 0 only when nothing failed (warnings are allowed).

qorollup doctor
qorollup doctor --profile defi --rest https://rest.testnet.example
qorollup doctor --json

This is the checkPreflight library call. See the zero-to-rollup guide.

create

Create a rollup from a preset profile. The command validates the config against the compatibility matrix, reads live module parameters, prints the stake and the amount burned on creation, asks for confirmation, then broadcasts MsgCreateRollup. The signer's address is the creator.

qorollup create --rollup-id my-roll --profile defi
qorollup create --rollup-id my-roll --profile defi --stake-uqor 12000000000
qorollup create --rollup-id my-roll --profile defi -y
FlagMeaning
--rollup-id <id>Required. The rollup id.
--profile <name>Preset profile. Default defi.
--stake-uqor <amount>Stake in uqor. Default: the live minStakeForRollup.
--dry-runValidate and price the rollup, then run the create flow against an offline mock — no broadcast.

--dry-run exercises the full create path without a node, using the in-library MockTxClient. Use it to confirm your config and cost before spending anything:

qorollup create --rollup-id my-roll --profile defi --dry-run
# Dry run OK — would submit MsgCreateRollup (no broadcast).

See Local & dry-run testing.

status

Show a rollup's status, profile, settlement mode, DA backend, VM, and a consolidated health read (latest batch, its age, and — for optimistic batches — the challenge-window countdown).

qorollup status my-roll
qorollup status my-roll --json

This combines rest.getRollup and getRollupHealth. See Monitoring.

watch

Poll a rollup's health on an interval and print each snapshot until you press Ctrl-C.

qorollup watch my-roll
qorollup watch my-roll --interval 2000
FlagMeaning
--interval <ms>Poll interval in milliseconds. Default 5000.

This is the watchRollup helper.

params

Print the live module parameters: max rollups, min stake, creation burn rate, default challenge window, max DA blob size, blob retention, and max batches per block.

qorollup params
qorollup params --json

suggest

Ask the QCAI-assisted advisory for a starting profile, given a plain-language description of your app. Falls back to defi when the advisory is unavailable.

qorollup suggest "high-frequency DeFi DEX"
# Suggested profile: defi (source: advisory)

pause / resume / stop

Lifecycle transitions for a rollup you created. The CLI reads the current status, guards the transition (you cannot resume an active rollup or pause a stopped one), confirms, then broadcasts. Creator only.

qorollup pause my-roll --reason "maintenance"
qorollup resume my-roll
qorollup stop my-roll -y
FlagMeaning
--reason <text>Optional reason, attached to pause.

keygen

Generate a new operator key — a mnemonic and its derived qor1… address. The mnemonic is printed once; store it securely and offline.

qorollup keygen
qorollup keygen --json

This wraps generateMnemonic + deriveNativeAccount. See Keys & funding.

manifest export / manifest import

A rollup manifest is a portable JSON snapshot of a rollup's resolved config, target network, endpoints, and key addresses — save it, commit it, share it, and load it back.

# Write a manifest for a profile-derived config.
qorollup manifest export --rollup-id my-roll --profile defi --out rollup.manifest.json

# Load a manifest and validate it.
qorollup manifest import rollup.manifest.json
FlagMeaning
--rollup-id <id>Required for export.
--profile <name>Profile for export. Default defi.
--out <file>Write export output to a file (otherwise printed).

export is toManifest; import is parseManifest + fromManifest. See Local & dry-run testing.

withdraw

Assemble a withdrawal proof from a batch's withdrawal leaves and submit MsgExecuteWithdrawal. The withdrawal spec is a JSON file.

qorollup withdraw --file withdrawal.json
qorollup withdraw --file withdrawal.json --dry-run
FlagMeaning
--file <json>Required. The withdrawal spec (see below).
--dry-runAssemble the proof and report it without broadcasting.

The spec file:

{
"rollupId": "my-roll",
"batchIndex": 7,
"recipient": "qor1recipient...",
"denom": "uqor",
"amount": "1000000",
"leaves": ["<hex leaf 0>", "<hex leaf 1>", "..."],
"index": 3
}

The leaf encoding and hash must match the network's withdrawals_root construction. See Withdrawals.

faucet

Request testnet funds for an address from a configured faucet. The network does not publish a fixed faucet endpoint, so you must supply one via QORE_FAUCET_URL or --faucet-url; without it the command fails with a clear message.

export QORE_FAUCET_URL=https://faucet.testnet.example
qorollup faucet qor1youraddress...

This is the requestFaucet helper. See Keys & funding.

Exit codes

0 on success, 1 on a failed check, validation error, cancelled prompt, or a non-zero transaction code. With --json, the same status is reflected in the emitted object.