Skip to content

PYRAX-LLC/pyrax-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

inferno — PYRAX Blockchain CLI

The official command-line interface for the PYRAX blockchain
Manage wallets, deploy smart contracts, operate nodes, and interact with the PYRAX network — all from your terminal.


Table of Contents


Overview

inferno is the unified CLI for the PYRAX blockchain. It covers the full developer and operator lifecycle:

  • Wallet operations — create, import, send, and derive HD wallets
  • Node management — init, start, stop, reset, and monitor a pyrax-node process
  • Smart contracts — scaffold, compile (EVM & WASM), deploy, call, and inspect contracts
  • Staking & governance — delegate, unbond, vote on proposals, execute governance actions
  • ZK-Rollup (L2) — query batches, proofs, balances, deposits, and withdrawals
  • Multi-sig — create and manage M-of-N multisig accounts locally
  • Genesis — generate genesis blocks for new networks

Installation

Pre-built Binary

Download the latest release for your platform from the releases page and place the binary somewhere on your PATH.

# Linux / macOS
chmod +x inferno
sudo mv inferno /usr/local/bin/

# Windows — copy inferno.exe to a directory in %PATH%

Build from Source

Requirements: Rust 1.75+ (stable), Git

git clone https://github.com/PYRAX-LLC/pyrax-cli.git
cd pyrax-cli
cargo build --release
# Binary is at target/release/inferno  (inferno.exe on Windows)

First-Time Setup

Run these two commands after installing inferno:

# 1. Create the config file and data directories
inferno init

# 2. Pre-download compilers (solc for EVM, wasm32 target for WASM)
inferno setup

inferno setup downloads the Solidity compiler and installs the wasm32-unknown-unknown Rust target so that inferno contract compile works instantly without any extra dependencies. You only need to run it once.

inferno setup --solc 0.8.28,0.8.25   # install multiple solc versions at once
inferno setup --skip-wasm            # only install solc
inferno setup --skip-solc            # only install the wasm32 target

Data stored by inferno:

~/.pyrax/
  config.toml        — main configuration file
  wallets/           — AES-256-GCM encrypted wallet keystores
  multisig/          — local multisig account configs
  solc/<version>/    — cached Solidity compiler binaries
  node/              — node data directory (if running a node locally)

Global Flags

These flags work with every command:

Flag Environment variable Default Description
--rpc-url <URL> INFERNO_RPC_URL from config.toml JSON-RPC endpoint
--network <NAME> INFERNO_NETWORK from config.toml Network (devnet / testnet / mainnet)
--output <fmt> table Output format — table, json, or plain
--no-color false Disable ANSI colour output
--verbose false Print raw RPC requests and response timings

CLI flags take highest precedence, overriding environment variables and config.toml.


Commands


init

Create the config file and all data directories. Safe to re-run.

inferno init
inferno init --force   # overwrite existing config with defaults

setup

Pre-install compilers and build tools in one command. Run once after inferno init.

inferno setup                          # solc 0.8.28 + wasm32-unknown-unknown
inferno setup --solc 0.8.28,0.8.25    # install multiple solc versions
inferno setup --skip-solc              # wasm32 target only
inferno setup --skip-wasm             # solc only
Component Location Required for
solc binary ~/.pyrax/solc/<version>/solc[.exe] inferno contract compile --vm evm
wasm32-unknown-unknown target Rust toolchain via rustup inferno contract compile --vm wasm

If you skip inferno setup, these components are downloaded automatically on first use.


info

Print CLI version, build commit, Rust version, and active network configuration.

inferno info

update

Self-update inferno to the latest release from GitHub.

inferno update           # download and replace the current binary
inferno update --check   # print the latest available version, do not install

config

Read and write the CLI configuration at ~/.pyrax/config.toml.

inferno config show                               # print all config values
inferno config get rpc_url                        # print a single value
inferno config set rpc_url http://127.0.0.1:8545  # update a value
inferno config set network devnet
inferno config set active_wallet my-wallet

# Generate a shell tab-completion script
inferno config generate-shell-completions bash   >> ~/.bashrc
inferno config generate-shell-completions zsh    >> ~/.zshrc
inferno config generate-shell-completions fish   >> ~/.config/fish/completions/inferno.fish

key

Low-level cryptographic key utilities.

# Generate a new Ed25519 keypair and print the key material
inferno key generate
inferno key generate --output-file ./node-identity.json

