ozon-cli

Crates.ioozon-cli
lib.rsozon-cli
version0.1.27
created_at2025-10-14 12:15:48.990704+00
updated_at2025-10-26 20:24:20.910728+00
descriptionOzon CLI helps to manage and register operators and AVSs with the Ozon protocol.
homepagehttps://github.com/wildchain/ozon_contract
repositoryhttps://github.com/wildchain/ozon_contract
max_upload_size
id1882170
size260,483
(bristinWild)

documentation

README

Ozon-cli (PLEASE NOTE - We are currently in the development stage , so mainnet deployments are not live yet. Please stick to Devnet and have fun).

Crates.io License

Command-line interface for interacting with the Ozon restaking protocol on Solana. Manage operators and AVS (Actively Validated Services) registrations directly from your terminal.

πŸš€ Features

  • Operator Management: Register, update, and de-register operators with bond staking
  • AVS Management: Register and manage Actively Validated Services
  • Multi-Cluster Support: Works with Solana devnet, testnet, and mainnet
  • Flexible Wallet Options: Use default or custom wallet configurations
  • Transaction Verification: Get detailed transaction signatures for all operations

πŸ“¦ Installation

Install from crates.io (Recommended)

cargo install ozon-cli

Install from Source (Repo is private as of now - use the above option)

git clone https://github.com/wildchain/ozon_contract.git
cd ozon_contract/ozon-cli
cargo install --path .

Verify Installation

ozon-cli --version
ozon-cli --help

πŸ”§ Prerequisites

Before using ozon-cli, ensure you have:

  1. Rust and Cargo installed (rustup)
  2. Solana CLI tools installed (Solana Docs)
  3. A Solana wallet configured

Setting Up Your Solana Wallet

# Create a new wallet (if you don't have one)
solana-keygen new --outfile ~/.config/solana/id.json

# Set cluster to devnet for testing
solana config set --url devnet

# Check your wallet address
solana address

# Get devnet SOL for testing (devnet only)
solana airdrop 2

πŸ“– Usage

Basic Command Structure

ozon-cli <COMMAND> [OPTIONS]

Global Options

  • --cluster <CLUSTER>: Specify Solana cluster (devnet, testnet, mainnet) [default: devnet]
  • --wallet <PATH>: Path to wallet keypair file [default: ~/.config/solana/id.json]
  • --help: Display help information
  • --version: Display version information

🎯 Commands

1. Initialize Operator

Register a new operator with the Ozon protocol by staking a bond amount.

Syntax:

ozon-cli initialize-operator \
  --bond-amount <LAMPORTS> \
  --metadata <STRING> \
  [--cluster <CLUSTER>] \
  [--wallet <PATH>]

Parameters:

  • --bond-amount: Amount of SOL to bond in lamports (minimum: 2 SOL = 2,000,000,000 lamports)
  • --metadata: Metadata describing your operator (e.g., "My Operator Node")
  • --cluster: Network cluster (devnet, testnet, mainnet) [default: devnet]
  • --wallet: Path to wallet file [default: ~/.config/solana/id.json]

Example:

# Register operator with 5 SOL bond on devnet
ozon-cli initialize-operator \
  --bond-amount 5000000000 \
  --metadata "Acme Validator Services" \
  --cluster devnet

# Register on mainnet with custom wallet
ozon-cli initialize-operator \
  --bond-amount 10000000000 \
  --metadata "Production Operator" \
  --cluster mainnet \
  --wallet /path/to/mainnet-wallet.json

Output:

πŸ” Debug info:
  Program ID: 6UqcKJ3U7zfr5JkhzjDZQsunbJeFBxgCKYbuMw8Scv6B
  Operator key: 8xYz...AbCd
  Operator account PDA: 9pQw...XyZa
  Vault PDA: 7mNb...LmNo
  Bond amount: 5000000000
  Metadata: Acme Validator Services
βœ… Operator initialized with tx 3kL9...8fH2

2. De-register Operator

