CLI Reference

Complete reference for the lichen command-line interface. The CLI is the primary tool for interacting with the Lichen network — managing wallets, deploying contracts, querying state, and operating validators.

Surface Coverage
Implementation-verified for v0.5.10: 34 top-level commands and 51 subcommands, plus the global --rpc-url and --output flags documented below.
Installation
Install with cargo install --path cli/ or build from source. See the Getting Started guide for full setup instructions.

Global Options

These flags apply to every lichen command.

Flag Type Default Description
--rpc-url string configured endpoint RPC server URL to connect to. Public docs examples use https://testnet-rpc.lichen.network or https://rpc.lichen.network.
--output string human Output format: human or json
--help flag Print help information
--version flag Print version information
Shell
$ lichen --rpc-url https://testnet-rpc.lichen.network balance
$ lichen --output json status
$ lichen --version
lichen 0.5.10

Wallet Commands

Multi-wallet management — create, import, inspect, and remove wallets. Wallet keypairs are stored in ~/.lichen/wallets/.

lichen wallet create

Create a new wallet with a fresh native PQ keypair. If no name is given, an auto-incrementing name (wallet-1, wallet-2, …) is used.

Shell
lichen wallet create [name]
Argument Type Default Description
name string auto Optional wallet name (must be unique)
Shell
$ lichen wallet create my-agent

 Created wallet 'my-agent'
 Address:  Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ3456789ab
 Keypair:  ~/.lichen/wallets/my-agent.json

 Done! Fund with: lichen airdrop 100

lichen wallet import

Import an existing keypair file as a named wallet.

Shell
lichen wallet import <name> --keypair <path>
Flag / Arg Type Default Description
name string required Wallet name to assign
--keypair, -k path required Path to the keypair JSON file
Shell
$ lichen wallet import treasury --keypair ~/keys/treasury.json

 Imported wallet 'treasury'
 Address: Mo1tTreasury12345abcdefghijklmnopqrs
 Stored in: ~/.lichen/wallets/treasury.json

lichen wallet list

List all wallets stored locally with their addresses.

Shell
lichen wallet list
Shell
$ lichen wallet list

 Wallets
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  my-agent    Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ...
  treasury    Mo1tTreasury12345abcdefghijklmno...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Total: 2 wallets

lichen wallet show

Display detailed information for a specific wallet, including its full address and keypair file path.

Shell
lichen wallet show <name>
Argument Type Default Description
name string required Wallet name
Shell
$ lichen wallet show my-agent

 Wallet: my-agent
 Address:  Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ3456789ab
 Keypair:  ~/.lichen/wallets/my-agent.json
 Created:  2026-02-10 14:32:01 UTC

lichen wallet balance

Query the on-chain balance for a named wallet, broken down by spendable, staked, and locked amounts. Like every CLI command, this honors the global --rpc-url flag when it appears before wallet.

Shell
lichen wallet balance <name>
Argument Type Default Description
name string required Wallet name
Shell
$ lichen wallet balance my-agent

 Wallet: my-agent
 Address: Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ3456789ab
─────────────────────────────────────────────────────────
 Total:       100.0000 LICN
   Spendable:   90.0000 LICN
   Staked:       10.0000 LICN
   Locked:        0.0000 LICN
─────────────────────────────────────────────────────────

lichen wallet remove

Remove a wallet from local storage. This deletes the keypair file — make sure you have a backup.

Shell
lichen wallet remove <name>
Warning
This permanently deletes the local keypair. If you don't have the mnemonic or a separate backup, the funds in this wallet will be unrecoverable.
Shell
$ lichen wallet remove old-wallet

  Removing wallet 'old-wallet' — this cannot be undone.
 Wallet removed.

Identity Commands

Manage your on-chain identity. Your identity is based on a native PQ keypair stored at ~/.lichen/keypairs/id.json by default.

lichen identity new

Generate a new identity keypair. This creates your public key (Lichen address) and a corresponding EVM-compatible address.

Shell
lichen identity new [--output <path>]
Flag Type Default Description
--output, -o path ~/.lichen/keypairs/id.json Output file for the keypair
Shell
$ lichen identity new

 Generated new identity!
 Pubkey:      Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ3456789ab
 EVM Address: 0x7a3b...9f2e
 Saved to:    ~/.lichen/keypairs/id.json

 Get test tokens: lichen airdrop 100
