Use Anemos Wallet

Use Anemos Wallet

Preface

The Anemos Blockchain provides a command-line wallet application for creating and managing your keys and for signing and broadcasting transactions.

To broadcast transactions and query balances, the wallet needs access to an Anemos node over gRPC.

  • Testnet exposes a public gRPC RPC endpoint: texplorer.anemos.one:50051 (a plaintext-gRPC archival explorer node), with the four validator seeds tseed0-3.anemos.one:50051 as fallbacks.
  • Mainnet is not launched yet and has no public RPC endpoint, so on Mainnet you must run your own local node (Anemos Daemon, default localhost:50051).
  • You can always point the wallet at any node you trust with the --servers <host:port> option.

The released standalone testnet wallet works against the default public endpoint (texplorer.anemos.one:50051) out of the box — no local node and no rebuild needed.

This tutorial will guide you step-by-step on how to use the wallet application.

Download

To get started, download and extract the Anemos CLI file from here. Once you have downloaded and extracted the Anemos CLI file, you can proceed to the next step.

Wallet Commands

In this section, we will explore various wallet commands that help you create, manage, and recover your Anemos wallet.

ℹ️
Wallet Path

By default, the node’s wallet is stored at ~/anemos/wallets/default_wallet on Unix-like systems. On Windows, you can find it at C:\Users\<USER_NAME>\anemos\wallets\default_wallet.

If you wish to select or specify a different wallet, use the --path option.

Create a Wallet

⚠️
Pick the network at create time

A wallet’s network is fixed when it is created and cannot be changed later. The –testnet flag selects Testnet; omitting it creates a Mainnet wallet. To use the live public Testnet (the endpoint and faucet described in this tutorial) you must pass –testnet — a Mainnet wallet will be rejected by the Testnet node (“connected node is on a different network”) and by the faucet. –testnet is a global flag and may appear in any position.

To create a new Testnet wallet, run the following command:

./anemos-wallet --path <PATH-To-NEW-WALLET> --testnet create
anemos-wallet.exe --path <PATH-To-NEW-WALLET> --testnet create

Replace <PATH-To-NEW-WALLET> with the file path where you want to create the wallet. Drop the --testnet flag only if you intend to create a Mainnet wallet (Mainnet is not launched yet, so you would need to run your own local node).

Recover Wallet

If you lose your wallet or forget your password, you can recover it by running this command. Pass --testnet to restore a Testnet wallet (omit it for Mainnet) — the network must match the one the wallet was originally created on:

./anemos-wallet --path <PATH-To-NEW-WALLET> --testnet recover
anemos-wallet.exe --path <PATH-To-NEW-WALLET> --testnet recover

Replace <PATH-To-NEW-WALLET> with the file path where you want to restore the wallet.

Wallet Password

You can change the wallet password by running this command:

./anemos-wallet password
anemos-wallet.exe password

This command changes the password for the default_wallet if there is one, or sets a new password.

Wallet Seed

You can obtain the wallet seed by running this command:

./anemos-wallet seed
anemos-wallet.exe seed

The wallet seed is encrypted within your wallet, and you’ll need to enter the wallet password to access it.

⚠️
Wallet seed is important

Always keep a paper backup of your seed phrase in a safe and secure location. If someone gains access to your seed phrase, they can gain full control over your wallet and funds.

Address Commands

In this section, we’ll cover address commands that help you manage your wallet addresses.

Creating New Address

You can create a new address by running this command:

./anemos-wallet address new
anemos-wallet.exe address new

An address string encodes its type and usage. By default, the above command creates an account address. If you want to create a validator address instead, you can use the --type validator option with the command like this:

./anemos-wallet address new --type validator
anemos-wallet.exe address new --type validator

You can also assign a label to your address to better organize your address book.

List of Addresses

To view the list of wallet addresses, use this command:

./anemos-wallet address all --balance --stake
anemos-wallet.exe address all --balance --stake
  • --balance: Displays the balance for each address.
  • --stake: Displays the stake for each address.

Both flags are optional and can be used individually or together.