Remove your operator registration and reclaim your bonded SOL.

Syntax:

ozon-cli de-register-operator \
  [--cluster <CLUSTER>] \
  [--wallet <PATH>]

Parameters:

  • --cluster: Network cluster [default: devnet]
  • --wallet: Path to wallet file [default: ~/.config/solana/id.json]

Example:

# De-register operator on devnet
ozon-cli de-register-operator --cluster devnet

# De-register on mainnet with custom wallet
ozon-cli de-register-operator \
  --cluster mainnet \
  --wallet /path/to/mainnet-wallet.json

Output:

πŸ” Debug info:
  Program ID: 6UqcKJ3U7zfr5JkhzjDZQsunbJeFBxgCKYbuMw8Scv6B
  Operator key: 8xYz...AbCd
  Operator account PDA: 9pQw...XyZa
  Vault PDA: 7mNb...LmNo
βœ… Operator de-registered with tx 2jK8...9gI1

3. Register AVS

Register a new Actively Validated Service (AVS) with the protocol.

Syntax:

ozon-cli register-avs \
  --metadata <STRING> \
  --registration-fee <LAMPORTS> \
  [--cluster <CLUSTER>] \
  [--wallet <PATH>]

Parameters:

  • --metadata: Name/metadata for your AVS
  • --registration-fee: Registration fee in lamports (minimum: 3 SOL = 3,000,000,000 lamports)
  • --cluster: Network cluster [default: devnet]
  • --wallet: Path to wallet file [default: ~/.config/solana/id.json]

Example:

# Register AVS on devnet
ozon-cli register-avs \
  --metadata "Oracle Price Feeds" \
  --registration-fee 3000000000 \
  --cluster devnet

# Register on mainnet
ozon-cli register-avs \
  --metadata "Cross-Chain Bridge Service" \
  --registration-fee 5000000000 \
  --cluster mainnet \
  --wallet /path/to/mainnet-wallet.json

Output:

πŸ” Debug info:
  Program ID: 6UqcKJ3U7zfr5JkhzjDZQsunbJeFBxgCKYbuMw8Scv6B
  AVS owner: 8xYz...AbCd
  AVS account PDA: 4sWx...KlMn
  Treasury PDA: 6tRy...PqRs
  Registration fee: 3000000000
  Avs Name: Oracle Price Feeds
βœ… Avs registered with tx 5nM7...3pQ9

4. Update AVS Metadata

Update the metadata/name of your registered AVS.

Syntax:

ozon-cli update-avs-metadata \
  --metadata <STRING> \
  [--cluster <CLUSTER>] \
  [--wallet <PATH>]

Parameters:

  • --metadata: New name/metadata for your AVS
  • --cluster: Network cluster [default: devnet]
  • --wallet: Path to wallet file [default: ~/.config/solana/id.json]

Example:

# Update AVS metadata
ozon-cli update-avs-metadata \
  --metadata "Oracle Price Feeds v2.0" \
  --cluster devnet

# Update on mainnet
ozon-cli update-avs-metadata \
  --metadata "Enhanced Oracle Service" \
  --cluster mainnet \
  --wallet /path/to/mainnet-wallet.json

Output:

πŸ” Debug info:
  Program ID: 6UqcKJ3U7zfr5JkhzjDZQsunbJeFBxgCKYbuMw8Scv6B
  AVS owner: 8xYz...AbCd
  AVS account PDA: 4sWx...KlMn
  New Avs Name: Oracle Price Feeds v2.0
βœ… AVS metadata updated with tx 7oL6...4rH8

5. De-register AVS

Remove your AVS registration from the protocol.

Syntax:

ozon-cli de-register-avs \
  [--cluster <CLUSTER>] \
  [--wallet <PATH>]

Parameters:

  • --cluster: Network cluster [default: devnet]
  • --wallet: Path to wallet file [default: ~/.config/solana/id.json]

Example:

# De-register AVS on devnet
ozon-cli de-register-avs --cluster devnet