Keypair Encryption
Set the LICHEN_KEYPAIR_PASSWORD environment variable before generating to encrypt the keypair file at rest with AES-256-GCM authenticated encryption (12-byte random nonce, password-derived key). For validator, genesis, treasury, and signer material, this password is required outside explicit local development so operator key files are never written back as plaintext.

lichen identity show

Display your Lichen identity — public key, EVM address, and keypair file location.

Shell
lichen identity show [--keypair <path>]
Flag Type Default Description
--keypair, -k path ~/.lichen/keypairs/id.json Keypair file to read
Shell
$ lichen identity show

 Your Lichen Identity
 Pubkey:      Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ3456789ab
 EVM Address: 0x7a3b...9f2e
 Keypair:     ~/.lichen/keypairs/id.json

lichen identity export

Decrypt and export a keypair file. Useful for validators who need to access their wallet address or import their key into the browser wallet. Requires LICHEN_KEYPAIR_PASSWORD to be set for encrypted keypair files.

Shell
lichen identity export [--keypair <path>] [--reveal-seed]
Flag Type Default Description
--keypair, -k path ~/.lichen/keypairs/id.json Keypair file to decrypt and export
--reveal-seed flag false Also print the 32-byte private seed in hex. Handle with extreme care.
Shell
# Set the password first
export LICHEN_KEYPAIR_PASSWORD=$(grep LICHEN_KEYPAIR_PASSWORD /etc/lichen/env-testnet | cut -d= -f2-)

$ lichen identity export --keypair /var/lib/lichen/state-testnet/validator-keypair.json

🦞 Keypair Export
📄 File:    /var/lib/lichen/state-testnet/validator-keypair.json
📍 Pubkey:  8kJQ9VYG8e51TuVd5LVUsXQWfaD7zG5cEToauCW5LEj
🔐 EVM:     0x7a3b...9f2e

# JSON output for agents:
$ lichen --output json identity export --keypair /var/lib/lichen/state-testnet/validator-keypair.json
{"pubkey":"8kJQ9...","evm_address":"0x7a3b...","file":"...","encrypted":true}
Security: The --reveal-seed flag outputs the raw private key material. Anyone with this seed controls the account. Never share it, log it, or store it in plaintext. Use it only to import into a secure wallet or for one-time backup.

Validator Commands

Inspect validator status, performance, and the active validator set.

lichen validator info

Show detailed information for a specific validator: stake, reputation, activity status, and blocks produced.

Shell
lichen validator info <address>
Argument Type Default Description
address Base58 required Validator public key
Shell
$ lichen validator info Mo1tVa1iDatoR12345abcdef

 Validator Information
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Pubkey:          Mo1tVa1iDatoR12345abcdef
 Stake:           50000.0000 LICN
 Reputation:      98
 Status:          Active
 Blocks produced: 12,847

lichen validator performance

Show epoch-level performance metrics for a validator: block production rate, average block time, and uptime.

Shell
lichen validator performance <address>
Argument Type Default Description
address Base58 required Validator public key
Shell
$ lichen validator performance Mo1tVa1iDatoR12345abcdef

 Validator Performance
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Validator: Mo1tVa1iDatoR12345abcdef

 Epoch Performance:
   Blocks produced: 432
   Blocks expected: 440
   Success rate:    98.18%
   Average block time: 412ms

 Uptime: 99.87%

lichen validator list

List all active validators with their stake and reputation scores.

Shell
lichen validator list
Shell
$ lichen validator list

 Active Validators
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#1 Mo1tVa1iDatoR12345abcdef
    Stake: 125000.0 LICN
   Reputation: 98

#2 Mo1tVa1iDatoR67890ghijkl
    Stake: 80000.0 LICN
   Reputation: 95

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Total: 2 validators, 205000.0 LICN staked

Staking Commands

Stake and unstake LICN to participate in consensus. Staked tokens are locked and earn rewards each epoch.

lichen stake add

Stake LICN to register as a validator or increase your existing stake. Amount is in spores (1 LICN = 1,000,000,000 spores).

Shell
lichen stake add <amount> [--keypair <path>]
Flag / Arg Type Default Description
amount u64 required Amount in spores to stake
--keypair, -k path ~/.lichen/keypairs/id.json Keypair file for the staking account
Shell
$ lichen stake add 10000000000000

 Staking LICN
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Amount:    10000.0 LICN
 Validator: Mo1tABcDeFgH1jK2LmNoPqRsTuVw...
 Stake transaction confirmed!

