QRL CLI functions
$ npm install -g @theqrl/cli
$ qrl-cli COMMAND
running command...
$ qrl-cli (-v|--version|version)
@theqrl/cli/1.11.0 linux-x64 node-v24.18.0
$ qrl-cli --help [COMMAND]
USAGE
$ qrl-cli COMMAND
...qrl-cli balance [ADDRESS]qrl-cli config [ACTION] [KEY] [VALUE]qrl-cli create-walletqrl-cli generate-lattice-keysqrl-cli generate-shared-keys LATTICEPK LATTICESK [CYPHERTEXT] [SIGNEDMESSAGE]qrl-cli get-keysqrl-cli help [COMMAND]qrl-cli list-transactions [ADDRESS]qrl-cli notarize DATAHASHqrl-cli ots [ADDRESS]qrl-cli receive ADDRESSqrl-cli search SEARCHqrl-cli send [QUANTITY]qrl-cli send-messageqrl-cli sign-tx-offline QUANTITY OUTPUTqrl-cli statusqrl-cli token:createqrl-cli token:transferqrl-cli validate [ADDRESS]
Get a wallet balance from the network for an address
USAGE
$ qrl-cli balance [ADDRESS]
ARGUMENTS
ADDRESS QRL address or wallet.json file to return a balance for
OPTIONS
-g, --grpc=grpc Custom grcp endpoint to connect a hosted QRL node (-g 127.0.0.1:19009)
-j, --json Output balance information in JSON format
-m, --mainnet Queries mainnet network for the address balance
-p, --password=password Encrypted QRL wallet.json password to decrypt
-q, --quanta Reports the QRL address balance in Quanta
-s, --shor Reports the QRL address balance in Shor
-t, --testnet Queries testnet network for the address balance
DESCRIPTION
Queries the balance of the wallet.json file or address.
Use the (-p) flag to pass the password of encrypted wallet file.
Documentation at https://docs.theqrl.org/developers/qrl-cli
See code: src/commands/balance.js
Get, set, delete, or list CLI configurations
USAGE
$ qrl-cli config [ACTION] [KEY] [VALUE]
ARGUMENTS
ACTION Action to perform: get, set, list, delete
KEY Configuration key
VALUE Configuration value
DESCRIPTION
Allows you to persist settings like default-network and grpc-endpoint across CLI runs.
See code: src/commands/config.js
Create a new QRL wallet
USAGE
$ qrl-cli create-wallet
OPTIONS
-1, --sha2256 (default) Use SHA2-256 hashing mechanism
-2, --shake128 Use SHAKE-128 hashing mechanism
-3, --shake256 Use SHAKE-256 hashing mechanism
-f, --file=file Create QRL wallet to a json file (wallet.json)
-h, --height=height (default: 10) XmSS merkle tree height or OTS height (even numbers 4-18)
-p, --password=password Encrypt the wallet file with this password
DESCRIPTION
QRL addresses can be created with various tree height (-h) and hashing mechanisms (1-3)
You can output to a file (-f) in JSON and encrypt with a user set password (-p).
Documentation at https://docs.theqrl.org/developers/qrl-cli
See code: src/commands/create-wallet.js
Generate new Kyber & Dilithium lattice key pairs aliong with an ECDSA key and (optionally) broadcast them onto the network.
USAGE
$ qrl-cli generate-lattice-keys
OPTIONS
-b, --broadcast Send lattice keys to the network from the address given
-c, --crystalsFile=crystalsFile (c)reate Lattice keys JSON file
-e, --crystalsPassword=crystalsPassword Password to (e)ncrypt lattice keys file
-f, --fee=fee (default: 100) QRL (f)ee for transaction in Shor
-g, --grpc=grpc Custom grcp endpoint to connect a hosted QRL node (-g 127.0.0.1:19009)
-i, --otsindex=otsindex OTS key (i)ndex for broadcast transaction
-j, --json Print lattice keys in JSON format to stdout
-m, --mainnet Send lattice key transaction to (m)ainnet
-p, --walletPassword=walletPassword Encrypted QRL wallet file (p)assword
-s, --hexseed=hexseed Hex(s)eed/Mnemonic of QRL address where funds should be sent from
-t, --testnet Send the lattice key transaction to (t)estnet
-w, --wallet=wallet Generating QRL (w)allet file used for broadcasting lattice keys (wallet.json)
DESCRIPTION
This function REQUIRES a valid QRL wallet file or private keys (hexseed/mnemonic) to use
for generating and validating these lattice keys. Pass only one, wallet.json file OR hexseed/mnemonic.
By default generate-lattice-keys will print new lattice keys to stdout.
Save lattice keys to a file with the (-c) --crystalsFile flag and a file name. Encrypt the file with
the (-e) flag and give the new AES encryption passphrase. The output file will be encrypted using this passphrase.
Use the broadcast (-b) flag and a valid otsindex (-i) to broadcast the lattice keys to the QRL network using the
addres provided.
Documentation at https://docs.theqrl.org/developers/qrl-cli
See code: src/commands/generate-lattice-keys.js
Generate shared_key files from lattice keys (user_1 public) and (user_2 secret)
USAGE
$ qrl-cli generate-shared-keys LATTICEPK LATTICESK [CYPHERTEXT] [SIGNEDMESSAGE]
ARGUMENTS
LATTICEPK Generating new key_list or Recreating received list
LATTICESK Generating new key_list or Recreating received list
CYPHERTEXT Cyphertext file for key-regeneration
SIGNEDMESSAGE Signed Message file for key-regeneration
OPTIONS
-c, --cypherText=cypherText Kyber encrypted cyphertext Output file
-d, --decryptPassword=decryptPassword Password to decrypt lattice secret keys
-e, --encryptPassword=encryptPassword Password to encrypt shared Key List File
-g, --grpc=grpc Custom grcp endpoint to connect a hosted QRL node (-g 127.0.0.1:19009)
-i, --pubKeyIndex=pubKeyIndex (default: 1) Public key index to use if multiple are found in file
-k, --sharedKeyListFile=sharedKeyListFile Shared secret Kyber key list Output file
-m, --mainnet (default) queries mainnet for the public lattice keys
-s, --signedMessage=signedMessage Dilithium signed message Output file
-t, --testnet queries testnet for the public lattice keys
DESCRIPTION
Generate new shared_keys and shared_keylist from transaction hash and private lattice keys
Generates:
- kyber encrypted shared_key
- shared_key encrypted secret
- key_list from secret, through shake128 (optional password protected)
Re-generate shared_keys from encrypted secrets
Generates:
- Decrypted shared key
- Decrypted cyphertext (shared_secret)
- Shared keylist from secret key and shake128 (optional password protected)
See code: src/commands/generate-shared-keys.js
Get lattice keys associated to a QRL address or transaction hash that have been broadcast to the network
USAGE
$ qrl-cli get-keys
OPTIONS
-T, --txhash=txhash Transaction hash to lookup for lattice keys
-a, --address=address QRL address for lattice key lookup
-f, --pub_key_file=pub_key_file Print found public lattice keys to json (f)ile
-g, --grpc=grpc Custom grcp endpoint to connect a hosted QRL node (-g 127.0.0.1:19009)
-i, --item_per_page=item_per_page (default 1) How many (i)tems to return per page for address lookup
-j, --json Print the public keys in json format
-m, --mainnet Queries mainnet for the lattice keys
-p, --page_number=page_number (default 1) Which (p)age to print for address lookup
-t, --testnet Queries testnet for the lattice keys
DESCRIPTION
Command requires that either a transaction hash or QRL address to lookup is given and the network must match where the
transaction was made.
For general address lookup, use page number and items returned number to limit your search.
qrl-cli get-keys -i 1 -p 1 -a {ADDRESS} - will print the first key if found at that address.
Found public lattice keys can be written to a json file with the (-f) flag, default will print lattice keys to stdout
See code: src/commands/get-keys.js
display help for qrl-cli
USAGE
$ qrl-cli help [COMMAND]
ARGUMENTS
COMMAND command to show help for
OPTIONS
--all see all commands in CLI
See code: @oclif/plugin-help
List transaction history for a QRL address to console and optionally to CSV file
USAGE
$ qrl-cli list-transactions [ADDRESS]
ARGUMENTS
ADDRESS QRL address or wallet.json file to list transactions for
OPTIONS
-c, --csv=csv Export transactions to CSV file (provide filename)
-g, --grpc=grpc Custom grpc endpoint to connect a hosted QRL node (-g 127.0.0.1:19009)
-j, --json Output transaction list in JSON format
-l, --limit=limit [default: 100] Number of transactions to fetch per API call (default: 100)
-m, --mainnet Query mainnet network for transactions
-p, --password=password Encrypted QRL wallet.json password to decrypt
-q, --quiet Suppress console output when using CSV export
-t, --testnet Query testnet network for transactions
DESCRIPTION
Fetches all transactions for a given QRL address and displays them in a formatted table.
Supports exporting to CSV format and includes rate limiting to avoid overwhelming the API.
The command implements a 5-second pause between API pages to respect rate limits.
Use the --limit flag to control how many transactions are fetched per API call.
Documentation at https://docs.theqrl.org/developers/qrl-cli
See code: src/commands/list-transactions.js
Notarise a document or file on the blockchain
USAGE
$ qrl-cli notarize DATAHASH
ARGUMENTS
DATAHASH File sha256 Hash
OPTIONS
-M, --message=message Additional (M)essage data to send (max 45 char)
-f, --fee=fee QRL (f)ee for transaction in Shor (defaults to 0 Shor)
-g, --grpc=grpc advanced: grpc endpoint (for devnet/custom QRL network deployments)
-h, --hexseed=hexseed Secret (h)exseed/mnemonic of address notarization should be sent from
-i, --otsindex=otsindex Unused OTS key (i)ndex for message transaction
-j, --json Return JSON response
-m, --mainnet uses mainnet for the notarization
-p, --password=password Encrypted QRL wallet file (p)assword
-t, --testnet uses testnet for the notarization
-w, --wallet=wallet JSON (w)allet file notarization will be sent from
DESCRIPTION
Notarise data onto the blockchain. Takes a sha256 hash of a file and submits it to the network using
the wallet address given.
Advanced: you can use a custom defined node to broadcast the notarization. Use the (-g) grpc endpoint.
See code: src/commands/notarize.js
Get an address's OTS state from the network
USAGE
$ qrl-cli ots [ADDRESS]
ARGUMENTS
ADDRESS QRL address to return OTS state for
OPTIONS
-g, --grpc=grpc Custom grcp endpoint to connect a hosted QRL node (-g 127.0.0.1:19009)
-j, --json Output in JSON
-m, --mainnet Queries mainnet for the OTS state
-p, --password=password wallet file password if encrypted
-t, --testnet Queries testnet for the OTS state
DESCRIPTION
Reports the next unused available OTS key. Pass either an address starting with
QQ0004 or a wallet.json file to see the next OTS. You can set the network flag with either (-t) testnet or (-m)
mainnet
If the wallet file is encrypted use the -p flag to pass the wallet file encryption password.
See code: src/commands/ots.js
Displays a QR code of the QRL address to receive a transaction
USAGE
$ qrl-cli receive ADDRESS
ARGUMENTS
ADDRESS QRL address to display QR code for
OPTIONS
-p, --password=password Encrypted QRL wallet file password
DESCRIPTION
Prints the QRL address in both textual and QR format. Pass either an address or a wallet.json file
If using an encrypted wallet file pass the encryption password with the (-p) flag.
See code: src/commands/receive.js
Searches for a transaction, block or address
USAGE
$ qrl-cli search SEARCH
ARGUMENTS
SEARCH a search term: address/txhash/block to query API for
OPTIONS
-g, --grpc=grpc Custom grcp endpoint to connect a hosted QRL node (-g 127.0.0.1:19009)
-j, --json Prints output to json
-m, --mainnet q(default Queries mainnet for the address/txhash/block
-t, --testnet Queries testnet for the address/txhash/block
DESCRIPTION
Fetches data about queried transaction/block/address. Defaults to mainnet; network selection flags are (-m) mainnet,
(-t) testnet.
Advanced: you can use a custom defined node to query for status. Use the (-g) grpc endpoint.
See code: src/commands/search.js
Send Quanta from a QRL address to QRL another address
USAGE
$ qrl-cli send [QUANTITY]
ARGUMENTS
QUANTITY Number of Quanta (Shor if -s flag set) to send
OPTIONS
-F, --loadfromfile=loadfromfile Load saved transaction from the file and send)
-M, --message=message Message data to send (80 bytes)
-R, --file=file JSON file of recipients
-T, --savetofile=savetofile Save transaction to the file (offline mode)
-f, --fee=fee Fee for transaction in Shor (defaults to 100 Shor)
-g, --grpc=grpc Advanced: grpc endpoint (for devnet/custom QRL network deployments)
-h, --hexseed=hexseed Hexseed/mnemonic of wallet from where funds should be sent
-i, --otsindex=otsindex OTS key index
-j, --jsonObject=jsonObject Pass a JSON object of recipients/quantities for multi-output transactions
-m, --mainnet Use mainnet to send the transaction
-p, --password=password Wallet file password
-r, --recipient=recipient QRL address of recipient
-s, --shor Send in Shor
-t, --testnet Use testnet to send the transaction
-w, --wallet=wallet JSON file of wallet from where funds should be sent
DESCRIPTION
This function allows the transfer of Quanta between QRL addresses. Requires a wallet file or private keys and an
unused OTS
key index to sign the transaction.
Offline signing enabled with the (-T) "Save To File" flag. This can sent using the (-F) "Load From File" flag.
Add message data to the transaction with the (-M) "Message" flag. This allows up to an 80 bytes message to be attached
to the transfer.
Defaults to mainnet; network selection flags are (-m) mainnet, (-t) testnet, or a custom defined node (-g) grpc
endpoint.
Advanced: Append a (-M) Message to the transaction with max 80 bytes length
See code: src/commands/send.js
Send up to 80 byte message on the network
USAGE
$ qrl-cli send-message
OPTIONS
-M, --message=message Message data to send
-f, --fee=fee QRL (f)ee for transaction in Shor (defaults to 100 Shor)
-g, --grpc=grpc advanced: grpc endpoint (for devnet/custom QRL network deployments)
-i, --otsindex=otsindex Unused OTS key (i)ndex for message transaction
-m, --mainnet queries mainnet for the OTS state
-p, --password=password Encrypted QRL wallet file (p)assword
-r, --recipient=recipient QRL address of recipient
-s, --hexseed=hexseed Secret hex(s)eed/mnemonic of address message should be sent from
-t, --testnet queries testnet for the OTS state
-w, --wallet=wallet JSON (w)allet file message will be sent from
DESCRIPTION
Message can be sent to a recipient with the (-r) flag
You can select either (-m) mainnet or (-t) testnet
Advanced: you can use a custom defined node to query for status. Use the (-g) grpc endpoint.
See code: src/commands/send-message.js
Send Quanta
USAGE
$ qrl-cli sign-tx-offline QUANTITY OUTPUT
ARGUMENTS
QUANTITY Number of Quanta (Shor if -s flag set) to send
OUTPUT JSON file of the signed transaction
OPTIONS
-R, --file=file JSON file of recipients
-f, --fee=fee Fee for transaction in Shor (defaults to 100 Shor)
-h, --hexseed=hexseed hexseed/mnemonic of wallet from where funds should be sent
-i, --otsindex=otsindex (required) OTS key index
-j, --jsonObject=jsonObject Pass a JSON object of recipients/quantities for multi-output transactions
-p, --password=password wallet file password
-r, --recipient=recipient QRL address of recipient
-s, --shor Send in Shor
-w, --wallet=wallet JSON file of wallet from where funds should be sent
DESCRIPTION
...
TODO
See code: src/commands/sign-tx-offline.js
Gets the network status from a node
USAGE
$ qrl-cli status
OPTIONS
-g, --grpc=grpc Custom grcp endpoint to connect a hosted QRL node (-g 127.0.0.1:19009)
-j, --json Print result output in JSON format
-m, --mainnet queries mainnet for the OTS state
-t, --testnet queries testnet for the OTS state
DESCRIPTION
Reports network status from the node queried. You can select either (-m) mainnet or (-t) testnet
Advanced: you can use a custom defined node to query for status. Use the (-g) grpc endpoint.
See code: src/commands/status.js
Create a new Token on the QRL network (QRL v1.0 XMSS/gRPC)
USAGE
$ qrl-cli token:create
OPTIONS
-H, --holder=holder Allocations of initial token balances (Format: Qaddress:Amount)
-d, --decimals=decimals Decimal precision for token (0 to 9, default: 9)
-f, --fee=fee Fee for transaction in Shor (defaults to 100 Shor)
-g, --grpc=grpc Custom grpc endpoint (-g 127.0.0.1:19009)
-h, --hexseed=hexseed Hexseed or mnemonic phrase of wallet to sign transaction from
-i, --otsindex=otsindex OTS key index to sign with
-j, --json Print result output in JSON format
-m, --mainnet Queries mainnet network
-n, --name=name Token name (e.g. Test Token, max 30 chars)
-p, --password=password Password if the wallet.json is encrypted
-s, --symbol=symbol Token ticker symbol (e.g. TOK, max 10 chars)
-t, --testnet Queries testnet network
-w, --wallet=wallet JSON file of wallet to sign transaction from
See code: src/commands/token/create.js
Transfer existing tokens on the QRL network (QRL v1.0 XMSS/gRPC)
USAGE
$ qrl-cli token:transfer
OPTIONS
-a, --amount=amount Amount of tokens to transfer
-f, --fee=fee Fee for transaction in Shor (defaults to 100 Shor)
-g, --grpc=grpc Custom grpc endpoint (-g 127.0.0.1:19009)
-h, --hexseed=hexseed Hexseed or mnemonic phrase of wallet to sign transaction from
-i, --otsindex=otsindex OTS key index to sign with
-j, --json Print result output in JSON format
-m, --mainnet Queries mainnet network
-p, --password=password Password if the wallet.json is encrypted
-r, --recipient=recipient Recipient QRL address (starting with Q)
-t, --testnet Queries testnet network
-w, --wallet=wallet JSON file of wallet to sign transaction from
-x, --tokenHash=tokenHash Transaction ID of the token creation
See code: src/commands/token/transfer.js
Validate a QRL address
USAGE
$ qrl-cli validate [ADDRESS]
ARGUMENTS
ADDRESS QRL address to validate
OPTIONS
-j, --json Output address validation details in JSON format
-q, --quiet Quiet mode: no address details, just return validity via exit code
DESCRIPTION
When passed a QRL address in hexstring (preceded by 'Q'), will return details about the address's validity.
See code: src/commands/validate.js