Skip to content

theQRL/qrl-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qrl-cli

QRL CLI functions

oclif Version CircleCI codecov License

In action

Usage

$ npm install -g @theqrl/cli
$ qrl-cli COMMAND
running command...
$ qrl-cli (-v|--version|version)
@theqrl/cli/1.10.2 darwin-arm64 node-v16.13.1
$ qrl-cli --help [COMMAND]
USAGE
  $ qrl-cli COMMAND
...

Commands

qrl-cli balance ADDRESS

Get a wallet balance from the network for an address

Get a wallet balance from the network for an address

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


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)
  -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

qrl-cli create-wallet

Create a new QRL wallet

Create a new QRL wallet

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


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

qrl-cli generate-lattice-keys

Generate new Kyber & Dilithium lattice key pairs aliong with an ECDSA key and (optionally) broadcast them onto the network.

Generate new Kyber & Dilithium lattice key pairs aliong with an ECDSA key and (optionally) broadcast them onto the network.
    
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


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

qrl-cli generate-shared-keys LATTICEPK LATTICESK [CYPHERTEXT] [SIGNEDMESSAGE]

Generate shared_key files from lattice keys (user_1 public) and (user_2 secret)

Generate shared_key files from lattice keys (user_1 public) and (user_2 secret)

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)


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

qrl-cli get-keys

Get lattice keys associated to a QRL address or transaction hash that have been broadcast to the network

Get lattice keys associated to a QRL address or transaction hash that have been broadcast to the network

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


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

qrl-cli help [COMMAND]

display help for qrl-cli

display help for <%= config.bin %>

USAGE
  $ qrl-cli help [COMMAND]

ARGUMENTS
  COMMAND  command to show help for

OPTIONS
  --all  see all commands in CLI

See code: @oclif/plugin-help

qrl-cli notarize DATAHASH

Notarise a document or file on the blockchain

Notarise a document or file on the blockchain

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.


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

qrl-cli ots ADDRESS

Get a address's OTS state from the network

Get a address's OTS state from the network

Reports the next unused available OTS key. Pass either an address starting with 
QQ0004 or a wallet.json file to se 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.


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            (default) 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 se 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

qrl-cli receive ADDRESS

Displays a QR code of the QRL address to receive a transaction

Displays a QR code of the QRL address to receive a transaction

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.


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

qrl-cli search SEARCH

Searches for a transaction, block or address

Searches for a transaction, block or address

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.


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

qrl-cli send [QUANTITY]

Send Quanta from a QRL address to QRL another address

Send Quanta from a QRL address to QRL another address

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



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

qrl-cli send-message

Send up to 80 byte message on the network

Send up to 80 byte message on the network

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.


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

qrl-cli sign-tx-offline QUANTITY OUTPUT

Send Quanta

Send Quanta
...
TODO


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

qrl-cli status

Gets the network status from a node

Gets the network status from a node

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.


USAGE
  $ qrl-cli status

OPTIONS
  -g, --grpc=grpc  Custom grcp endpoint to connect a hosted QRL node (-g 127.0.0.1:19009)
  -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

qrl-cli validate ADDRESS

Validate a QRL address

Validate a QRL address
...
when passed a QRL address in hexstring (preceded by 'Q'), will return details about the addresses validity.


USAGE
  $ qrl-cli validate ADDRESS

ARGUMENTS
  ADDRESS  QRL address to validate

OPTIONS
  -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 addresses validity.

See code: src/commands/validate.js