lichen stake remove

Unstake LICN from your validator. Unstaked tokens become spendable after a cooldown period.

Shell
lichen stake remove <amount> [--keypair <path>]
Flag / Arg Type Default Description
amount u64 required Amount in spores to unstake
--keypair, -k path ~/.lichen/keypairs/id.json Keypair file
Shell
$ lichen stake remove 5000000000000

 Unstaking 5000.0 LICN...
 Unstake transaction confirmed!
 Cooldown: tokens will be spendable in ~2 epochs

lichen stake status

Show current staking status for an account — how much is staked and current validator standing.

Shell
lichen stake status [--address <addr>] [--keypair <path>]
Flag Type Default Description
--address, -a Base58 your identity Account to query
--keypair, -k path ~/.lichen/keypairs/id.json Keypair file (used if no address given)
Shell
$ lichen stake status

 Staking Status
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Account:   Mo1tABcDeFgH1jK2LmNoPqRsTuVw...
 Staked:    100000.0000 LICN
 Status:    Active Validator
 Reputation: 98

lichen stake rewards

Show accumulated staking rewards for an account.

Shell
lichen stake rewards [--address <addr>] [--keypair <path>]
Flag Type Default Description
--address, -a Base58 your identity Account to query
--keypair, -k path ~/.lichen/keypairs/id.json Keypair file
Shell
$ lichen stake rewards

 Staking Rewards
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Account:        Mo1tABcDeFgH1jK2LmNoPqRsTuVw...
 Total earned:   42.7500 LICN
 Current epoch:  127
 This epoch:     0.3200 LICN

Contract Commands

Deploy WASM smart contracts and interact with on-chain programs.

lichen deploy

Deploy a compiled WASM contract binary to the chain. Cost is 25.001 LICN total (25 LICN deploy premium + 0.001 LICN base fee). Optionally register the contract in the symbol registry by providing --symbol.

Shell
lichen deploy <contract.wasm> [--symbol <SYM>] [--name <name>] [--template <type>] [--decimals <n>] [--metadata <json>] [--keypair <path>]
Flag / Arg Type Default Description
contract path required Path to the compiled WASM file
--symbol string Symbol to register in symbol registry (e.g. VYRN)
--name string Display name for registry (e.g. "VYRN Token")
--template string Category: token, nft, defi, dex, governance, wrapped, bridge, oracle, lending, marketplace, auction, identity, launchpad, vault, payments
--decimals u8 Decimal precision (for tokens)
--metadata JSON string Custom metadata JSON attached to the registry entry. Use a flat object of strings, numbers, and booleans only (1024 bytes max). Common profile fields: description, website, logo_url, twitter, telegram, discord.
--keypair, -k path ~/.lichen/keypairs/id.json Deployer keypair
Shell
$ lichen deploy target/wasm32-unknown-unknown/release/my_contract.wasm \
    --symbol MYTK --name "My Token" --template mt20 --decimals 9 \
    --metadata '{"description":"Community token","website":"https://mytoken.io","logo_url":"https://mytoken.io/logo.png","twitter":"https://x.com/mytoken","telegram":"https://t.me/mytoken","discord":"https://discord.gg/mytoken"}'

 Deploying contract...

  Program ID:  Mo1tProg1D12345abcdefghijklmnop
  Symbol:      MYTK
  Template:    token
  Size:        14,832 bytes
  Deploy tx:   9kR7...sWmN
  Fee:         25.001000000 LICN
  Status:      Finalized

 Contract deployed and verified on-chain!

After submitting the deploy transaction, the CLI automatically polls getAccountInfo to verify the contract is live on-chain. You’ll see a green check once confirmed, or a warning if verification times out.

lichen call

Invoke a function on a deployed smart contract. Arguments are passed as a JSON array.

Shell
lichen call <contract> <function> [--args <json>] [--keypair <path>]
Flag / Arg Type Default Description
contract Base58 required Contract address
function string required Function name to call
--args, -a JSON [] Arguments as a JSON array
--keypair, -k path ~/.lichen/keypairs/id.json Caller keypair
Shell
$ lichen call Mo1tProg1D12345abcdefghijklmnop set_greeting \
    --args '["Hello, Lichen!"]'

 Calling set_greeting on Mo1tProg1D...
 Tx: 4xK9...mNpQ
 Success — 1 event emitted
   Event: GreetingSet("Hello, Lichen!")

