# Axiom CLI
The official command-line interface for TruthLinked, a post-quantum secure blockchain.
## Installation
```bash
# Build from source
cargo build --release --package axiom-cli
# Binary location
./target/release/axiom
```
## Quick Start
### Generate a Wallet
```bash
axiom keygen
# Creates ~/.truthlinked/default.keys
```
### Check Your Balance
```bash
axiom balance
```
### Get Testnet Funds
```bash
axiom faucet
# Request testnet TLKD tokens (15,000 TLKD limit)
```
### Send TLKD
```bash
# By account ID
axiom send native <recipient_id> <amount>
# By .tl name
axiom send native alice.tl 10.5
```
## Network Configuration
Axiom connects to **TruthLinked Testnet** by default:
- **RPC Endpoint**: `https://testnet.truthlinked.org`
- No `--rpc` flag needed for testnet operations
### Override RPC (Optional)
```bash
# Use environment variable
export TRUTHLINKED_RPC="http://localhost:19900"
# Or use --rpc flag
axiom --rpc http://localhost:19900 balance
```
## Core Commands
### Account Management
```bash
# Generate new keypair
axiom keygen --output my-wallet.keys
# Derive account ID from keys
axiom account-id --from my-wallet.keys
# Show balance
axiom balance [account_id]
# Show full status (balance, compute, staking)
axiom status --full
```
### Send Transactions
```bash
# Send native TLKD
axiom send native <recipient> <amount>
# Examples
axiom send native alice.tl 100
axiom send native fdf65cef...1890e8 50.5
# Batch transfer to multiple recipients
axiom send batch <recipient1> <amount1> <recipient2> <amount2> ...
```
### NFT Operations
```bash
# Mint NFT
axiom nft mint --name "MyNFT" --uri "ipfs://..." --royalty 5
# Transfer NFT
axiom nft transfer <nft_id> <recipient>
# Send NFT (alias)
axiom send nft <nft_id> <recipient>
# View NFT info
axiom nft info <nft_id>
```
### Name Registry (.tl Names)
```bash
# Propose a .tl name
axiom name propose <name> <target_account_id>
# Example
axiom name propose alice.tl fdf65cef...1890e8
# Vote on name proposal (validators only)
axiom name vote <name> --approve
# Renew name registration
axiom name renew <name>
# Transfer name ownership
axiom name transfer <name> <new_owner>
```
### Staking
```bash
# Stake TLKD
axiom stake <amount>
# Unstake (initiates cooldown)
axiom unstake <amount>
# Withdraw after cooldown
axiom withdraw-stake
# View staking info
axiom staking-info
```
### Compute Credits
```bash
# Deposit TLKD for compute
axiom deposit-compute <amount>
# Withdraw compute credits
axiom withdraw-compute <amount>
```
### Smart Cells (Contracts)
```bash
# Deploy a cell
axiom cell deploy --bytecode <file> --initial-balance 10
# Call a cell
axiom cell call <cell_id> --data <hex> --value 1.0
# Upgrade cell (owner only)
axiom cell upgrade <cell_id> --bytecode <new_file>
# Transfer cell ownership
axiom cell transfer-ownership <cell_id> <new_owner>
# Make cell immutable (permanent)
axiom cell make-immutable <cell_id>
```
### Chain Information
```bash
# Chain status
axiom chain-info
# Token info
axiom token-info
# Network health
axiom network-info
# List validators
axiom validators
# Transaction status
axiom tx-status <tx_hash>
axiom tx <tx_hash> # alias
```
## Output Formats
```bash
# Human-readable (default)
axiom balance
# JSON output (for scripts)
axiom balance --json
axiom --json balance # global flag
# Compact output
axiom balance --output compact
```
## Key Management
### Key File Format
Axiom uses Dilithium5 post-quantum cryptography. Key files contain:
- Secret key (private)
- Public key
- Account ID (derived from public key)
**⚠️ Security Warning**: Keep your `.keys` files secure. Never share them or commit to version control.
### Multiple Keys
```bash
# Use specific key for transaction
axiom send native alice.tl 10 --from my-other-wallet.keys
# Use different key per command
axiom balance --from wallet1.keys
axiom send native bob.tl 5 --from wallet2.keys
```
### Configuration File
Create `~/.truthlinked/config.json`:
```json
{
"keyfile": "~/.truthlinked/default.keys",
"rpc": "https://testnet.truthlinked.org"
}
```
## Advanced Usage
### Transaction Signing
All transactions require a signature from your key:
```bash
# Explicit keyfile
axiom send native alice.tl 10 --from my-wallet.keys
# Default key (from config)
axiom send native alice.tl 10
```
### Gas and Fees
- Gas is automatically estimated
- Fees are paid in TLKD
- View fee in transaction output
### Name Resolution
Recipients support multiple formats:
- **Account ID**: `fdf65cef48cc4c7f6f256ccc0b28173c64d18eb3e882cdc960474bc24c1890e8`
- **.tl names**: `alice.tl`, `bob.tl`
- **Public key** (for some commands)
## SDK Generation
Generate a project template with embedded SDK:
```bash
axiom sdk-gen my-project
cd my-project
# Follow instructions in generated README
```
## Common Workflows
### New User Setup
```bash
# 1. Generate wallet
axiom keygen
# 2. Get your account ID
axiom account-id
# 3. Get testnet funds
axiom faucet
# 4. Check balance
axiom balance
```
### Register a Name
```bash
# 1. Propose your name
axiom name propose myname.tl $(axiom account-id)
# 2. Wait for validator approval (automatic)
# 3. Verify registration
axiom resolve myname.tl
# 4. Now others can send to you via name
# Others: axiom send native myname.tl 100
```
### Deploy and Use a Cell
```bash
# 1. Deploy cell
axiom cell deploy --bytecode contract.wasm --initial-balance 10
# 2. Call cell function
axiom cell call <cell_id> --data 0x1234... --value 1.0
# 3. Check cell state
axiom cell info <cell_id>
```
## Troubleshooting
### Connection Issues
```bash
# Check network status
axiom network-info
# Verify RPC endpoint
axiom --rpc https://testnet.truthlinked.org chain-info
```
### Transaction Failures
```bash
# Check transaction status
axiom tx-status <tx_hash>
# Common issues:
# - Insufficient balance (need TLKD for amount + fees)
# - Invalid recipient address
# - Name not registered yet
```
### Key File Issues
```bash
# Verify key file format
axiom account-id --from my-wallet.keys
# If corrupted, generate new wallet
axiom keygen --output new-wallet.keys
```
## Environment Variables
- `TRUTHLINKED_RPC`: Override default RPC endpoint
- `RUST_LOG`: Set log level (debug, info, warn, error)
## Examples
### Simple Transfer
```bash
axiom send native alice.tl 100
```
### Batch Transfer
```bash
axiom send batch alice.tl 10 bob.tl 20 charlie.tl 30
```
### Mint and Send NFT
```bash
# Mint
axiom nft mint --name "CoolArt" --uri "ipfs://Qm..." --royalty 5
# Transfer
axiom nft transfer <nft_id> alice.tl
```
### Name Registration Flow
```bash
# Propose
axiom name propose myname.tl $(axiom account-id)
# Vote (validators only)
axiom name vote myname.tl --approve
# Use
axiom send native myname.tl 50
```
## Support
- **Documentation**: https://docs.truthlinked.org
- **Explorer**: https://explorer.truthlinked.org
- **RPC API**: https://testnet.truthlinked.org
## License
Copyright © 2026 TruthLinked
## Version
Check version:
```bash
axiom --version
```
Current default network: **Testnet** (`https://testnet.truthlinked.org`)