# Extract the P2P peer ID from a node identity key file
inferno key extract-peer --key-file ./node-identity.json

# Sign arbitrary hex-encoded data with a wallet's private key
inferno key sign --message 0xdeadbeef00 --wallet my-wallet

# Verify a message signature
inferno key verify \
  --message   0xdeadbeef00 \
  --signature 0xabc123... \
  --pubkey    0xpub456...

wallet

Create and manage wallets. All private keys are stored encrypted with AES-256-GCM under ~/.pyrax/wallets/.

# Create a new wallet — generates a fresh BIP-39 mnemonic
inferno wallet create
inferno wallet create --name trading --network mainnet

# Import from an existing BIP-39 mnemonic
# The mnemonic is prompted securely; never pass it as a plain-text argument
inferno wallet import
inferno wallet import --name cold-storage

# List all saved wallets
inferno wallet list

# Show balance for a wallet or a specific address
inferno wallet balance --wallet my-wallet
inferno wallet balance --address 0x1234abcd...

# Show UTXOs
inferno wallet utxos --wallet my-wallet

# Send PRX
inferno wallet send --to 0xrecipient... --amount 10.5 --wallet my-wallet
inferno wallet send --to 0xrecipient... --amount 10.5 --memo "rent" --wallet my-wallet
inferno wallet send --to 0xrecipient... --amount 10.5 --dry-run  # sign but do not broadcast

# Derive multiple HD addresses from a mnemonic
inferno wallet derive --count 10

account

Account-level operations that interact with the network.

# Request devnet/testnet tokens from the faucet
inferno account fund --address 0x1234... --amount 1000

# Look up all on-chain info for an address (balance, nonce, type, code hash)
inferno account lookup 0x1234...

# Rotate the on-chain signing key for a wallet
inferno account rotate-key --wallet my-wallet

node

Full lifecycle management for a local pyrax-node process, plus RPC queries and validator operations.

Process management

# Generate node config and P2P identity keypair
inferno node init
inferno node init --network devnet --data-dir ~/.pyrax/node --rpc-port 8545 --p2p-port 30303

# Start the node as a background process
inferno node start
inferno node start --mine --coinbase 0xmyaddress... --threads 4

# Run in the foreground (useful with systemd or Docker)
inferno node start --foreground

# Stop / restart
inferno node stop
inferno node restart
inferno node restart --mine --coinbase 0xmyaddress...

# View recent log output
inferno node logs
inferno node logs --lines 200
inferno node logs -f     # follow (like tail -f)

# Wipe all chain data (config and node identity key are preserved)
inferno node reset --confirm

# Start an all-in-one local devnet (single validator)
inferno node run-localnet
inferno node run-localnet --rpc-port 8545 --with-faucet

# Bootstrap chain state from a remote snapshot
inferno node bootstrap-db --url https://snapshots.pyrax.org/devnet-latest.tar.gz

RPC queries

inferno node status                              # block height, version, chain ID
inferno node health                              # node liveness check
inferno node sync                                # sync progress and estimated ETA
inferno node peers                               # connected peer list
inferno node check-connectivity                  # test P2P reachability
inferno node show-epoch-info                     # current epoch and checkpoint
inferno node show-validator-set                  # all registered validators
inferno node show-validator-set --active-only    # active validators only
inferno node show-validator-config  0xval...
inferno node show-validator-stake   0xval...
inferno node get-stake-pool         0xval...
inferno node get-performance        0xval...
inferno node analyze-validator-performance --sort uptime
inferno node analyze-validator-performance --active-only --sort stake

Validator lifecycle

# Register as a new validator
inferno node initialize-validator \
  --moniker "my-node" --commission 5 --stake 100000 --wallet validator-wallet

# Join / leave the active set
inferno node join-validator-set  --wallet validator-wallet
inferno node leave-validator-set --wallet validator-wallet

# Rotate consensus key
inferno node update-consensus-key \
  --new-key 0xnewpub... --wallet validator-wallet

# Update P2P network addresses
inferno node update-validator-network-addresses \
  --p2p-addr /ip4/1.2.3.4/tcp/30303 --wallet validator-wallet

stake

Delegate, unbond, and withdraw staked PRX.