lichen contract info

Show on-chain metadata for a deployed contract: owner, size, and deployment details.

Shell
lichen contract info <address>
Argument Type Default Description
address Base58 required Contract address
Shell
$ lichen contract info Mo1tProg1D12345abcdefghijklmnop

 Contract Information
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Address:  Mo1tProg1D12345abcdefghijklmnop
 Owner:    Mo1tABcDeFgH1jK2LmNoPqRsTuVw...
 Size:     14,832 bytes
 Deployed: slot 482,100

lichen contract logs

Retrieve recent log entries (events) emitted by a contract.

Shell
lichen contract logs <address> [--limit <n>]
Flag / Arg Type Default Description
address Base58 required Contract address
--limit, -l integer 20 Number of log entries to show
Shell
$ lichen contract logs Mo1tProg1D12345abcdefghijklmnop --limit 5

 Contract Logs (last 5)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[slot 482917] GreetingSet("Hello, Lichen!")
[slot 482850] GreetingSet("Testing 1-2-3")
[slot 482790] GreetingSet("First message")

lichen contract list

List all contracts deployed on the connected network.

Shell
lichen contract list
Shell
$ lichen contract list

 Deployed Contracts
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#1 Mo1tProg1D12345abcdefghijklmnop  (14,832 bytes)
#2 Mo1tTokenFact0ry9876zyxwvuts     (22,104 bytes)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Total: 2 contracts

lichen contract register

Retroactively register an already-deployed contract in the symbol registry. Use this when a contract was deployed without --symbol. Costs 0.001 LICN (base fee only).

Shell
lichen contract register <address> --symbol <SYM> [--name <name>] [--template <type>] [--decimals <n>] [--keypair <path>]
Flag / Arg Type Default Description
address Base58 required Contract address to register
--symbol string required Symbol (e.g. VYRN)
--name string Display name
--template string Category: token, nft, defi, dex, governance, wrapped, bridge, oracle, lending, marketplace, auction, identity, launchpad, vault, payments
--decimals u8 Decimal precision (for tokens)
--keypair, -k path ~/.lichen/keypairs/id.json Must be the contract owner
Shell
$ lichen contract register 5A19vK1LMPsFAk1Q7t6AHpBXAkyWiFxbat39GF9RxBWL \
    --symbol VYRN --name "VYRN Token" --template mt20 --decimals 9

 Symbol registered: VYRN → 5A19vK...9RxBWL

lichen contract generate-client

Generate a typed client library from a contract's ABI. Produces ready-to-use TypeScript or Python code with method stubs, type definitions, and connection helpers for every function in the ABI.

Shell
lichen contract generate-client --abi <path-or-address> --lang <typescript|python> --output <path> [--address <contract-address>]
Flag / Arg Type Default Description
--abi path or Base58 Path to a local abi.json file, or a contract address (fetches ABI via RPC)
--lang, -l string typescript or python
--output, -o path Output file path (e.g. ./client.ts)
--address Base58 Override contract address embedded in the generated code
Shell
$ lichen contract generate-client \
    --abi contracts/lusd_token/abi.json \
    --lang typescript \
    --output ./lusd-token-client.ts

 Generated TypeScript client → ./lusd-token-client.ts

$ lichen contract generate-client \
    --abi 5A19vK1LMPsFAk1Q7t6AHpBXAkyWiFxbat39GF9RxBWL \
    --lang python \
    --output ./my_token_client.py

 Generated Python client → ./my_token_client.py (fetched ABI from RPC)

Query Commands

Read-only commands for querying chain state — balances, blocks, accounts, and network health.

lichen balance

Check the LICN balance for any address. Shows total, spendable, staked, and locked breakdowns.

Shell
lichen balance [address] [--keypair <path>]
Flag / Arg Type Default Description
address Base58 your identity Account address to query (optional)
--keypair, -k path ~/.lichen/keypairs/id.json Keypair to derive address from (if no address given)
Shell
$ lichen balance

 Balance for Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ3456789ab
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Total:       100.0000 LICN (100000000000 spores)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   Spendable:    90.0000 LICN (available for transfers)
   Staked:        10.0000 LICN (locked in validation)
   Locked:         0.0000 LICN (locked in contracts)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