# De-register on mainnet(comming soon)
ozon-cli de-register-avs \
  --cluster mainnet \
  --wallet /path/to/mainnet-wallet.json

Output:

πŸ” Debug info:
  Program ID: 6UqcKJ3U7zfr5JkhzjDZQsunbJeFBxgCKYbuMw8Scv6B
  AVS owner: 8xYz...AbCd
  AVS account PDA: 4sWx...KlMn
βœ… AVS de-registered with tx 9kP4...2sG7

6. Opt Into AVS (Operator Registration)

Allow an operator to opt into an Actively Validated Service to start providing services.

Syntax:

ozon-cli opt-in-avs \
  --avs-owner <PUBKEY> \
  [--cluster <CLUSTER>] \
  [--wallet <PATH>] \
  [--interactive]

Parameters:

  • --avs-owner: The public key of the AVS owner you want to opt into
  • --cluster: Network cluster [default: devnet]
  • --wallet: Path to wallet file [default: ~/.config/solana/id.json]
  • --interactive: Launch the Ozon AVS Selection dashboard in your browser [optional]

Example:

# Opt into an AVS using the AVS owner's public key
ozon-cli opt-in-avs \
  --avs-owner 8xYzAbCdEfGh1234567890qwertyuiopasdfghjklzxc \
  --cluster devnet

# Use interactive mode to browse and select AVS from the dashboard
ozon-cli opt-in-avs --interactive

# Opt in on mainnet with custom wallet
ozon-cli opt-in-avs \
  --avs-owner 8xYzAbCdEfGh1234567890qwertyuiopasdfghjklzxc \
  --cluster mainnet \
  --wallet /path/to/mainnet-wallet.json

Output:

πŸ” Debug info:
  Operator: CLuH...btHN
  AVS Owner: 8xYz...zxc
  AVS Account: 4sWx...KlMn
  Registration PDA: 9pQw...XyZa
βœ… Opted into AVS with tx 7mN8...5kL2

7. Run Operator Daemon

Run a local operator daemon that polls for active tasks and submits results automatically.

Syntax:

ozon-cli run-operator \
  [--cluster <CLUSTER>] \
  [--wallet <PATH>] \
  [--poll-interval-seconds <SECONDS>]

Parameters:

  • --poll-interval-seconds: Poll interval in seconds [default: 10]

Example:

ozon-cli run-operator \
  --cluster devnet \
  --wallet ./operator1.json \
  --poll-interval-seconds 10

8. Create Task (AVS Owner)

Create a new task under your AVS.

Syntax:

ozon-cli create-task \
  --task-id <U64> \
  --submission-deadline-slots <U64> \
  --verification-threshold-bps <U64> \
  [--cluster <CLUSTER>] \
  [--wallet <PATH>]

Example:

ozon-cli create-task \
  --task-id 3 \
  --submission-deadline-slots 1200 \
  --verification-threshold-bps 200 \
  --cluster devnet \
  --wallet ~/.config/solana/avs-owner.json

9. Submit Task Result (Operator)

Submit a task result manually (the daemon usually handles this automatically).

Syntax:

ozon-cli submit-task-result \
  --task-pubkey <PUBKEY> \
  --submitted-price <I64_SCALED_1e8> \
  --confidence <U64> \
  --publish-time <I64_UNIX_S> \
  [--cluster <CLUSTER>] \
  [--wallet <PATH>]

10. Verify Task (AVS Owner)

Verify an operator's submission and slash if incorrect.

Syntax:

ozon-cli verify-task \
  --task-pubkey <PUBKEY> \
  --operator-owner <PUBKEY> \
  --actual-price <I64_SCALED_1e8> \
  [--cluster <CLUSTER>] \
  [--wallet <PATH>]

Notes:

  • --actual-price must be an integer i64 scaled to 8 decimals (e.g., 67321.12 β†’ 6732112000000000).

11. Close Task (AVS Owner)

Close a task after the submission window has passed.