Get Public Key

To obtain the public key for a specific address, run this command:

./anemos-wallet address pub <ADDRESS>
anemos-wallet.exe address pub <ADDRESS>

Replace <ADDRESS> with the address for which you want to retrieve its public key.

Get Private Key

You can get the private key of your address by this command:

./anemos-wallet address priv <ADDRESS>
anemos-wallet.exe address priv <ADDRESS>

Replace <ADDRESS> with the address for which you want to retrieve its private key.

⚠️
Keep your private key secure. If someone gains access to your private key, they will have full control over that address.

Get Address Balance

You can get the balance of your address by this command:

./anemos-wallet address balance <ADDRESS>
anemos-wallet.exe address balance <ADDRESS>

Replace <ADDRESS> with the address for which you want to retrieve your balance.


Transaction Commands

In this section, we’ll cover transaction commands that help you create, sign, and broadcast transactions on the Anemos Blockchain. You’ll need to provide the password to sign the transaction. Please note that once a transaction is broadcasted, it cannot be reversed.

ℹ️
The wallet needs a node to broadcast

The send commands broadcast over gRPC, so a reachable Anemos node is required. On Testnet you can point at the public endpoint texplorer.anemos.one:50051 (validator fallbacks tseed0-3.anemos.one:50051); on Mainnet (not launched) run a local node (default localhost:50051). To use a specific node, append –servers <host:port> to any send command, for example:

./anemos-wallet –servers texplorer.anemos.one:50051 send transfer <FROM> <TO> <AMOUNT>

Sending Transfer Transaction

To create, sign, and broadcast a Transfer transaction, use the following command:

./anemos-wallet send transfer <FROM> <TO> <AMOUNT>
anemos-wallet.exe send transfer <FROM> <TO> <AMOUNT>

In this command, <FROM> should be one of the addresses in your wallet as the sender address, and <TO> is the receiver address.

Sending Bond Transaction

To create, sign, and broadcast a Bond transaction, use the following command:

./anemos-wallet send bond <FROM> <TO> <AMOUNT>
anemos-wallet.exe send bond <FROM> <TO> <AMOUNT>

In this command, <FROM> should be one of the addresses in your wallet as the sender address, and <TO> is the receiver validator address.

If the validator associated with this address does not exist yet, you need to provide the public key to create it:

./anemos-wallet send bond --pub <PUBLIC_KEY> <FROM> <TO> <AMOUNT>
anemos-wallet.exe send bond --pub <PUBLIC_KEY> <FROM> <TO> <AMOUNT>

Replace <PUBLIC_KEY> with the validator’s public key, which is the public key of the <TO> address.

Sending Unbond Transaction

To create, sign, and broadcast a Unbond transaction, use the following command:

./anemos-wallet send unbond <ADDRESS>
anemos-wallet.exe send unbond <ADDRESS>

In this command, <ADDRESS> is the address of the validator that you want to unbond.

Sending Withdraw Transaction

To create, sign, and broadcast a Withdraw transaction, use the following command:

./anemos-wallet send withdraw <FROM> <TO> <AMOUNT>
anemos-wallet.exe send withdraw <FROM> <TO> <AMOUNT>

Stablecoin transactions

The Anemos stablecoin is native to the protocol — minting and redeeming are ordinary signed transactions sent with the same send subcommand, not a smart contract. The full set of commands is:

CommandArgsWhat it does
send mint-stable<FROM> <DEPOSIT> <MIN-STABLE-OUT>Deposit ANM and mint stablecoin at the oracle price.
send redeem-stable<FROM> <REDEEM-AMOUNT> <MIN-ANM-OUT>Burn stablecoin and withdraw ANM at the oracle price.
send mint-reserve<FROM> <DEPOSIT>Deposit ANM as reserve-coin (junior/equity) capital.
send redeem-reserve<FROM> <SHARES> <MIN-ANM-OUT>Burn reserve-coin shares and withdraw ANM at book value.
send redeem-recovery<FROM> <FACE-VALUE> <MIN-ANM-OUT>Claim recovery-token proceeds (only after a restructuring).