lichen transfer

Send LICN to another address. The fee is deducted from the sender's spendable balance (40% of the fee is burned).

Shell
lichen transfer <to> <amount> [--keypair <path>]
Flag / Arg Type Default Description
to Base58 required Destination address
amount f64 required Amount in LICN
--keypair, -k path ~/.lichen/keypairs/id.json Sender keypair
Shell
$ lichen transfer Mo1tRecipientAddress123456789abcdefghijk 1.5

 Transferring 1.5 LICN (1500000000 spores)
 From: Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ3456789ab
 To:   Mo1tRecipientAddress123456789abcdefghijk
 Transaction sent!
 Signature: 7zQ3...bRtW

lichen airdrop

Request free test tokens from the faucet. Only available on testnet and local networks.

Shell
lichen airdrop [amount] [--pubkey <addr>] [--keypair <path>]
Flag / Arg Type Default Description
amount f64 100.0 Amount in LICN to request
--pubkey, -p Base58 your identity Recipient address
--keypair, -k path ~/.lichen/keypairs/id.json Keypair to derive address from
Shell
$ lichen airdrop 50

 Requesting 50 LICN airdrop...

  Transaction: 4xK9...mNpQ
  New balance: 50.000000000 LICN

 Airdrop successful!

lichen block

Retrieve block information by slot number — hash, parent, state root, validator, timestamp, and transaction count.

Shell
lichen block <slot>
Argument Type Default Description
slot u64 required Block slot number
Shell
$ lichen block 482917

 Block #482917
 Hash:         a3f8...7b2c
⬅️  Parent:       d1e9...4a5f
 State Root:   8c7d...3e1a
 Validator:    Mo1tVa1iDatoR12345abcdef
 Timestamp:    2026-02-10T14:32:01Z
 Transactions: 12

lichen latest

Get the most recent finalized block.

Shell
lichen latest
Shell
$ lichen latest

 Latest Block #483201
 Hash:         f2a1...8d4e
⬅️  Parent:       a3f8...7b2c
 State Root:   9b3e...1f7c
 Validator:    Mo1tVa1iDatoR67890ghijkl
 Timestamp:    2026-02-10T14:35:22Z
 Transactions: 8

lichen slot

Print the current slot number.

Shell
lichen slot
Shell
$ lichen slot
 Current slot: 483201

lichen blockhash

Retrieve the most recent blockhash. Useful for constructing transactions client-side.

Shell
lichen blockhash
Shell
$ lichen blockhash
 Recent blockhash: f2a1b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0

lichen burned

Show the total amount of LICN permanently burned via the deflationary fee mechanism (40% of all transaction fees).

Shell
lichen burned
Shell
$ lichen burned

 Total LICN Burned
 1,247.832000000 LICN (1247832000000 spores)

Deflationary mechanism: 40% of all transaction fees are burned forever! 

lichen validators

List all active validators on the network (shorthand for lichen validator list).

Shell
lichen validators
Shell
$ lichen validators

 Active Validators
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#1 Mo1tVa1iDatoR12345abcdef
    Stake: 125000.0 LICN    Reputation: 98

#2 Mo1tVa1iDatoR67890ghijkl
    Stake: 80000.0 LICN    Reputation: 95
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Total: 2 validators, 205000.0 LICN staked

lichen status

Show a comprehensive overview of the chain: current slot, validator count, TPS, block and transaction totals.

Shell
lichen status
Shell
$ lichen status

 Lichen Status
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Current slot:        483,201
 Active validators:   2
 TPS:                 1,247
 Total blocks:        483,201
 Total transactions:  2,491,832
 Network is healthy

lichen metrics

Display real-time performance metrics for the connected node.

Shell
lichen metrics
Shell
$ lichen metrics

 Performance Metrics
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 TPS:                 1,247
 Total blocks:        483,201
 Total transactions:  2,491,832
  Avg block time:      412ms

lichen account info

Show detailed account information for any on-chain address.

Shell
lichen account info <address>
Argument Type Default Description
address Base58 required Account address
Shell
$ lichen account info Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ3456789ab

 Account Details
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Address:     Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ3456789ab
 Balance:     100.0000 LICN
 Nonce:       47
  Type:        User Account

