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.
v0.5.10: 34 top-level commands and
51 subcommands, plus the global --rpc-url and --output
flags documented below.
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 |
$ 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.
lichen wallet create [name]
| Argument | Type | Default | Description |
|---|---|---|---|
name |
string | auto | Optional wallet name (must be unique) |
$ 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.
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 |
$ 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.
lichen wallet list
$ 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.
lichen wallet show <name>
| Argument | Type | Default | Description |
|---|---|---|---|
name |
string | required | Wallet name |
$ 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.
lichen wallet balance <name>
| Argument | Type | Default | Description |
|---|---|---|---|
name |
string | required | Wallet name |
$ 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.
lichen wallet remove <name>
$ 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.
lichen identity new [--output <path>]
| Flag | Type | Default | Description |
|---|---|---|---|
--output, -o |
path | ~/.lichen/keypairs/id.json |
Output file for the keypair |
$ lichen identity new
Generated new identity!
Pubkey: Mo1tABcDeFgH1jK2LmNoPqRsTuVwXyZ3456789ab
EVM Address: 0x7a3b...9f2e
Saved to: ~/.lichen/keypairs/id.json
Get test tokens: lichen airdrop 100
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.
lichen identity show [--keypair <path>]
| Flag | Type | Default | Description |
|---|---|---|---|
--keypair, -k |
path | ~/.lichen/keypairs/id.json |
Keypair file to read |
$ 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.
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. |
# 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}
--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.
lichen validator info <address>
| Argument | Type | Default | Description |
|---|---|---|---|
address |
Base58 | required | Validator public key |
$ 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.
lichen validator performance <address>
| Argument | Type | Default | Description |
|---|---|---|---|
address |
Base58 | required | Validator public key |
$ 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.
lichen validator list
$ 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).
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 |
$ 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.
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 |
$ 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.
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) |
$ 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.
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 |
$ 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.
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 |
$ 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.
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 |
$ 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.
lichen contract info <address>
| Argument | Type | Default | Description |
|---|---|---|---|
address |
Base58 | required | Contract address |
$ 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.
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 |
$ 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.
lichen contract list
$ 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).
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 |
$ 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.
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 |
$ 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.
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) |
$ 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).
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 |
$ 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.
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 |
$ 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.
lichen block <slot>
| Argument | Type | Default | Description |
|---|---|---|---|
slot |
u64 | required | Block slot number |
$ 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.
lichen latest
$ 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.
lichen slot
$ lichen slot
Current slot: 483201
lichen blockhash
Retrieve the most recent blockhash. Useful for constructing transactions client-side.
lichen blockhash
$ 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).
lichen burned
$ 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).
lichen validators
$ 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.
lichen status
$ 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.
lichen metrics
$ 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.
lichen account info <address>
| Argument | Type | Default | Description |
|---|---|---|---|
address |
Base58 | required | Account address |
$ 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.
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 |
$ 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.
lichen network status
$ 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.
lichen network peers
$ 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.
lichen network info --rpc-url https://testnet-rpc.lichen.network
$ 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).
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 |
$ 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.
lichen token info <token>
| Argument | Type | Default | Description |
|---|---|---|---|
token |
string | required | Token address or symbol |
$ 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.
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 |
$ 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.
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 |
$ 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.
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) |
$ 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.
lichen token list
$ 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.
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 |
$ 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.
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 |
$ 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.
lichen gov list [--all]
| Flag | Type | Default | Description |
|---|---|---|---|
--all, -a |
flag | false |
Include executed and cancelled proposals |
$ 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.
lichen gov info <proposal_id>
| Argument | Type | Default | Description |
|---|---|---|---|
proposal_id |
u64 | required | Proposal ID |
$ 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.
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 |
$ 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).
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 |
$ 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.
lichen upgrade <address> <contract.wasm> [--keypair <path>]
$ 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.
lichen tx <signature>
$ 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.
lichen version
$ lichen version
lichen 0.5.10
lichen supply
Show total supply, circulating supply, burned LICN, and other chain economics summary data.
lichen supply
lichen fees
Show the current fee schedule and fee-calculation inputs used by the runtime.
lichen fees
lichen epoch
Display the current epoch, slots remaining, and epoch-boundary timing information.
lichen epoch
lichen host-functions
Print the currently available WASM host functions for contract developers and SDK authors.
lichen host-functions
Config Commands
Manage local CLI defaults for RPC endpoints and keypair paths.
lichen config show
Print the current CLI configuration.
lichen config show
lichen config set
Persist a config key locally. Supported keys: rpc_url, ws_url,
keypair.
lichen config set <key> <value>
$ lichen config set rpc_url https://rpc.lichen.network
lichen config reset
Reset stored configuration values back to the CLI defaults.
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.
lichen symbol lookup <symbol>
lichen symbol list
List all currently registered registry entries.
lichen symbol list
lichen symbol by-address
Resolve a contract address back to its registry entry.
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.
lichen nft list [--owner <address>] [--keypair <path>]
lichen nft collection
List NFTs belonging to a specific collection.
lichen nft collection <address>
lichen nft marketplace
Show recent or active NFT marketplace listings from the connected network.
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.
lichen defi dex
lichen defi amm
Show AMM pool and liquidity metrics.
lichen defi amm
lichen defi lending
Show ThallLend protocol statistics and lending activity summaries.
lichen defi lending
lichen defi overview
Show the combined DeFi overview across supported on-chain protocols.
lichen defi overview