Syntax:

ozon-cli close-task \
  --task-pubkey <PUBKEY> \
  [--cluster <CLUSTER>] \
  [--wallet <PATH>]

12. Get Task PDA (Helper)

Derive the task account PDA for a given task_id and avs_owner.

Syntax:

ozon-cli get-task-pda \
  --task-id <U64> \
  --avs-owner <PUBKEY>

Interactive Mode: When using --interactive, the command will open the Ozon AVS Selection dashboard in your default browser, where you can:

Browse available AVS services View AVS metadata and requirements Select an AVS to opt into Complete the opt-in process through a user-friendly interface

πŸ’‘ Common Workflows

Setting Up as an Operator

# 1. Check your balance
solana balance

# 2. Request airdrop if on devnet
solana airdrop 10

# 3. Register as operator
ozon-cli initialize-operator \
  --bond-amount 2000000000 \
  --metadata "My Operator Node" \
  --cluster devnet

# 4. Browse available AVS services interactively
ozon-cli opt-in-avs --interactive

# 5. Or opt into a specific AVS directly
ozon-cli opt-in-avs \
  --avs-owner 8xYzAbCdEfGh1234567890qwertyuiopasdfghjklzxc \
  --cluster devnet

# 6. Verify transaction on explorer
# Visit: https://explorer.solana.com/tx/<SIGNATURE>?cluster=devnet

Setting Up an AVS

# 1. Ensure you have enough SOL
solana balance

# 2. Register your AVS
ozon-cli register-avs \
  --metadata "My Validation Service" \
  --registration-fee 3000000000 \
  --cluster devnet

# 3. Update name later if needed
ozon-cli update-avs-metadata \
  --metadata "My Validation Service v2" \
  --cluster devnet

# 5. Share your AVS owner pubkey with operators
solana address

πŸ” Finding AVS to Opt Into

There are two methods to find and opt into an AVS:

Method 1: Interactive Dashboard (Recommended)

The easiest way to discover and opt into AVS services is through the interactive web dashboard:

# Launch the Ozon AVS Selection dashboard in your browser
ozon-cli opt-in-avs --interactive

What you'll see:

  • Browse all registered AVS services
  • View detailed service descriptions
  • Check AVS requirements and status
  • Select and opt-in with one click
  • Visual interface for easier navigation

Method 2: Get AVS Owner Pubkey Directly

If you already know which AVS you want to join, you can opt in directly using the AVS owner's public key:

Ways to obtain the AVS owner pubkey:

  1. Ask the AVS provider directly

    • Contact the AVS team through their official channels
    • They will provide their wallet public key
  2. Check the AVS registry on Solana Explorer

  3. Use the AVS provider's documentation

    • Check their official website or GitHub
    • Look for integration guides
    • Find published wallet addresses

Example:

# Once you have the AVS owner pubkey, opt in directly
ozon-cli opt-in-avs \
  --avs-owner 8xYzAbCdEfGh1234567890qwertyuiopasdfghjklzxc \
  --cluster devnet

πŸ‘₯ Managing Multiple Operators/AVS

You can run multiple operators and have them opt into different AVS services using separate wallets.

Setting Up Multiple Operators

# Create and fund separate wallets for each operator
solana-keygen new --outfile ~/operator1-wallet.json
solana-keygen new --outfile ~/operator2-wallet.json

# Fund each wallet (on devnet)
solana airdrop 10 ~/operator1-wallet.json --url devnet
solana airdrop 10 ~/operator2-wallet.json --url devnet

# Register first operator
ozon-cli initialize-operator \
  --bond-amount 5000000000 \
  --metadata "Operator Node 1 - Oracle Services" \
  --cluster devnet \
  --wallet ~/operator1-wallet.json

# Register second operator
ozon-cli initialize-operator \
  --bond-amount 5000000000 \
  --metadata "Operator Node 2 - Bridge Services" \
  --cluster devnet \
  --wallet ~/operator2-wallet.json