lichen account history

Show recent transaction history for an account.

Shell
lichen account history <address> [--limit <n>]
Flag / Arg Type Default Description
address Base58 required Account address
--limit, -l integer 10 Number of transactions to show
Shell
$ lichen account history Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ3456789ab --limit 3

 Transaction History (last 3)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[slot 482917] Transfer  -1.5000 LICN → Mo1tRecip...
[slot 482800] Airdrop  +50.0000 LICN
[slot 482750] Stake    -10.0000 LICN (staked)

Network Commands

Inspect network health, connected peers, and chain metadata.

lichen network status

Show overall network health — current slot, validator count, TPS, and block/transaction totals.

Shell
lichen network status
Shell
$ lichen network status

 Network Status
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Current slot:        483,201
 Active validators:   2
 TPS:                 1,247
 Total blocks:        483,201
 Total transactions:  2,491,832

 Network is healthy

lichen network peers

List all connected P2P peers on the local node.

Shell
lichen network peers
Shell
$ lichen network peers

 Connected Peers
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#1 12D3Koo...abc (Connected)
   Address: /ip4/192.168.1.10/tcp/8001

#2 12D3Koo...def (Connected)
   Address: /ip4/192.168.1.11/tcp/8001

Total: 2 peers

lichen network info

Display network metadata — network ID, chain ID, RPC endpoint, and basic statistics.

Shell
lichen network info --rpc-url https://testnet-rpc.lichen.network
Shell
$ lichen network info --rpc-url https://testnet-rpc.lichen.network

 Network Information
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Network ID:  lichen-testnet-1
  Chain ID:    lichen-testnet-1
 RPC Endpoint: https://testnet-rpc.lichen.network

 Statistics:
   Current slot: 483,201
   Validators:   2
   TPS:          1,247

Token Commands

Create custom tokens, mint, transfer, and query token balances on Lichen.

lichen token create

Deploy a WASM token contract and automatically register it in the symbol registry with template="mt20". Requires a compiled WASM binary. This shortcut is for standard MT-20 named-export contracts; it initializes token ownership, attaches token profile metadata, and can mint the initial owner supply on-chain. Cost is 25.001 LICN (same as lichen deploy).

Shell
lichen token create <name> <symbol> --wasm <path> [--decimals <n>] [--initial-supply <amount>] [--description <text>] [--website <url>] [--logo-url <url>] [--twitter <url>] [--telegram <url>] [--discord <url>] [--keypair <path>]
Flag / Arg Type Default Description
name string required Token display name
symbol string required Token symbol (e.g. VYRN)
--wasm, -w path required Path to a compiled standard MT-20 token contract
--decimals, -d u8 9 Decimal precision
--initial-supply u64 0 Initial supply in whole tokens, minted to the owner immediately after deploy
--description string Short token description stored in the registry profile
--website url Project website URL
--logo-url url Square logo URL used by Explorer and Wallet
--twitter url Twitter/X profile URL
--telegram url Telegram group or channel URL
--discord url Discord invite URL
--keypair, -k path ~/.lichen/keypairs/id.json Token owner keypair
Shell
$ lichen token create "VYRN Token" VYRN \
        --wasm target/wasm32-unknown-unknown/release/vyrn_token.wasm \
        --decimals 9 \
        --initial-supply 1000000 \
        --description "Community token" \
        --website https://vyrn.example \
        --logo-url https://vyrn.example/logo.png \
        --twitter https://x.com/vyrn

 Deploying token contract...
  Name:     VYRN Token
  Symbol:   VYRN
  Decimals: 9
    Initial:  1000000 VYRN -> owner balance
  Address:  5A19vK1LMPsFAk1Q7t6AHpBXAkyWiFxbat39GF9RxBWL
  Fee:      25.001000000 LICN
 Token deployed!

lichen token info

Show metadata and supply information for a token by symbol or contract address.

Shell
lichen token info <token>
Argument Type Default Description
token string required Token address or symbol
Shell
$ lichen token info MOSS

 Token: Moss Storage (MOSS)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Address:   Mo1tToken1234567890abcdefghijk
 Owner:     Mo1tABcDeFgH1jK2LmNoPqRsTuVw...
 Template:  token
 Supply:    500,000 MOSS
 Decimals:  6

