Guide to Autheo CLI
Autheod
autheod
is an all-in-one command-line interface. It supports wallet management, funds transfers and staking operations.
Build and configurations
Build Prerequisites
- You can get the latest
autheod
binary here from the testnet page;
Using autheod
autheod
is bundled with the Autheo Platform code. After you have obtained the latest autheod
binary, run
$ autheod [command]
There is also a -h, --help command available
$ autheod -h
Config and data directory
By default, your configuration and data are stored in the folder located in the ~/.autheo
directory. Ensure that you have backed up your wallet after creating it. Otherwise, your funds may be inaccessible in the event of an accident.
Configure autheod
config and data directory
To specify the autheod
config and data storage directory; you can add a global flag --home <directory>
Configuration Setting
We can view the default config setting by using autheod config command:
$ autheod config{ "chain-id": "", "keyring-backend": "os", "output": "text", "node": "tcp://localhost:26657", "broadcast-mode": "sync"}
We can make changes to the default settings upon our choices, so it allows users to set the configuration beforehand all at once, so it would be ready with the same config afterward.
For example, the chain-id
can be changed to auth_ChainID-1
from a blank name by
$ autheod config "chain-id" auth_ChainID-1$ autheod config{ "chain-id": "auth_ChainID-1", "keyring-backend": "os", "output": "text", "node": "tcp://localhost:26657", "broadcast-mode": "sync"}
Other values can be changed in the same way.
Alternatively, we can directly make the changes to the config values in one place at client.toml. It is under the path of .ethermint/config/client.toml
in the folder where we installed ethermint:
############################################################################### Client Configuration ############################################################################### # The network chain IDchain-id = "auth_ChainID-1"# The keyring's backend, where the keys are stored (os|file|kwallet|pass|test|memory)keyring-backend = "os"# CLI output format (text|json)output = "number"# <host>:<port> to Tendermint RPC interface for this chainnode = "tcp://localhost:26657"# Transaction broadcasting mode (sync|async|block)broadcast-mode = "sync"
After the necessary changes are made in the client.toml
, then save. For example, if we directly change the chain-id
from ethermint0
to ethermint-test1
, and output to number, it would change instantly as shown below.
$ autheod config{ "chain-id": "ethermint-test1", "keyring-backend": "os", "output": "number", "node": "tcp://localhost:26657", "broadcast-mode": "sync"}
Options
A list of commonly used flags of autheod
is listed below:
Option | Description | Type | Default Value |
--home |
Directory for config and data | string | ~/.autheo |
--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 autheod
commands.
Command | Description | List |
keys |
Key management |
|
tx |
Transaction subcommands |
|
query |
Query subcommands | query bank balance |
You may also add the flag -h
, --help
on autheod [command]
to get more available commands and details.
Example: More details of subcommand - tx staking
$ autheod tx staking --helpStaking transaction subcommands Usage: autheod tx staking [flags] autheod tx staking [command] Available Commands: create-validator create new validator initialized with a self-delegation to it delegate Delegate liquid tokens to a validator edit-validator edit an existing validator account redelegate Redelegate illiquid tokens from one validator to another unbond Unbond shares from a validator Flags: -h, --help help for staking Global Flags: --chain-id string The network chain ID --home string directory for config and data (default "/Users/.autheo") --log_format string The logging format (json|plain) (default "plain") --log_level string The logging level (trace|debug|info|warn|error|fatal|panic) (default "info") --trace
Key management - autheod keys
First of all, you will need an address to store and spend your THEO.
keys add <wallet_name>
- Create a new key
You can create a new key with the name Default as in the following example:
Example: Create a new address
$ autheod keys add Default- name: Default type: local address: tautheo1r4erhyx6jk8nsafhlw7263upnw9hja90gdgj5d pubkey: '{"@type":"/ethermint.crypto.v1alpha1.ethsecp256k1.PubKey","key":"A3EzNez+oPwDnRTY9OWdVDSjOqikiP7zYncTyxil2SgO"}' mnemonic: "" **Important** write this mnemonic phrase in a safe place.It is the only way to recover your account if you ever forget your password. farm surround surround hunt shop glory fringe bag mountain clerk arch ankle announce turtle slide brisk carbon album immense drop example speed grain dutch
The key comes with a "mnemonic phrase", which is serialized into a human-readable 24-word mnemonic. User can recover their associated addresses with the mnemonic phrase.
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
$ autheod keys add Default_restore --recover> Enter your bip39 mnemonic## Enter your 24-word mnemonic here ##
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
$ autheod keys list - name: Default type: local address: ## Address of "Default" ## pubkey: ## Pubkey of "Default" ## mnemonic: "" threshold: 0 pubkeys: [] - name: Default_restore type: local address: ## Address of "Default_restore" ## pubkey: ## Pubkey of "Default_restore" ## mnemonic: "" threshold: 0 pubkeys: []
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
$ autheod keys show mykey --bech acc- name: mykey type: local address: tautheo1qsklxwt77qrxur494uvw07zjynu03dq9alwh37 pubkey: '{"@type":"/ethermint.crypto.v1alpha1.ethsecp256k1.PubKey","key":"A8nbJ3eW9oAb2RNZoS8L71jFMfjk6zVa1UISYgKK9HPm"}' mnemonic: ""
Example: Retrieve key information - Validator Address and its public key
$ autheod keys show Default --bech val$ autheod keys show test --bech val- name: mykey type: local address: tautheovaloper1qsklxwt77qrxur494uvw07zjynu03dq9rdsrlq pubkey: '{"@type":"/ethermint.crypto.v1alpha1.ethsecp256k1.PubKey","key":"A8nbJ3eW9oAb2RNZoS8L71jFMfjk6zVa1UISYgKK9HPm"}' mnemonic: ""
Example: Retrieve key information - Consensus nodes Address and its public key
$ autheod keys show Default --bech cons$ autheod keys show test --bech cons- name: mykey type: local address: ethvalcons1qsklxwt77qrxur494uvw07zjynu03dq9h7rlnp pubkey: '{"@type":"/ethermint.crypto.v1alpha1.ethsecp256k1.PubKey","key":"A8nbJ3eW9oAb2RNZoS8L71jFMfjk6zVa1UISYgKK9HPm"}' mnemonic: ""
keys delete <key_name>
- Delete a key
You can delete a key in your storage path.
Example: Remove a key
$ autheod keys delete Default_restore1Key reference will be deleted. Continue? [y/N]: yKey deleted forever (uh oh!)
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 :
$ autheod keys export DefaultEnter passphrase to encrypt the exported key: ## Insert passphrase (must be at least 8 characters)##-----BEGIN TENDERMINT PRIVATE KEY-----kdf: bcryptsalt: ## Salt of the key ##type: secp256k1 ## Tendermint private key ##-----END TENDERMINT PRIVATE KEY-----
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 type.
$ autheod keys [subcommands] --keyring-backend [backend type]
1. os
backend
The default os
backend stores the keys in 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:
- macOS (since Mac OS 8.6): Keychain
- Windows: Credentials Management API
- GNU/Linux:
2. file
backend
The file
backend stores the encrypted keys inside the app's configuration directory. A password entry is required every time a user access it, which may also occur multiple times of repeated password prompts in one single command.
3. 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.
Transaction subcommands - autheod 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 10aauth from one address to another.
$ autheod tx bank send Default tautheo1gjdxrv77zfpq6cywcs8kg6gqyfhl5768ucel6t 10aauth --chain-id auth_ChainID-1 ## Transaction payload## {"body":{"messages":[{"@type":"/cosmos.bank.v1beta1.MsgSend","from_address"....}confirm transaction before signing and broadcasting [y/N]: y
tx staking
- Staking operations
Staking operations involve the interaction between an address and a validator. It allows you to create a validator and lock/unlocking 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 mykey
to a validator under the address tautheovaloper....lq
$ autheod tx staking delegate tautheovaloper1qsklxwt77qrxur494uvw07zjynu03dq9rdsrlq 100aauth --from mykey --chain-id auth_ChainID-1## Transactions payload##{"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgDelegate"....}confirm transaction before signing and broadcasting [y/N]: y
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 tautheovaloper...lq
$ autheod tx staking unbond tautheovaloper1qsklxwt77qrxur494uvw07zjynu03dq9rdsrlq 100aauth --from mykey --chain-id auth_ChainID-1## Transaction payload##{"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgUndelegate"...}confirm transaction before signing and broadcasting [y/N]: y
unbonding_time
has passed.Balance & transaction history - autheod query
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
$ autheod query bank balances tautheo1a303tt49l5uhe87yaneyggly83g7e4uncdxqtl --output json | jq { "balances": [ { "denom": "aauth", "amount": "99999000000000000000000000" } ], "pagination": { "next_key": null, "total": "0" }}
Advanced operations and transactions
rollback
To recover from an app-hash mismatch failure, it would take hours to re-run an archive node, a faster way to do it would be to use rollback
.
autheod rollback//rollback example at current height 6569206Rolled back state to height 6569205 and hash 5BFA3A9FA0C207B83D327330ADE77C46A5E688A24864614843C743FDFD968BCD%
tx staking create-validator
- Joining the network as a validator
Anyone who wishes to become a validator can submit a create-validator
transaction by
Copy
$ autheod tx staking create-validator [flags]
Example: Joining the network as a validator
$ autheod tx staking create-validator \--amount="100theo" \--pubkey='{"@type":...,"key":...}' \--moniker="The_new_node" \--chain-id="auth_ChainID-1" \--commission-rate="0.10" \--commission-max-rate="0.20" \--commission-max-change-rate="0.01" \--min-self-delegation="1" \--from=node1## Transactions payload##{"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgCreateValidator"...}confirm transaction before signing and broadcasting [y/N]: y
tx slashing unjail
- Unjail a validator
Validator could be punished and jailed due to network misbehavior, for example, if we check the validator set:
$ autheod query staking validators -o json | jq................................ "operator_address": "tautheovaloper1zwm45n5r3u3xcpsd00d3arwzhz7250rtsadv65", "consensus_pubkey": { "@type": "/cosmos.crypto.ed25519.PubKey", "key": "fD6cWVYv5rsNbXDw3hVIbB3nd9x57HsTyeMgwmH472U=" }, "jailed": false, "status": "BOND_STATUS_BONDED",................................
After the jailing period has passed, one can broadcast a unjail
transaction to unjail the validator and resume its normal operations by
$ autheod tx slashing unjail --from node1 --chain-id auth_ChainID-1 {"body":{"messages":[{"@type":"/cosmos.slashing.v1beta1.MsgUnjail"...}]} confirm transaction before signing and broadcasting [y/N]: y