ZIGChain Accounts
TL;DR: ZIGChain accounts are on-chain identities backed by a mnemonic, private and public keys, and a Bech32 address. This page explains how they work, how to create and recover them with
zigchaind, and how to query balances and send tokens safely.
Overview
ZIGChain accounts are the on-chain identities that hold tokens, sign transactions, and vote on governance. Each ZIGChain account links a mnemonic backup to private and public keys and to a Bech32 address peers use on chain. Builders usually start from a named key in the local keyring, then use the printed address in queries and sends.
This guide covers ZIGChain accounts end to end, from key parts and address prefixes to zigchaind create, recover, balance, and send flows. You can find command examples for mainnet, testnet, or local RPC. A dedicated section on security best practices covers mnemonic custody, key storage, and safe signing for production wallets.
For chain background see ZIGChain - What and Why?. For send fees see Gas Fees on ZIGChain. For the native asset see The ZIG Token. For shared vocabulary see ZIGChain Glossary. Those pages pair with ZIGChain accounts when you need economics, fee fields, or terminology outside this file.
Key Concepts
- Mnemonic phrase: A 12–24 word backup that can restore the private key and account if keys are lost.
- Private key: Signs transactions and proves control of the account; never share it or commit it to source control.
- Public key: Derived from the private key; used to build the account address and verify signatures.
- Bech32 address: The
zig1…identifier peers use for sends and balance queries on ZIGChain. - Keyring: Local key storage in
zigchaind; holds named keys created withkeys addor--recover. - HD wallet (BIP-32): Hierarchical scheme that derives multiple key pairs from one mnemonic seed.
ZIGChain Account Functionalities
Users can utilize their ZIGChain accounts for the following purposes:
- Digital Asset Management: Hold, send, and receive tokens and other digital assets.
- Staking: Stake tokens to participate in network governance and earn rewards while securing the network.
- Governance: Vote on proposals that shape the future of the ZIGChain ecosystem.
- Smart Contracts: Create and interact with on-chain applications (smart contracts) to enable decentralized functionalities.
- DApps: Engage with decentralized applications built on top of ZIGChain.
Core Components of ZIGChain Accounts
See Key Concepts above for definitions. The analogy below shows how mnemonic, keys, address, and keyring fit together on ZIGChain.
🔥 Example: Understanding account components
Consider the following analogy:
Imagine that you are the owner of a hotel, and you have a master key and the instructions to create the master key.
- The Mnemonic Phrase is like a set of instructions to recreate the master key for all rooms.
- The Private Master Key is the actual master key, giving you access to all rooms.
With the private master key you can create pairs of keys and locks (public and private keys) for each room in the hotel:
- The Public Key functions like a lock for each room.
- The Private Key acts as the key to open the lock.
- The Address represents the unique room number identifying each room.
Create ZIGChain Accounts With the CLI
🧑💻 To create a ZIGChain account using the ZIGChain CLI, run the following command:
zigchaind keys add <key-name>
Response example:
- address: zig1dtlhdqsmrwwc9t0es9pwh04x86rfh7c60d2222
name: <key-name>
pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AieWTW5gggcC4X43tZxE3fpaa/f0EiY666+cy8PPzzi"}'
type: local
Important: Store your Mnemonic Phrase securely. It is the only way to recover your account if you lose access.
Mnemonic: "word1 word2 word3 ... word24"
🧑💻 Extra Info: Accounts and HD System
ZIGChain uses a Hierarchical Deterministic (HD) system to generate the keys. Starting from a single seed, the HD system allows users to create multiple key pairs (public and private keys) with their addresses.
This enables:
- Efficient Key Management: HD wallets allow the generation of multiple keys from a single seed, requiring only one seed backup instead of storing individual keys.
- Privacy and Security: Generate unique keys for each transaction, enhancing privacy while maintaining easy recovery through the seed phrase.
- Structured Organization: Hierarchical design enables systematic key organization for different accounts and purposes.
ZIGChain Account Address Format
Every account on ZIGChain is identified by a unique address structured as follows:
zig1<account-address-38-characters>
Example:
zig1wze8mn5nsgl9qrgazq6a92fvh7m5e6psjcx2du
ZIGChain distinguishes between different address types using specific Bech32 prefixes:
- Account Address: identify users. Address Prefix:
zig1 - Validator Address: identify a validator node. Address Prefix:
zigvaloper1 - Consensus Address: identify a consensus node. Address Prefix:
zigvalcons1
Recover ZIGChain Accounts With a Mnemonic Phrase
If you lose access to your ZIGChain account, you can recover it using your 12-24 word mnemonic phrase that serves as a backup for your private key.
Recover an Account With the CLI
🧑💻 To restore a ZIGChain account using a previously saved mnemonic phrase:
zigchaind keys add <key-name> --recover
Follow the prompt to enter your 12-24 word mnemonic phrase. Once validated, your account will be restored, displaying the associated details.
Security Best Practices for ZIGChain Accounts
Protect your ZIGChain accounts and assets by following these essential security practices:
1. Mnemonic Phrase Protection
- Use a Hardware Wallet: Store your mnemonic phrase on a hardware wallet (like Ledger or Trezor). These physical devices are designed to keep your keys safe from online threats.
- Offline Backups: Write down your mnemonic phrase on paper or store it on an encrypted USB drive that’s kept offline. Avoid digital storage on computers or clouds.
- Split Backups for Safety: Split your phrase into two or more parts and store them in separate, secure places. This way, losing one part won’t compromise your account.
2. Private Key Security
- Encryption: If you must store your private key on your device, use encryption tools (like GPG or BitLocker) and strong passwords to protect them.
- Unique Keys for Different Uses: Use separate keys for different accounts or DApps to minimize risk if one key is compromised.
- Two-Factor Authentication (2FA): Enable 2FA on all accounts and devices accessing your ZIGChain wallet. Hardware keys (like YubiKeys) offer the strongest security.
3. Using Multisig Accounts
- Shared Control for Important Accounts: For accounts with significant funds, implement multisig (multi-signature) setups that require multiple people to approve each transaction. This safeguards against unauthorized transfers.
- Cold Storage Multisig: Store your multisig keys on hardware wallets or offline devices to protect against remote hacking attempts.
4. Avoiding Phishing and Scams
- Check URLs Carefully: Only use the official ZIGChain website and trusted DApps. Bookmark the official URL to avoid fake sites.
- Verify Transactions Before Signing: Always double-check the details of any transaction before approving it in your wallet. Malicious contracts can trick you into sending funds.
CLI Commands Quick Sheet
This section provides a comprehensive reference for common ZIGChain CLI commands for account management, balance queries, and transactions.
How to Consult all Accounts
zigchaind keys list
How to Delete an Account
zigchaind keys delete <WALLET-NAME>
Consult the balance of a single account:
- Mainnet
- Testnet
- Local
zigchaind q bank balances <WALLET-ADDRESS> \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz
zigchaind q bank balances <WALLET-ADDRESS> \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz
zigchaind q bank balances <WALLET-ADDRESS> \
--chain-id zigchain-1 --node http://localhost:26657
Consult the balance of multiple accounts:
- Mainnet
- Testnet
- Local
for addr in "<WALLET-ADDRESS1>" "<WALLET-ADDRESS2>"; do
echo "balance: $addr"
zigchaind q bank balances $addr \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz
done
for addr in "<WALLET-ADDRESS1>" "<WALLET-ADDRESS2>"; do
echo "balance: $addr"
zigchaind q bank balances $addr \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz
done
for addr in "<WALLET-ADDRESS1>" "<WALLET-ADDRESS2>"; do
echo "balance: $addr"
zigchaind q bank balances $addr \
--chain-id zigchain-1 --node http://localhost:26657
done
Make a basic transaction:
- Mainnet
- Testnet
- Local
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--fees <AMOUNT>uzig \
--from <ADDRESS> \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz \
--yes
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--fees <AMOUNT>uzig \
--from <ADDRESS> \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz \
--yes
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--fees <AMOUNT>uzig \
--from <ADDRESS> \
--chain-id zigchain-1 --node http://localhost:26657 \
--yes
Make a basic transaction by providing Gas Fees and Gas Limit:
- Mainnet
- Testnet
- Local
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz \
--fees <AMOUNT>uzig \
--gas <AMOUNT> \
--from <ADDRESS>
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz \
--fees <AMOUNT>uzig \
--gas <AMOUNT> \
--from <ADDRESS>
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--chain-id zigchain-1 --node http://localhost:26657 \
--fees <AMOUNT>uzig \
--gas <AMOUNT> \
--from <ADDRESS>
Make a basic transaction by providing Gas Price and Gas Limit:
- Mainnet
- Testnet
- Local
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz \
--gas-prices <AMOUNT>uzig \
--gas <AMOUNT> \
--from <ADDRESS>
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz \
--gas-prices <AMOUNT>uzig \
--gas <AMOUNT> \
--from <ADDRESS>
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--chain-id zigchain-1 --node http://localhost:26657 \
--gas-prices <AMOUNT>uzig \
--gas <AMOUNT> \
--from <ADDRESS>
Simulate a Transaction (to review gas fees):
- Mainnet
- Testnet
- Local
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--fees <AMOUNT>uzig \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz \
--dry-run \
--yes
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--fees <AMOUNT>uzig \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz \
--dry-run \
--yes
zigchaind tx bank send <FROM-ADDRESS> <TO-ADDRESS> <AMOUNT>uzig \
--fees <AMOUNT>uzig \
--chain-id zigchain-1 --node http://localhost:26657 \
--dry-run \
--yes
Consult Account Information:
- Mainnet
- Testnet
- Local
zigchaind q auth account <ADDRESS> \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz
zigchaind q auth account <ADDRESS> \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz
zigchaind q auth account <ADDRESS> \
--chain-id zigchain-1 --node http://localhost:26657
Example response:
account:
type: /cosmos.auth.v1beta1.BaseAccount
value:
account_number: "60"
address: zig126kn23lxurns83w2n59a7e0v2wprjdrrfv4xw8
public_key:
type: /cosmos.crypto.secp256k1.PubKey
value: A6lb4ADv8XZVw/T+wqLZzobnj0vkAarcpJrjb7y5zvTQ
sequence: "148"