# Read — no wallet required
inferno stake status      0xaddress...    # your staking position
inferno stake rewards     0xaddress...    # pending rewards and estimated APR
inferno stake delegations 0xaddress...    # list of active delegations
inferno stake unbonding   0xaddress...    # tokens in the unbonding queue
inferno stake state                       # global stats: total staked, network APR

# Write — require --wallet
inferno stake delegate --to 0xvalidator... --amount 1000 --wallet my-wallet
inferno stake unbond   --from 0xvalidator... --amount 500  --wallet my-wallet
inferno stake withdraw --from 0xvalidator... --wallet my-wallet

governance

Submit proposals, vote, execute, and delegate governance power.

# Browse proposals
inferno governance list-proposals
inferno governance list-proposals --status active   # active | passed | rejected | pending
inferno governance show-proposal 42

# Submit a new proposal
inferno governance propose \
  --type parameter_change \
  --title "Increase block gas limit" \
  --description "Raise the per-block gas limit from 30M to 50M to support larger contracts." \
  --wallet my-wallet

# Vote on a proposal
# vote values: yes | no | abstain | veto
# conviction multipliers: x1 (default) | x2 | x3 | x4 | x5 | x6
inferno governance vote --proposal 42 --vote yes --wallet my-wallet
inferno governance vote --proposal 42 --vote yes --conviction x2 --wallet my-wallet

# Execute a passed proposal
inferno governance execute --proposal 42 --wallet my-wallet

# Delegate voting power to another address
inferno governance delegate \
  --to 0xdelegate... --amount 500 --conviction x1 --wallet my-wallet

contract

Smart contract development from scaffold to deployment.

Create a new project

inferno contract new --name mytoken           # EVM project (default)
inferno contract new --name mytoken --vm evm  # explicit EVM
inferno contract new --name mymodule --vm wasm

Generated EVM project layout:

mytoken/
  contracts/
    Mytoken.sol     — sample ERC-20 contract
  test/
    Mytoken.t.sol   — sample Foundry test
  foundry.toml      — compiler config (solc version, optimizer)
  README.md

Generated WASM project layout:

mymodule/
  src/
    lib.rs          — sample contract entry point
  Cargo.toml
  README.md

Compile

# Auto-detect VM from project structure
inferno contract compile

# EVM — downloads solc on first use if not already cached
inferno contract compile --vm evm
inferno contract compile --vm evm --input contracts/ --out-dir artifacts/

# WASM — auto-installs wasm32-unknown-unknown target via rustup if needed
inferno contract compile --vm wasm

The Solidity compiler version is read from foundry.toml (solc = "0.8.28"). If no foundry.toml is present, version 0.8.28 is used. The binary is cached at ~/.pyrax/solc/<version>/ — no system solc install is required.

Test, inspect, deploy, and call

# Run unit tests
inferno contract test
inferno contract test --vm wasm

# Decode an ABI file and print human-readable function + event signatures
# with their 4-byte selectors
inferno contract abi --file artifacts/MyToken.abi

# Deploy a compiled contract
inferno contract deploy \
  --bytecode "$(cat artifacts/MyToken.bin)" \
  --wallet my-wallet --gas-limit 500000

# Call a state-changing function
inferno contract call \
  --address 0xdeployed... \
  --fn "transfer(address,uint256)" \
  --args 0xrecipient... 1000 \
  --wallet my-wallet

# Call a read-only (view/pure) function — no wallet or gas needed
inferno contract view \
  --address 0xdeployed... \
  --fn "balanceOf(address)" \
  --args 0xquery...

# Look up the VM type of any deployed contract
inferno contract type 0xdeployed...

# List on-chain contract counts by VM type
inferno contract list

genesis

Generate genesis block configuration for bootstrapping a new network.

inferno genesis generate
inferno genesis generate --network devnet --validators 4

block

Query block data from the chain.

inferno block get --number 12345
inferno block get --hash 0xabcdef...
inferno block list              # 10 most recent blocks
inferno block list --count 50

tx

Query, simulate, and analyze transactions.

# Fetch a transaction by hash
inferno tx get --txid 0xabcdef...

# Show pending mempool transactions
inferno tx pending

# Dry-run a transaction via eth_call (no state changes)
inferno tx simulate \
  --from 0xsender... \
  --to   0xcontract... \
  --data 0xabcdef... \
  --value 0

# Estimate the gas cost of a transaction
inferno tx estimate-gas \
  --from 0xsender... \
  --to   0xcontract... \
  --data 0xabcdef...

