dusk-wallet 0.14.0

A library providing functionalities to create wallets compatible with Dusk Network
Documentation
# Dusk Wallet CLI

A user-friendly, reliable command line interface to the Dusk wallet!

```
USAGE:
    rusk-wallet [OPTIONS] [SUBCOMMAND]

OPTIONS:
    -p, --profile <PROFILE>
            Directory to store user data [default: `$HOME/.dusk/rusk-wallet`]

    -n, --network <NETWORK>
            Network to connect to

        --password <PASSWORD>
            Set the password for wallet's creation [env: RUSK_WALLET_PWD=]

        --state <STATE>
            The state server socket path or fully qualified URL

        --prover <PROVER>
            The prover server socket path or fully qualified URL

        --log-level <LOG_LEVEL>
            Output log level [default: info] [possible values: trace, debug,
                                                               info, warn,
                                                               error]

        --log-type <LOG_TYPE>
            Logging output type (valid: "json", "plain", "coloured")

    -h, --help
            Print help information

    -V, --version
            Print version information


SUBCOMMANDS:
    create         Create a new wallet
    restore        Restore a lost wallet
    balance        Check your current balance
    addresses      List your existing addresses and generate new ones
    history        Show address transaction history
    transfer       Send DUSK through the network
    stake          Start staking DUSK
    stake-info     Check your stake information
    stake-allow    Allow a provisioner key to stake
    unstake        Unstake a key's stake
    withdraw       Withdraw accumulated reward for a stake key
    export         Export BLS provisioner key pair
    settings       Show current settings
    help           Print this message or the help of the given subcommand(s)
```

## Good to know

Some commands can be run in standalone (offline) operation:

- `create`: Create a new wallet
- `restore`: Access (and restore) a lost wallet
- `addresses`: Retrieve your addresses
- `export`: Export BLS provisioner key pair

All other commands involve transactions, and thus require an active connection to [**Rusk**](https://github.com/dusk-network/rusk).

## Installation

[Install rust](https://www.rust-lang.org/tools/install) and then:

```
git clone git@github.com:dusk-network/wallet-cli.git
cd wallet-cli
make install
```

## Configuring the CLI Wallet

You will need to connect to a running [**Rusk**](https://github.com/dusk-network/rusk) instance for full wallet capabilities.

The default settings can be seen [here](https://github.com/dusk-network/wallet-cli/blob/main/default.config.toml).

It's possible to override those settings by create a `config.toml` file with the same structure, in one of the following
directory:

- The profile folder (provided via the `--profile` argument, defaults to `$HOME/.dusk/rusk-wallet/`)
- The global configuration folder (`$HOME/.config/rusk-wallet/`)

Having the `config.toml` in the global configuration folder is useful in case of multiple wallets (each one with its own profile folder) that shares the same settings.

If a `config.toml` exists in both locations, the one found in the profile folder will be used.

The CLI arguments takes precedence and overrides any configuration present in the configuration file.

**Note:** When using Windows, connection will default to TCP/IP even if UDS is explicitly specified.

## Running the CLI Wallet

### Interactive mode

By default, the CLI runs in interactive mode when no arguments are provided.

```
rusk-wallet
```

### Headless mode

Wallet can be run in headless mode by providing all the options required for a given subcommand. It is usually convenient to have a config file with the wallet settings, and then call the wallet with the desired subcommand and its options.

To explore available options and commands, use the `help` command:

```
rusk-wallet help
```

To further explore any specific command you can use `--help` on the command itself. For example, the following command will print all the information about the `stake` subcommand:

```
rusk-wallet stake --help
```

By default, you will always be prompted to enter the wallet password. To prevent this behavior, you can provide the password using the `RUSK_WALLET_PWD` environment variable. This is useful in CI or any other headless environment.

Please note that `RUSK_WALLET_PWD` is effectively used for:

- Wallet decryption (in all commands that use a wallet)
- Wallet encryption (in `create`)
- BLS key encryption (in `export`)