Opting Multiple Operators into Different AVS

# Operator 1 opts into Oracle AVS
ozon-cli opt-in-avs \
  --avs-owner 8xYzAbCdEfGh1234567890qwertyuiopasdfghjklzxc \
  --cluster devnet \
  --wallet ~/operator1-wallet.json

# Operator 2 opts into Bridge AVS
ozon-cli opt-in-avs \
  --avs-owner 9aWxBcDeFgHi2345678901zxcvbnmasdfghjklqwert \
  --cluster devnet \
  --wallet ~/operator2-wallet.json

# One operator can also opt into multiple AVS
ozon-cli opt-in-avs \
  --avs-owner <ANOTHER_AVS_OWNER_PUBKEY> \
  --cluster devnet \
  --wallet ~/operator1-wallet.json

Organizing Your Wallets

Best practices:

  • Use descriptive names for wallet files: oracle-operator.json, bridge-operator.json
  • Keep a spreadsheet tracking which operator is in which AVS
  • Store mainnet wallets separately and securely
  • Test all configurations on devnet first

Example directory structure:

~/solana-wallets/
β”œβ”€β”€ devnet/
β”‚   β”œβ”€β”€ operator-1-oracle.json
β”‚   β”œβ”€β”€ operator-2-bridge.json
β”‚   └── operator-3-backup.json
└── mainnet/
    β”œβ”€β”€ production-operator-1.json
    └── production-operator-2.json

πŸ“‹ Command Quick Reference

Command Purpose Minimum Requirement
initialize-operator Register as an operator 2 SOL bond
de-register-operator Unregister operator Must be registered
register-avs Register an AVS 3 SOL registration fee
update-avs-metadata Update AVS information Must own AVS
de-register-avs Unregister AVS Must own AVS
opt-in-avs Operator joins an AVS Must be registered operator
initialize-reward-treasury Setup reward system Protocol authority only
run-operator Run operator daemon to auto-submit tasks Registered operator
create-task Create a new task AVS owner
submit-task-result Manually submit result Operator opted into AVS
verify-task Verify submission and slash if wrong AVS owner
close-task Close an expired task AVS owner
get-task-pda Derive task PDA None

πŸ”„ State Transitions

Operator Lifecycle

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Start  β”‚
β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
     β”‚
     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Initialize Operator β”‚ ◄── Bond 2+ SOL
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚
           β–Ό
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚Active Operatorβ”‚
     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
      β”‚Opt Into AVS β”‚ ◄── Join one or more services
      β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
             β”‚
             β–Ό
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚Providing Servicesβ”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚
              β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ De-register Operator β”‚ ◄── Reclaim bond
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
               β–Ό
           β”Œβ”€β”€β”€β”€β”€β”
           β”‚ End β”‚
           β””β”€β”€β”€β”€β”€β”˜

AVS Lifecycle

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Start  β”‚
β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
     β”‚
     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚Initialize Treasury  β”‚ ◄── Protocol setup (once)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚
           β–Ό
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚Register AVS β”‚ ◄── Pay 3+ SOL fee
     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚Active AVSβ”‚
       β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚Update Metadataβ”‚ ◄── Optional updates
     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚Accept Operatorsβ”‚ ◄── Operators opt in
     β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
             β–Ό
      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
      β”‚De-register AVSβ”‚ ◄── Close service
      β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
             β–Ό
         β”Œβ”€β”€β”€β”€β”€β”
         β”‚ End β”‚
         β””β”€β”€β”€β”€β”€β”˜

πŸ’Ό Real-World Scenarios

Scenario 1: Single Operator, Multiple AVS

Use case: You run one operator node that provides multiple services.

# 1. Initialize your operator once
ozon-cli initialize-operator \
  --bond-amount 5000000000 \
  --metadata "Multi-Service Operator Node" \
  --cluster devnet