lichen token mint

Mint additional tokens (owner only). Tokens are sent to yourself unless --to is specified.

Shell
lichen token mint <token> <amount> [--to <address>] [--keypair <path>]
Flag / Arg Type Default Description
token string required Token address or symbol
amount u64 required Amount to mint (whole tokens)
--to Base58 self Recipient address
--keypair, -k path ~/.lichen/keypairs/id.json Token owner keypair
Shell
$ lichen token mint Mo1tToken1234567890abcdefghijk 10000

 Minting 10,000 whole tokens to Mo1tABcDeFgH1jK2LmNoPqRsTuVw...
 Tokens minted! Sig: 8bN2...kLm4

lichen token send

Transfer custom tokens to another address.

Shell
lichen token send <token> <to> <amount> [--keypair <path>]
Flag / Arg Type Default Description
token string required Token address or symbol
to Base58 required Recipient address
amount u64 required Amount to send (whole tokens)
--keypair, -k path ~/.lichen/keypairs/id.json Sender keypair
Shell
$ lichen token send Mo1tToken1234567890abcdefghijk Mo1tRecipient... 500

 Sending 500 whole tokens to Mo1tRecipient...
 Tokens sent!
 Tx: 8bN2...kLm4

lichen token balance

Query the token balance for a given account.

Shell
lichen token balance <token> [--address <addr>] [--keypair <path>]
Flag / Arg Type Default Description
token string required Token address or symbol
--address, -a Base58 your identity Account to query
--keypair, -k path ~/.lichen/keypairs/id.json Keypair (used if no address)
Shell
$ lichen token balance Mo1tToken1234567890abcdefghijk

 Token Balance
 Token:   Mo1tToken1234567890abcdefghijk
 Account: Mo1tABcDeFgH1jK2LmNoPqRsTuVw...
 Balance: 499,500 MOSS (499500000000 base units)

lichen token list

List all registered tokens on the network.

Shell
lichen token list
Shell
$ lichen token list

 Registered Tokens
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  MOSS    Moss Storage      Supply: 510,000 LICN    Spore Credits    Supply: 1,000,000
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Total: 2 tokens

Governance Commands

On-chain governance — create proposals, vote, and execute passed governance actions.

lichen gov propose

Submit a new governance proposal. Proposal types: fast-track, standard, constitutional.

Shell
lichen gov propose <title> <description> [--proposal-type <type>] [--keypair <path>]
Flag / Arg Type Default Description
title string required Proposal title
description string required Proposal description
--proposal-type, -t string standard Proposal type: fast-track, standard, constitutional
--keypair, -k path ~/.lichen/keypairs/id.json Proposer keypair
Shell
$ lichen gov propose "Increase block size" "Raise max block size to 2MB" \
    --proposal-type standard

 Governance Proposal Created
  ID:    7
  Title: Increase block size
  Type:  standard
  Status: Voting (ends epoch 135)
 Proposal submitted!

lichen gov vote

Cast a vote on an active proposal. Vote options: yes, no, abstain.

Shell
lichen gov vote <proposal_id> <vote> [--keypair <path>]
Flag / Arg Type Default Description
proposal_id u64 required Proposal ID
vote string required Vote: yes, no, or abstain
--keypair, -k path ~/.lichen/keypairs/id.json Voter keypair
Shell
$ lichen gov vote 7 yes

 Vote Cast
  Proposal: #7 — Increase block size
  Vote:     YES
 Vote recorded!

lichen gov list

List governance proposals. By default shows only active proposals; use --all to include executed and cancelled.

Shell
lichen gov list [--all]
Flag Type Default Description
--all, -a flag false Include executed and cancelled proposals
Shell
$ lichen gov list

 Active Proposals
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#7  Increase block size      [Voting]    yes: 3  no: 1
#6  Add token burn events    [Timelock]  yes: 5  no: 0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Total: 2 active proposals

lichen gov info

Show full details for a governance proposal.

Shell
lichen gov info <proposal_id>
Argument Type Default Description
proposal_id u64 required Proposal ID
Shell
$ lichen gov info 7

 Proposal #7
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Title:       Increase block size
  Description: Raise max block size to 2MB
  Type:        standard
  Status:      Voting
  Proposer:    Mo1tABcDeFgH1jK2LmNoPqRsTuVw...
  Votes:       yes: 3  no: 1  abstain: 0
  Ends:        epoch 135