In every command <FROM> is one of your wallet addresses (a funded Testnet address, tan1…, from the faucet — see Get Address Balance above). The amount arguments are in ANM / stablecoin units, and the trailing <MIN-…-OUT> is a slippage floor: the chain rejects the transaction if the minted stablecoin (or returned ANM) would fall below it, so you are never filled worse than you asked. For redeem-reserve, <SHARES> is a whole number of reserve-coin shares (not an ANM amount).

⚠️
Testnet wallet + a reachable node are required

Like every other send command, these need a wallet created with –testnet (see Create a Wallet) and a reachable node. Point at the public testnet endpoint with –servers texplorer.anemos.one:50051 (validator fallbacks tseed0-3.anemos.one:50051).

Minting is gated by the collateral ratio. mint-stable only succeeds while the post-mint collateral ratio stays above the floor (launch value ~400%); below it, minting halts (the anti-death-spiral rule). On the live testnet the module is bootstrapped and comfortably above the floor, so mint/redeem work today.

Mint stablecoin

To deposit ANM and mint stablecoin at the oracle price, use send mint-stable. The third argument is the minimum stablecoin you will accept (your slippage floor):

./anemos-wallet --servers texplorer.anemos.one:50051 send mint-stable <FROM> <DEPOSIT> <MIN-STABLE-OUT>
anemos-wallet.exe --servers texplorer.anemos.one:50051 send mint-stable <FROM> <DEPOSIT> <MIN-STABLE-OUT>

<DEPOSIT> is the amount of ANM you put in; <MIN-STABLE-OUT> is the minimum stablecoin you require in return. For example, send mint-stable tan1… 100 0 deposits 100 ANM and accepts any amount of stablecoin (no slippage protection); set a non-zero floor to protect against price movement.

Redeem stablecoin

To burn stablecoin and withdraw ANM at the oracle price, use send redeem-stable. The third argument is the minimum ANM you will accept:

./anemos-wallet --servers texplorer.anemos.one:50051 send redeem-stable <FROM> <REDEEM-AMOUNT> <MIN-ANM-OUT>
anemos-wallet.exe --servers texplorer.anemos.one:50051 send redeem-stable <FROM> <REDEEM-AMOUNT> <MIN-ANM-OUT>

<REDEEM-AMOUNT> is the stablecoin you burn; <MIN-ANM-OUT> is the minimum ANM you require back.

Reserve and recovery (advanced)

Three further commands operate on the reserve/equity tranche and the post-restructuring recovery fund — most users never need them:

  • send mint-reserve <FROM> <DEPOSIT> — deposit ANM as reserve-coin (junior/equity) capital. There is no slippage floor; reserve coins are priced at the current book value at commit time. (This is also the transaction used to seed the reserve during the one-time launch bootstrap.)
  • send redeem-reserve <FROM> <SHARES> <MIN-ANM-OUT> — burn <SHARES> reserve-coin shares (a whole number) and withdraw ANM at book value, with <MIN-ANM-OUT> as the slippage floor.
  • send redeem-recovery <FROM> <FACE-VALUE> <MIN-ANM-OUT> — claim <FACE-VALUE> of recovery-token proceeds from the recovery fund, with <MIN-ANM-OUT> as the slippage floor. This is only meaningful after a debt-restructuring event has issued recovery tokens.

All stablecoin commands accept the same optional flags as the other send commands, including --fee <AMOUNT> (defaults to the estimated fee) and --no-confirm (skip the confirmation prompt). See the stablecoin protocol docs for how mint/redeem, the collateral floor, the reserve tranche and recovery tokens work under the hood.

FAQ

Database is locked (SQLITE_BUSY) Error

This error happens when the wallet database is opened by more than one process at the same time. By default, Anemos node starts the wallet in locked mode, which prevents external tools (like anemos-wallet) from accessing the wallet. This avoids conflicts, but it can cause this error if another tool tries to connect.

To allow external access, change this config and restart the node:

[wallet]
  lock_mode = false
Last updated on