X-Cash Wallet (CLI)
Use X-Cash CLI Wallet (xcash-wallet-cli) to interact with a wallet through the terminal
Last updated
Use X-Cash CLI Wallet (xcash-wallet-cli) to interact with a wallet through the terminal
Last updated
The official command line wallet for X-Cash. Available for Linux, macOS and Windows. Download here
Wallet uses your private keys to compute your total balance, retrieve your transactions history, and sign transactions.
However, wallet does not store the blockchain and does not directly participate in the p2p network.
The CLI wallet is the most reliable, secured and most feature complete wallet for X-Cash.
Wallet connects to a full node to scan the blockchain for your transaction outputs and to send your transactions out to the network. The full node can be either local (same computer) or remote.
The best practice is to run the full node on the same computer as the wallet (or within your home network) and the connection happens over HTTP.
Any transaction leaving the wallet is already blinded by all X-Cash privacy features. This means plain text HTTP communication isn't an issue on its own even if you connect to a remote node.
However, connecting to a remote node has other nuanced trade-offs, such as easiness of use and faster syncing. This happens at the cost of a potential privacy reduction and limited reliability. It is recommended to fully familiarize with the limits of using a remote node vs. a local node before attempting in doing so.
./xcash-wallet-cli [options] [command]
./xcash-wallet-cli --restore-deterministic-wallet
Go to directory where you unpacked X-Cash.
Run the daemon and wait until it syncs up with the network (may take up to a few days depending on your last block height, network speed and CPU available load):
./xcashd
In a separate terminal window, run the wallet:
./xcash-wallet-cli --generate-new-wallet XCashExampleWallet
Option | Description |
| Enlist available options. |
| Show |
Option | Description |
---|---|
| By default wallet assumes mainnet. |
| Run on stagenet. Remember to run your daemon with |
| Run on testnet. Remember to run your daemon with |
Option | Description |
---|---|
| Full path to the log file. |
|
|
| Soft limit in bytes for the log file (=104850000 by default, which is just under 100MB). Once log file grows past that limit, x-cash creates the next log file with a UTC timestamp postfix |
| Limit on the number of log files (=50 by default). The oldest log files are removed. In production deployments, you would probably prefer to use established solutions like logrotate instead. |
Wallet depends on a full node for all non-local operations. The following options define how to connect to xcashd
:
Option | Description |
| Use |
| Use |
| Use |
| Specify |
| Enable commands and behaviors which rely on |
| Disable commands and behaviors which rely on |
| The newly created transaction will not be relayed to the X-Cash network. Instead it will be dumped to a file in a raw hexadecimal format. Useful if you want to push the transaction through a gateway. This may be easier to use over Tor than X-Cash wallet. |
| Allow communicating with |
Option | Description |
---|---|
| Create a new X-Cash wallet and save it to |
| Concerns encrypting the wallet file. The wallet file is encrypted with ChaCha stream cipher. The encryption key is derived from the user supplied password by hashing the password with CryptoNight. This option defines how many times the CryptoNight hashing will be applied. The default is |
Option | Description |
| Open existing wallet. Example: |
| Provide wallet password as a parameter instead of interactively. Remember to escape/quote as needed. Not recommended because the password will remain in your command history and will also be visible in the process table. For automation prefer |
| Provide password as a file in stead of interactively. Trailing are discarded when reading the password file. Prefer this over |
Option | Description |
| Restore/generate a special wallet to work with a hardware device like Ledger or Trezor and save it to |
| Restore a view-only version of the wallet to track incoming transactions and save it to |
| Restore a wallet from secret spend key and save it to |
| Restore a wallet from secret mnemonic seed. Use this to restore from your 25 words backup. You will be asked for a password to encrypt the wallet file (once restored). Note this is not a passphrase to mnemonic seed. Mnemonic seeds generated by X-Cash official wallets are naked. |
Option | Description |
| Create a standard wallet from multisig keys. This is useful to combine all multisig secret keys back into the standard wallet (when you no longer need the multisig). The wallet will then have control of the funds. It only supports providing all secret keys even if the multisig scheme allowed for less (only |
| Restore a multisig wallet from secret seed that was earlier exported with the |
Option | Description |
| Full path to the configuration file. Note this should be a separate config than |
Option | Description |
| Accepts |
| Max number of threads to use for parallel jobs. The default value |
Option | Description |
| Language for mnemonic seed words. One of |
| If your display freezes, exit blind with ^C, then run again with |
These options are either legacy or rarely useful.
Option | Description |
| Generate legacy non-deterministic wallet. The view key will not be derived from the spend key. You would also have to backup the .keys. To restore non-deterministic wallet (standard address) use |
| Restore legacy non-deterministic wallet by providing both spend and view keys and the standard address. |
| Set shared ring database path. No longer worthwhile. |
| Provide mnemonic seed as a command line option for |
| You would run |
| You would run |
Wallet files are created and seek in current directory. This is rarely what you want. Use --wallet-file
and similar options to control this.
Log files are created in the same directory as xcash-wallet-cli
binary. Use --log-file
to specify the location.
Commands are used interactively in the xcash-wallet-cli
prompt.
You can also run a one-off command by providing it as a commandline parameter. This is rarely useful though. For automation prefer xcash-wallet-rpc
.
The CLI wallet has built-in help for individual commands - we will not attempt to reproduce that. Instead we focus on grouping commands so you can quickly find what you are looking for. Use help command_name
to learn more.
help
- list all commands
help <command>
- show help for individual command
version
- show version of the xcash-wallet-cli binary
account
- total balance; list accounts with respective balances
balance detail
- within the current account, list addresses with respective balances
To perform on-chain transaction you should used the function transfer:transfer [<tx_privacy_settings>] [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> <amount> [<payment_id>]
Option | Description |
| Blockchain privacy setting feature, can be |
| Index of the transaction. |
| Priority setting i.e. fee (multiplier) settings, can be Defaults to 1.
Leads to a multiplication of the base fee per kb of respectively |
| Number of possible signers in the ring signature. Defaults and fixed to |
| Recipient address. Should be an |
| Amount to be sent in |
| Payment id to be added to the transaction. Defaults to |
About the fixed ring size
In X-Cash 1.4.0, we introduced a fixed ring size of 21 along with the release of public transactions. This choice has been made to improve significantly the privacy at the cost of an increase of the transaction size which is largely overbalanced by the introduction of bulletproof.
You can also move the entire balance by using the sweep_all
command with the same parameters (except the amount) as the transfer
command. If you leave sweep_all
blank with no parameters it will send a tx back to your wallet. This is helpful in reducing unspents for voting.
Open the wallet file in the xcash-wallet-cli
and once the wallet is fully synchronize, type the command:
Replace delegates_public_address|delegates_name
with the delegates public address
or delegates name
account
account new
account switch
account label
address all
address new
address label
status
- show if synced up to the blockchain height
fee
- show current fee-per-byte and full node's mempool (the backlog of transactions depending on the priority)
wallet_info
- show wallet file path, standard address, type and network
seed
- show raw mnemonic seed
encrypted_seed
- create mnemonic seed encrypted with the passphrase; you will need to remember or store the passphrase separately; restoring will not be possible without the passphrase
spendkey
- show secret spend key and public spend key
viewkey
- show secret view key and public view key
get_reserve_proof
-> check_reserve_proof
- prove the balance
get_spend_proof
-> check_spend_proof
- prove you made the payment
sign <file>
-> verify <filename> <address> <signature>
- prove ownership of the address; allows to verify the file was signed by the owner of specific X-Cash address
get_tx_proof
-> check_tx_proof
prepare_multisig
make_multisig
finalize_multisig
export_multisig_info
import_multisig_info
submit_multisig
exchange_multisig_keys
export_raw_multisig_tx
These allow to learn and verify transaction's private key r
. This was useful to create a proof of payment but got superseded by get_spend_proof
.
get_tx_key <txid>
check_tx_key <txid> <txkey> <address>
set_tx_key <txid> <tx_key>
unspent_outputs
- show a list of, and a histogram of unspent outputs (indivisible pieces of your total balance)
export_key_images <file>
-> import_key_images <file>
- used to inform the view-only wallet about outgoing transactions so it can calculate the real balance; normally view-only wallets only learn about incoming transactions, not outgoing
export_outputs <file>
- export a set of outputs owned by this wallet to a <file>