chain-maind

chain-maind is the all-in-one command-line interface. It supports wallet management, funds transfer and staking operations.

Build and configurations

Build Prerequisites

  • You can get the latest chain-maind binary here from the release page;

  • Alternatively, you can install chain-maind by homebrew

    # tap the repo
    brew tap crypto-org-chain/chain-maind
    # install the CLI tool
    brew install chain-maind
    # get a list of all the commands
    chain-maind

Using chain-maind

chain-maindis bundled with the Cronos POS Chain code. After you have obtained the latest chain-maind binary, run

$ chain-maind [command]

There is also a -h, --help command available

$ chain-maind -h

Config and data directory

By default, your config and data are stored in the folder located at the ~/.chain-maind directory.

Make sure you have backed up your wallet storage after creating the wallet or else your funds may be inaccessible in case of accident forever.

Configure chain-maind config and data directory

To specify the chain-maind config and data storage directory; you can add a global flag --home <directory>

Configure Chain ID

Cronos POS Chain has different Chain ID to distinguish between devnet, testnet and mainnet . Accordingly, you should set up your chain-maind and use the correct configuration for the node you are connecting to. For example, you might create the following aliases and add the global --chain-id flag, for example, crypto-org-chain-mainnet-1 is the chain-id for the Cronos POS Chain mainnet:

Options

A list of commonly used flags of chain-maind is listed below:

Option
Description
Type
Default Value

--home

Directory for config and data

string

~/.chain-maind

--chain-id

Full Chain ID

String

---

--output

Output format

string

"text"

--keyring-backend

Select keyring's backend

os/file/test

os

Command list

A list of commonly used chain-maind commands.

You may also add the flag -h, --help on chain-maind [command] to get more available commands and details.

Example: More details of subcommand - tx staking

Keys management - chain-maind keys

First of all, you will need an address to store and spend your CRO.

keys add <wallet_name> - Create a new key

You can create a new key with the name Default as in the following example: ::: details Example: Create a new address

keys add <key_name> --recover - Restore existing key by seed phrase

You can restore an existing key with the mnemonic.

Example: Restore an existing key

keys list - List your keys

Multiple keys can be created when needed. You can list all keys saved under the storage path.

Example: List all of your keys

keys show <key_name> - Retrieve key information

You can retrieve key information by its name:

Example: Retrieve key information - Account Address and its public key

Example: Retrieve key information - Validator Address and its public key

Example: Retrieve key information - Consensus nodes Address and its public key

keys delete <key_name> - Delete a key

You can delete a key in your storage path.

Example: Remove a key

keys export <key_name> - Export private keys

You can export and backup your key by using the export subcommand:

Example: Export your keys Exporting the key Default :

The keyring --keyring-backend option

Interacting with a node requires a public-private key pair. Keyring is the place holding the keys. The keys can be stored in different locations with specified backend types.

os backend

The default os backend stores the keys in the operating system's credential sub-system, which are comfortable to most users, yet without compromising on security.

Here is a list of the corresponding password managers in different operating systems:

file backend

The file backend stores the encrypted keys inside the app's configuration directory. A password entry is required every time a user accesses it, which may also occur multiple times of repeated password prompts in one single command.

test backend

The test backend is a password-less variation of the file backend. It stores unencrypted keys inside the app's configuration directory. It should only be used in testing environments and never be used in production.

Transactions subcommands - chain-maind tx

tx bank send - Transfer operation

Transfer operation involves the transfer of tokens between two addresses.

Send Funds [tx bank send <from_key_or_address> <to_address> <amount> <network_id>]

Example: Send 10cro from one address to another.

tx staking - Staking operations

Staking operations involve the interaction between an address and a validator. It allows you to create a validator and lock/unlock funds for staking purposes.

Delegate your funds to a validator [tx staking delegate <validator-addr> <amount>]

To bond funds for staking, you can delegate funds to a validator by the delegate command

Example: Delegate funds from Default to a validator under the address crocncl1zd...rz35z

Unbond your delegated funds [tx staking unbond <validator-addr> <amount>]

On the other hand, we can create a Unbond transaction to unbond the delegated funds

Example: Unbond funds from a validator under the address crocncl1zdl...rz35z

Once your funds are unbonded, they will be locked until the unbonding_time has passed.

Balance & transaction history

query bank balances - Check your transferable balance

You can check your transferable balance with the balances command under the bank module.

Example: Check your address balance

Advance operations and transactions

tx staking create-validator - Joining the network as a validator

Anyone who wishes to become a validator can submit a create-validator transaction by

Example: Joining the network as a validator

(TODO: details of each flag )

tx slashing unjail - Unjail a validator

Validator could be punished and jailed due to network misbehaviour, for example, if we check the validator set:

After the jailing period has passed, one can broadcast a unjail transaction to unjail the validator and resume its normal operations by

Last updated