lichen gov execute

Execute a proposal that has passed voting and completed its time-lock period.

Shell
lichen gov execute <proposal_id> [--keypair <path>]
Flag / Arg Type Default Description
proposal_id u64 required Proposal ID
--keypair, -k path ~/.lichen/keypairs/id.json Executor keypair
Shell
$ lichen gov execute 6

 Executing Proposal #6 — Add token burn events
 Proposal executed successfully!
 Tx: 3mK8...qWn2

lichen gov veto

Veto a proposal during its time-lock period (requires sufficient stake or governance authority).

Shell
lichen gov veto <proposal_id> [--keypair <path>]
Flag / Arg Type Default Description
proposal_id u64 required Proposal ID
--keypair, -k path ~/.lichen/keypairs/id.json Authority keypair
Shell
$ lichen gov veto 7

 Vetoing Proposal #7 — Increase block size
 Proposal vetoed!
 Tx: 5nR1...pTx7

Additional Top-Level Commands

These commands are implemented directly at the top level of lichen and are useful for contract lifecycle operations, chain inspection, and operator workflows.

lichen upgrade

Upgrade an existing contract in place by submitting a new WASM binary for a contract you own.

Shell
lichen upgrade <address> <contract.wasm> [--keypair <path>]
Shell
$ lichen upgrade Mo1tProg1D12345abcdefghijklmnop target/wasm32-unknown-unknown/release/my_contract_v2.wasm

 Upgrading contract...
 Upgrade finalized
 Tx: 9aQ1...uTz8

lichen tx

Fetch a transaction by signature and print the decoded transaction summary.

Shell
lichen tx <signature>
Shell
$ lichen tx 7zQ3...bRtW

 Transaction: 7zQ3...bRtW
  Status: finalized
  Slot:   482917
  Type:   transfer

lichen version

Print the CLI version and build identity without using the global --version flag.

Shell
lichen version
Shell
$ lichen version
lichen 0.5.10

lichen supply

Show total supply, circulating supply, burned LICN, and other chain economics summary data.

Shell
lichen supply

lichen fees

Show the current fee schedule and fee-calculation inputs used by the runtime.

Shell
lichen fees

lichen epoch

Display the current epoch, slots remaining, and epoch-boundary timing information.

Shell
lichen epoch

lichen host-functions

Print the currently available WASM host functions for contract developers and SDK authors.

Shell
lichen host-functions

Config Commands

Manage local CLI defaults for RPC endpoints and keypair paths.

lichen config show

Print the current CLI configuration.

Shell
lichen config show

lichen config set

Persist a config key locally. Supported keys: rpc_url, ws_url, keypair.

Shell
lichen config set <key> <value>
Shell
$ lichen config set rpc_url https://rpc.lichen.network

lichen config reset

Reset stored configuration values back to the CLI defaults.

Shell
lichen config reset

Symbol Registry Commands

Query the on-chain symbol registry used for token and program discovery.

lichen symbol lookup

Look up a symbol entry by its registry symbol.

Shell
lichen symbol lookup <symbol>

lichen symbol list

List all currently registered registry entries.

Shell
lichen symbol list

lichen symbol by-address

Resolve a contract address back to its registry entry.

Shell
lichen symbol by-address <address>

NFT Commands

Inspect wallet-held NFTs, collection inventory, and marketplace listings from the CLI.

lichen nft list

List NFTs owned by an address or the active identity.

Shell
lichen nft list [--owner <address>] [--keypair <path>]

lichen nft collection

List NFTs belonging to a specific collection.

Shell
lichen nft collection <address>

lichen nft marketplace

Show recent or active NFT marketplace listings from the connected network.

Shell
lichen nft marketplace [--limit <n>]

DeFi Commands

Read aggregated protocol stats for SporeSwap, the AMM, ThallLend, and the broader on-chain DeFi stack.

lichen defi dex

Show SporeSwap DEX overview statistics.

Shell
lichen defi dex

lichen defi amm

Show AMM pool and liquidity metrics.

Shell
lichen defi amm

lichen defi lending

Show ThallLend protocol statistics and lending activity summaries.

Shell
lichen defi lending

lichen defi overview

Show the combined DeFi overview across supported on-chain protocols.

Shell
lichen defi overview