axiom-cli 0.1.17

TruthLinked command-line interface for accounts, cells, validators, governance, MCP, and SDK workflows.
# 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`)