# 2. Opt into multiple AVS services
ozon-cli opt-in-avs --avs-owner <ORACLE_AVS_OWNER>
ozon-cli opt-in-avs --avs-owner <BRIDGE_AVS_OWNER>
ozon-cli opt-in-avs --avs-owner <DATA_AVS_OWNER>

Scenario 2: Multiple Operators, Specialized Services

Use case: You run separate operators for different service types.

# Oracle-specialized operator
ozon-cli initialize-operator \
  --bond-amount 10000000000 \
  --metadata "Oracle Specialist Node" \
  --wallet ~/oracle-operator.json

ozon-cli opt-in-avs \
  --avs-owner <ORACLE_AVS_OWNER> \
  --wallet ~/oracle-operator.json

# Bridge-specialized operator
ozon-cli initialize-operator \
  --bond-amount 10000000000 \
  --metadata "Bridge Specialist Node" \
  --wallet ~/bridge-operator.json

ozon-cli opt-in-avs \
  --avs-owner <BRIDGE_AVS_OWNER> \
  --wallet ~/bridge-operator.json

Scenario 3: Testing Before Production

Use case: Test your setup on devnet before going live on mainnet.

# Test on devnet first
ozon-cli initialize-operator \
  --bond-amount 2000000000 \
  --metadata "Test Operator" \
  --cluster devnet \
  --wallet ~/test-wallet.json

# Once confident, deploy to mainnet
ozon-cli initialize-operator \
  --bond-amount 20000000000 \
  --metadata "Production Operator" \
  --cluster mainnet \
  --wallet ~/prod-wallet.json

Switching Between Clusters

# Development/Testing on devnet
ozon-cli initialize-operator \
  --bond-amount 2000000000 \
  --metadata "Test Operator" \
  --cluster devnet

# Production on mainnet
ozon-cli initialize-operator \
  --bond-amount 10000000000 \
  --metadata "Production Operator" \
  --cluster mainnet \
  --wallet /secure/mainnet-wallet.json

πŸ” Security Best Practices

  1. Protect Your Wallet: Never share your private key file
  2. Test on Devnet First: Always test operations on devnet before mainnet
  3. Use Hardware Wallets: Consider using Ledger for mainnet operations
  4. Backup Your Keys: Store wallet backups in secure locations
  5. Verify Transactions: Always check transaction signatures on Solana Explorer

πŸ› Troubleshooting

Issue: "Command not found"

# Ensure cargo bin is in your PATH
export PATH="$HOME/.cargo/bin:$PATH"

# Add to your shell profile (~/.bashrc, ~/.zshrc)
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.zshrc

Issue: "Insufficient funds"

# Check your balance
solana balance

# On devnet, request airdrop
solana airdrop 5

# On mainnet, ensure you have enough SOL

Issue: "Invalid cluster"

Supported clusters are:

  • devnet (default)

  • testnet

  • mainnet or mainnet-beta (coming soon)

Issue: "Unauthorized action"

Ensure you're using the correct wallet that owns the operator/AVS you're trying to modify.


πŸ“Š Transaction Verification

After each command, you'll receive a transaction signature. Verify it on Solana Explorer:

Devnet:

https://explorer.solana.com/tx/<SIGNATURE>?cluster=devnet

Mainnet:

https://explorer.solana.com/tx/<SIGNATURE>

Bonus - you can monitor your operator slashed info by running ozon-inbuilt slashboard.

Syntax:

ozon-cli run-nodes-client --cluster <CLUSTER> --operator-owner <PUBKEY> --debug

πŸ”— Program Information

  • Program ID: 6UqcKJ3U7zfr5JkhzjDZQsunbJeFBxgCKYbuMw8Scv6B
  • Network: Solana (devnet, testnet, mainnet)
  • Repository: [we will share this once we make our repo public]

πŸ“š Resources

πŸ“„ License

This project is licensed under the Apache-2.0 License - see the LICENSE file for details.


πŸ’¬ Support


πŸŽ‰ Acknowledgments

Built with:


Made with ❀️ by the Ozon Team

Commit count: 0

cargo fmt