address

On-chain address information.

inferno address info 0x1234abcd...
# Prints: balance, nonce, account type (EOA / EVM contract / WASM contract), code hash

mining

Mining statistics across all TriStream DAG streams.

inferno mining info
# Prints: current hashrate, difficulty, block time, and per-stream stats

stream

TriStream DAG layer information.

inferno stream info <stream-id>

rollup

ZK-Rollup (Layer 2) queries and submissions.

# Sequencer status
inferno rollup status

# Batch queries
inferno rollup batch --number 100
inferno rollup batch --hash 0xabc...

# Transaction queries
inferno rollup tx      --txid 0xabc...
inferno rollup receipt --txid 0xabc...

# ZK proofs
inferno rollup prove  --batch 100         # fetch the STARK proof for a batch
inferno rollup verify --proof 0xproof...  # verify a STARK proof locally

# L2 balance
inferno rollup balance --address 0x1234...

# Bridge status
inferno rollup deposit-status    --hash 0xdeposit...
inferno rollup withdrawal-status --hash 0xwithdrawal...

# Submit a raw L2 transaction to the sequencer
inferno rollup submit --data 0xrawtx... --wallet my-wallet

multisig

Local M-of-N multi-signature account management. Configs are stored as JSON files under ~/.pyrax/multisig/ — no network required for create, show, and list.

# Create a 2-of-3 multisig config
inferno multisig create \
  --owners "0xalice...,0xbob...,0xcharlie..." \
  --threshold 2 \
  --name team-treasury

# List all saved multisig configs
inferno multisig list

# Inspect a config
inferno multisig show --name team-treasury

# Propose a multisig transaction (requires node multisig RPC)
inferno multisig propose \
  --multisig team-treasury \
  --to 0xrecipient... \
  --amount 500 \
  --wallet my-wallet

# Approve or reject a pending proposal
inferno multisig vote \
  --multisig team-treasury \
  --proposal-id abc123 \
  --approve true \
  --wallet my-wallet

# Execute an approved proposal
inferno multisig execute \
  --multisig team-treasury \
  --proposal-id abc123 \
  --wallet my-wallet

Environment Variables

Variable Description
INFERNO_RPC_URL JSON-RPC endpoint — overrides rpc_url in config.toml
INFERNO_NETWORK Active network — overrides network in config.toml

Output Formats

Every command supports three output formats via --output:

inferno wallet list --output table   # default — formatted ASCII table
inferno wallet list --output json    # machine-readable JSON (pipe into jq)
inferno wallet list --output plain   # whitespace-separated, suitable for awk/grep

Configuration File

~/.pyrax/config.toml is created by inferno init. Example:

network       = "devnet"
rpc_url       = "http://127.0.0.1:8545"
active_wallet = "my-wallet"

Precedence order (highest to lowest):

CLI flag  >  Environment variable  >  config.toml  >  built-in default

Examples

Start a local devnet and make a transfer

inferno init
inferno setup
inferno node run-localnet --with-faucet
inferno wallet create --name dev
inferno account fund --wallet dev --amount 10000
inferno wallet send --to 0xrecipient... --amount 100 --wallet dev

Deploy and interact with an EVM contract

inferno contract new --name mytoken --vm evm
cd mytoken

inferno contract compile --vm evm

inferno contract deploy \
  --bytecode "$(cat out/Mytoken.bin)" \
  --wallet dev

inferno contract call \
  --address 0xdeployed... \
  --fn "mint(address,uint256)" \
  --args 0xdev... 1000000 \
  --wallet dev

inferno contract view \
  --address 0xdeployed... \
  --fn "totalSupply()"

Run and register a validator

inferno node init --network mainnet --data-dir ~/.pyrax/node
inferno node initialize-validator \
  --moniker "my-validator" \
  --commission 5 \
  --stake 100000 \
  --wallet validator-wallet
inferno node start --mine --coinbase 0xmyaddress...
inferno node join-validator-set --wallet validator-wallet
inferno node show-validator-set --active-only

Contributing

  1. Fork the repository and create a feature branch off devnet
  2. Make your changes and run cargo test — all tests must pass
  3. Open a pull request against devnet

License

MIT — see LICENSE.

About

⚡ PYRAX CLI - Command-line tools for wallet management, node interaction, and blockchain queries

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors