Get Started with cscli
cscli
is a lightweight cross-platform CLI tool for Cardano supporting the following features out of the box:
- Building and serialising wallet primitives (i.e. recovery-phrases, keys, addresses and transactions)
- Live querying of accounts, addresses, transactions and native assets across both Testnet and Mainnet networks
- Submitting transactions to the Testnet or Mainnet network
- Cryptographic and encoding transformations (blake2b, bech32, etc.)
Advantages
Why would you use cscli
in addition to cardano-cli
, cardano-address
, cardano-wallet
and a host of other tools?
- Simple installation and powerful commands with no dependencies on a local full node or other tools/sdks
- Easy recovery-phrase (aka mnemonic) based key and address derivation for Hierarchical Deterministic (HD) wallets, perfect for offline management
- Passphrase support for additional root key security
- International multi-language support for recovery-phrases
- Generates compatible outputs for
cardano-cli
,cardano-address
andcardano-wallet
Getting Started
Download the platform-specific binaries from the latest release and run. Alternatively build from source following the instructions on GitHub.
Overview and Help
$ cscli --help
cscli v0.3.0
A lightweight cross-platform tool for building and serialising Cardano wallet entities (i.e. recovery-phrases, keys, addresses and transactions), querying the chain and submitting transactions to the testnets or Mainnet. Please refer to https://github.com/CardanoSharp/cscli for further documentation.
USAGE: cscli (OPTION | COMMAND)
Options:
-v, --version Show the cscli version
-h, --help Show this help text
Wallet commands:
wallet recovery-phrase generate --size <size> [--language <language>]
wallet key root derive --recovery-phrase "<string>" [--language <language>] [--passphrase "<string>"]
wallet key account derive --recovery-phrase "<string>" [--language <language>] [--passphrase "<string>"] [--account-index <index>]
wallet key stake derive --recovery-phrase "<string>" [--account-index <index>] [--address-index <index>]
wallet key payment derive --recovery-phrase "<string>" [--account-index <index>] [--address-index <index>]
wallet key policy derive --recovery-phrase "<string>" [--policy-index <index>]
wallet key verification convert --signing-key "<bech32_skey>"
wallet address stake derive --recovery-phrase "<string>" --network <network> [--account-index <index>] [--address-index <index>]
wallet address payment derive --recovery-phrase "<string>" --network <network> --payment-address-type <payment-address-type> [--account-index <index>] [--address-index <index>] [--stake-account-index <index>] [--stake-address-index <index>]
Query commands:
query tip --network <network>
query protocol-parameters --network <network>
query info account --network <network> [--stake-address <stake_address> | --address <payment_base_address>]
query asset account --network <network> --stake-address <stake_address>
query info address --network <network> --address <payment_address>
query info transaction --network <network> --tx-id <transaction_id>
Transaction Commands:
transaction submit --network <network> --cbor-hex <hex_string>
BETA: transaction simple-payment build --network <network> --from <address> --to <address> --amount <ada_amount> [--signing-key <bech32_skey>] [--submit (true | false)] [--message <message>] [--out-file <output_path>]
BETA: transaction view --cbor-hex <hex_string>
Encoding/Cryptography Commands:
bech32 encode --value <hex_string> --prefix <string>
bech32 decode --value <bech32_string>
blake2b hash --value <hex_string> [--length <digest_length>]
Arguments:
<size> ::= 9 | 12 | 15 | 18 | 21 | 24(default)
<language> ::= english(default)|chinesesimplified|chinesetraditional|french|italian|japanese|korean|spanish|czech|portuguese
<derivation-index> ::= 0(default) | 1 | .. | 2147483647
<network> ::= testnet | mainnet
<payment-address-type> ::= enterprise | base
<digest_length> ::= 160 | 224(default) | 256 | 512
Wallet Commands
Generate Recovery Phrase
caution
Note: Recovery-phrases and keys should ideally be generated and stored in airgapped machines
$ cscli wallet recovery-phrase generate | tee phrase.en.prv
more enjoy seminar food bench online render dry essence indoor crazy page eight fragile mango zoo burger exhibit crouch drop rocket property alter uphold
Generating a recovery phrase in Spanish
Derive Root Key
$ cscli wallet key root derive --recovery-phrase "$(cat phrase.en.prv)" | tee root.en.xsk
root_xsk12qpr53a6r7dpjpu2mr6zh96vp4whx2td4zccmplq3am6ph6z4dga6td8nph4qpcnlkdcjkd96p83t23mplvh2w42n6yc3urav8qgph3d9az6lc0px7xq7sau4r4dsfp9h0syfkhge8e6muhd69vz9j6fggdhgd4e
Derive Account Key
$ cscli wallet key account derive --recovery-phrase "$(cat phrase.en.prv)" | tee acct_0.en.xsk
acct_xsk13pfkzdyzuagmsquy0xjvszdxdjt84x49yrmvt2f3z8ndp6zz4dgka03j3ctm4gne9s5gullvjd7kynxxkny4qwyuuup2mcjfztctswdu3zp4s3ps5dskaq929vrp6cw8z3u77x7mymgntjw46f4l9kh3mcvg78y9
Account Key with Specific Index
Derive Payment Key
$ cscli wallet key payment derive --recovery-phrase "$(cat phrase.en.prv)" | tee pay_0_0.en.xsk
addr_xsk1fzw9r482t0ekua7rcqewg3k8ju5d9run4juuehm2p24jtuzz4dg4wpeulnqhualvtx9lyy7u0h9pdjvmyhxdhzsyy49szs6y8c9zwfp0eqyrqyl290e6dr0q3fvngmsjn4aask9jjr6q34juh25hczw3euust0dw
Payment Key with Custom Indexes
Payment Key with cardano-cli Output Key Files
Payment Key from Spanish recovery-phrase with custom passphrase
Derive Stake Key
$ cscli wallet key stake derive --recovery-phrase "$(cat phrase.en.prv)" | tee stake_0_0.en.xsk
stake_xsk1xr5c8423vymrfvrqz58wqqtpekg8cl2s7zvuedeass77emzz4dgs32nfp944ljxw86h7wkxcrut8gr8qmql8gvc9slc8nj9x47a6jtaqqxf9ywd4wfhrzv4c54vcjp827fytdzrxs3gdh5f0a0s7hcf8a5e4ay8g
Stake Key with Custom Indexes
Stake Key with cardano-cli Output Key Files
Derive Stake/Reward Address
$ cscli wallet address stake derive --recovery-phrase "$(cat phrase.en.prv)" --network mainnet | tee stake_0_0.en.addr
stake1u9wqktpz964g6jaemt5wr5tspy9cqxpdkw98d022d85kxxc2n2yxj
Stake Address with Custom Indexes
Stake Address from Spanish recovery-phrase with custom passphrase
Derive Payment Enterprise Address
$ cscli wallet address payment derive --recovery-phrase "$(cat phrase.en.prv)" --payment-address-type enterprise --network mainnet | tee pay_0_0.en.addr
addr1vy5zuhh9685fup86syuzmu3e6eengzv8t46mfqxg086cvqqrukl6w
Payment Enterprise Address with Custom Indexes
Derive Payment Base Address
$ cscli wallet address payment derive --recovery-phrase "$(cat phrase.en.prv)" --payment-address-type base --network mainnet | tee pay_0_0_0_0.en.addr
addr1qy5zuhh9685fup86syuzmu3e6eengzv8t46mfqxg086cvqzupvkzyt42349mnkhgu8ghqzgtsqvzmvu2w675560fvvdspma4ht
Payment Base Address with Custom Indexes
Payment Base Address from Spanish recovery-phrase with custom passphrase
Derive Policy Key
$ cscli wallet key policy derive --recovery-phrase "$(cat phrase.en.prv)" | tee policy_0.en.sk
policy_sk1trt3shjrd4gy70q4m2ejgjgsdzwej4whc4r2trrcwedlpm6z4dglxl4nycrd8fptxrkye3tl3q29euxlqj7zndk9cfg4tskqlnp90uqwjqz02
Policy Key with Custom Indexes
Policy Key with cardano-cli Output Key Files
Convert Signing to Verification Key
$ cscli wallet key verification convert --signing-key $(cat pay_0_0.en.xsk) | tee pay_0_0.en.xvk
addr_xvk1m62sxsn8t8apscjx2l6mejfj7wpzpmy7e6ex9yru4uk3nzmwp74zljqgxqf752ln56x7pzjex3hp98tmmpvt9y85prt9ew4f0syarncveq5jl
Verification Key with cardano-cli Output Key Files
Query Commands
Query Tip
$ cscli query tip --network mainnet
{
"hash": "cffd3acb9728066a92fe033f73a7d86957b8a0e35dce4b7013f9a9a2fd272929",
"epoch_no": 345,
"abs_slot": 64056977,
"epoch_slot": 380177,
"block_no": 7394590,
"block_time": "2022-06-19T07:21:08"
}
Query Protocol Parameters
$ cscli query protocol-parameters --network mainnet
{
"epoch_no": 345,
"min_fee_a": 44,
"min_fee_b": 155381,
...
"coins_per_utxo_word": 34482
}
Query Account Info
$ cscli query info account --network mainnet --stake-address stake1uyrx65wjqjgeeksd8hptmcgl5jfyrqkfq0xe8xlp367kphsckq250
[
{
"status": "registered",
"delegated_pool": "pool14wk2m2af7y4gk5uzlsmsunn7d9ppldvcxxa5an9r5ywek8330fg",
"total_balance": "1126364036992",
"utxo": "1120067931255",
"rewards": "90668729339",
"withdrawals": "84372623602",
"rewards_available": "6296105737",
"reserves": "0",
"treasury": "0"
}
]
Query Account Info of Payment Address (requires base address)
Query Account Asset
$ cscli query asset account --network testnet --stake-address $(cat stake_0_0.es.addr)
[
{
"asset_policy": "540f107c7a3df20d2111a41c3bc407cce3e63c10c8dd673d51a02c22",
"asset_name": "COND1",
"quantity": "1"
}
]
Query Account Asset of Payment Address (requires base address)
Query Address Info
$ cscli query info address --network testnet --address $(cat pay_0_0_0_0.es.addr)
{
"balance": "1001344798",
"stake_address": "stake_test1uztkvps54v3yrwvxhvfz9uph8g6e2zd8jcg2cyss45g7xqclj4scq",
"utxo_set": [ ... ]
}
Query Transaction Info
$ cscli query info transaction --network testnet --txid 4fe73db7e345f6853ade214b0779d5db51f9a4b5e296198d3cb84b7b707e7d34
[
{
"tx_hash": "4fe73db7e345f6853ade214b0779d5db51f9a4b5e296198d3cb84b7b707e7d34",
"block_hash": "e96c400f303d2f30f7b49761b1c541b5a29b43ddb28268a1f179b2877f828aad",
...
"inputs": [ ... ],
"outputs": [ ... ],
...
}
]
Transaction Commands
Submit Transaction
$ cscli transaction submit --network testnet --cbor-hex 84a600818258207f1d24706e65b3eaef608d6ba5adf8b2bf69254bbd1e1532fa7c601a1d6aca3d000d8001828258390058b5a28ad45b3e2e5ea96d46e071a12d4d8cb5498cf0285051b3c30297660614ab2241b986bb1222f0373a359509a79610ac1210ad11e3031a05f5e10082581d60f3a76db98805ebfb391d8a7fa176e0a4da4d20955c47a5d35936353c1a35a23dbb021a0002ab45031a03831a6f0e80a1008182582047a69a1a41541c00a1e62ab8d78c1870e4f04c0507530b90c7dfde2a144d0cfa58406f50cd131250768a3b707e5eb5797e1dc519157e8c7ac27a72ac472fb546bc4604d3b51b2460e4517e28aea5fd0d19ddf8d95d9bf223e59f0306db0a7794d40af5f6
5c9f1456a2f7cdf30c12d569ede3f298b377115a63dc0cef791e692dbe4be26b
Cryptography / Encoding Commands
Bech32 Decode
$ cscli bech32 decode --value "$(cat pay_0_0.en.addr)"
61282e5ee5d1e89e04fa81382df239d6733409875d75b480c879f58600
Bech32 Encode
$ cscli bech32 encode --value 61282e5ee5d1e89e04fa81382df239d6733409875d75b480c879f58600 --prefix addr
addr1vy5zuhh9685fup86syuzmu3e6eengzv8t46mfqxg086cvqqrukl6w
Blake2b Hash
$ cscli blake2b hash --length 224 --value de9503426759fa18624657f5bcc932f38220ec9eceb262907caf2d198b6e0faa
282e5ee5d1e89e04fa81382df239d6733409875d75b480c879f58600