npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@skalenetwork/cli

v0.1.11

Published

SKALE Network CLI Tool for developers, chain operators, and agents

Downloads

270

Readme

@skalenetwork/cli

npm version License: MIT

A command-line interface for interacting with the SKALE Network. Read contract data from SKALE chains and Ethereum mainnet.

Built for AI Agents — This CLI is designed to be used by AI agents and automation tools via MCP (Model Context Protocol) and standard CLI interfaces.

Installation

Global Install

# npm
npm install -g @skalenetwork/cli

# bun
bun install -g @skalenetwork/cli

One-time Usage (no install)

# Using npx
npx @skalenetwork/cli <command>

# Using bunx
bunx @skalenetwork/cli <command>

AI Agents

This CLI is optimized for AI agents and automated workflows:

  • Structured JSON output — All commands support JSON output for easy parsing
  • MCP compatible — Works with Model Context Protocol and agent frameworks
  • Deterministic responses — Consistent output format for reliable automation
  • No interactive prompts — All inputs via flags and arguments

Example: Agent Usage

# List chains as JSON for agent parsing
skale chains list --format json

# Read contract data
skale read --chain skale-base --address 0x... --abi ./abi.json --method balanceOf --args 0x...

Quick Start

# List available SKALE chains
skale chains list

# Read contract data
skale read configController version --chain skale-base

# Check gas prices
skale gas price --chain skale-base

# View address on explorer
skale explorer address 0x... --chain skale-base

Global Options

These options work with any command:

| Option | Description | |--------|-------------| | --help, -h | Show help for the command | | --version, -v | Show CLI version |

Command Reference

chains — Chain Management

Aggregate portfolio, compare balances, and list supported chains.

chains portfolio <address>

Aggregate token balances across multiple chains.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Wallet address (0x...) |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --token | string | No | Token contract address for ERC20 balance | | --chains | string | No | Comma-separated chain names (e.g., 'skale-base,titan,mainnet') | | --value-in | enum | No | Display values in: USD, EUR, ETH |

Output:

{
  "address": "0x...",
  "token": "0x...",
  "value-in": "USD",
  "chains": [
    {
      "chain": "skale-base",
      "chainName": "SKALE Base",
      "type": "skale",
      "status": "online",
      "balance": "1000000000000000000",
      "formatted": "1.0",
      "token": {
        "symbol": "SKL",
        "decimals": 18
      },
      "explorerUrl": "https://explorer.skale-base.skale.network/address/0x..."
    }
  ],
  "summary": {
    "totalChains": 5,
    "onlineChains": 4,
    "offlineChains": 1,
    "totalBalance": "5000000000000000000",
    "totalFormatted": "5.0"
  }
}

Examples:

skale chains portfolio 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B
skale chains portfolio 0x... --chains skale-base,titan
skale chains portfolio 0x... --token 0x... --value-in USD

chains compare <address>

Compare address balance across chains.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Wallet address (0x...) |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chains | string | No | Comma-separated chain names | | --format | enum | No | Output format: text, table, json (default: json) |

Output (JSON format):

{
  "address": "0x...",
  "format": "json",
  "chains": [
    {
      "chain": "skale-base",
      "chainName": "SKALE Base",
      "type": "skale",
      "status": "online",
      "ethBalance": "1000000000000000000",
      "ethBalanceFormatted": "1.0",
      "tokenCount": 0,
      "blockNumber": "12345678"
    }
  ],
  "summary": {
    "totalChains": 5,
    "onlineChains": 4,
    "offlineChains": 1
  }
}

Output (text format):

{
  "text": "Address: 0x...\n\n● SKALE Base (skale-base): 1.0 ETH\n○ ...\n\nOnline: 4/5 chains"
}

Examples:

skale chains compare 0x... --chains skale-base,titan,mainnet
skale chains compare 0x... --format table

chains list

List all supported chains with current status.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --network | enum | No | Filter by: skale, ethereum, all (default: all) | | --status | boolean | No | Show RPC connection status |

Output (without --status):

{
  "network": null,
  "chains": [
    {
      "name": "SKALE Base",
      "key": "skale-base",
      "type": "skale"
    }
  ]
}

Output (with --status):

{
  "network": null,
  "chains": [
    {
      "name": "SKALE Base",
      "key": "skale-base",
      "type": "skale",
      "rpcOnline": true,
      "blockNumber": "12345678",
      "error": null
    }
  ]
}

Examples:

skale chains list
skale chains list --network skale
skale chains list --status

read — Contract Reading

Call read-only contract methods on SKALE or Ethereum.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | contractName | string | Yes | Contract name (see valid options below) | | method | string | Yes | Method name to call | | params | array | No | Method parameters (space-separated) |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Conditional | SKALE chain name (required if not using --network) | | --network | enum | Conditional | Ethereum network: mainnet, sepolia (required if not using --chain) |

Valid Contracts:

  • SKALE chains: configController, messageProxyForSchain, tokenManagerERC20
  • Ethereum: messageProxy, sklToken

Output:

{
  "contract": "<contract-instance>",
  "address": "0x...",
  "method": "version",
  "result": "1.0.0"
}

Examples:

# SKALE chain
skale read configController version --chain skale-base
skale read configController isAddressWhitelisted 0x... --chain skale-base
skale read sklToken totalSupply --network mainnet
skale read sklToken balanceOf 0x... --network mainnet

token — SKL Token

SKL token information and balance queries.

token info

Get SKL token information.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --network | enum | No | Ethereum network: mainnet (default: mainnet) |

Output:

{
  "name": "SKALE",
  "symbol": "SKL",
  "decimals": 18,
  "totalSupply": "1000000000000000000000000000",
  "address": "0x00c83aeCC790e8a4453e5dD3B0B4b3680501a7A7",
  "network": "mainnet",
  "networkName": "Ethereum Mainnet"
}

token balance <address>

Get SKL token balance for an address.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Ethereum address |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --network | enum | No | Ethereum network: mainnet (default: mainnet) |

Output:

{
  "address": "0x...",
  "balance": "1000000000000000000",
  "formatted": "1.0",
  "decimals": 18,
  "network": "mainnet",
  "networkName": "Ethereum Mainnet"
}

Examples:

skale token balance 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B

access — Access Control

Check whitelist status and access control.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Ethereum address to check |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name |

Output:

{
  "address": "0x...",
  "chain": "skale-base",
  "chainName": "SKALE Base",
  "whitelisted": true
}

Examples:

skale access 0x... --chain skale-base

ima — IMA Bridge

Interchain Messaging Agent (IMA) bridge operations.

ima chain-id

Get chain ID from MessageProxy contract.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Conditional | SKALE chain name | | --network | enum | Conditional | Ethereum network: mainnet, sepolia |

Output (SKALE chain):

{
  "schainHash": "0x...",
  "target": "skale-base",
  "targetName": "SKALE Base",
  "contractAddress": "0x..."
}

Output (Ethereum network):

{
  "target": "mainnet",
  "targetName": "Ethereum Mainnet",
  "contractAddress": "0x...",
  "note": "Mainnet MessageProxy does not have a schainHash function"
}

ima connected-chains

Check if a chain is connected to MessageProxy.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Conditional | SKALE chain name (source) | | --network | enum | Conditional | Ethereum network (source) | | --check-chain | string | No | Chain name to check connectivity to |

Output:

{
  "source": "skale-base",
  "sourceName": "SKALE Base",
  "target": "mainnet",
  "isConnected": true,
  "contractAddress": "0x..."
}

ima deposit

Get deposit information for ERC20 tokens.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name | | --network | enum | Yes | Ethereum network: mainnet, sepolia | | --token | string | Yes | Token address on Ethereum (0x...) |

Output:

{
  "token": "0x...",
  "tokenName": "SKALE",
  "tokenSymbol": "SKL",
  "tokenDecimals": 18,
  "chain": "SKALE Base",
  "chainId": "skale-base",
  "network": "Ethereum Mainnet",
  "networkId": "mainnet",
  "automaticDeposit": true,
  "tokenManagerAddress": "0xD2aAA005...",
  "messageProxyAddress": "0xd2AAa001..."
}

ima withdraw

Get withdraw information for ERC20 tokens.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name | | --token | string | Yes | Token address on SKALE chain (0x...) |

Output:

{
  "token": "0x...",
  "tokenName": "SKALE",
  "tokenSymbol": "SKL",
  "tokenDecimals": 18,
  "chain": "SKALE Base",
  "chainId": "skale-base",
  "tokenManagerAddress": "0xD2aAA005...",
  "messageProxyAddress": "0xd2AAa001..."
}

ima monitor-deposits

Monitor deposit events from Ethereum to SKALE.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name | | --network | enum | Yes | Ethereum network |

Output:

{
  "message": "Feature coming soon",
  "feature": "monitor-deposits",
  "description": "This will monitor deposit events from Ethereum to SKALE",
  "parameters": {
    "chain": "skale-base",
    "network": "mainnet"
  }
}

ima monitor-withdrawals

Monitor withdrawal events from SKALE to Ethereum.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name |

Output:

{
  "message": "Feature coming soon",
  "feature": "monitor-withdrawals",
  "description": "This will monitor withdrawal events from SKALE to Ethereum",
  "parameters": {
    "chain": "skale-base"
  }
}

manager — SKALE Manager

SKALE Manager contract interactions.

manager version

Get ConfigController version.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name |

Output:

{
  "version": "1.0.0",
  "chain": "skale-base",
  "chainName": "SKALE Base",
  "contractAddress": "0x..."
}

manager mtm-status

Check if Multi-Transaction Mode is enabled.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name |

Output:

{
  "mtmEnabled": true,
  "chain": "skale-base",
  "chainName": "SKALE Base"
}

manager fcd-status

Check if Free Contract Deployment is enabled.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name |

Output:

{
  "fcdEnabled": true,
  "chain": "skale-base",
  "chainName": "SKALE Base"
}

bite — BITE Encryption

Blockchain Integrated Threshold Encryption (BITE) commands. BITE is currently available on skale-base, skale-base-sepolia, and skale-bite-sandbox chains.

bite encrypt-tx

Encrypt a transaction using BITE.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name | | --to | string | Yes | Recipient address (0x...) | | --data | string | No | Transaction data as hex string (0x...) | | --value | string | No | ETH value in wei |

Output:

{
  "originalTransaction": {
    "to": "0x...",
    "data": "0x...",
    "value": "0"
  },
  "encryptedTransaction": {
    "to": "0x42495445204d452049274d20454e435259505444",
    "data": "0x...",
    "gasLimit": "0x493e0"
  }
}

bite decrypt-tx

Decrypt transaction data from a tx hash.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name | | --txhash | string | Yes | Transaction hash (0x...) |

Output:

{
  "transactionHash": "0x...",
  "decryptedData": "0x..."
}

bite encrypt-msg

Encrypt a message using BITE.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name | | --message | string | Yes | Message to encrypt |

Output:

{
  "originalMessage": "Hello World",
  "hexMessage": "0x48656c6c6f20576f726c64",
  "encryptedMessage": "0x..."
}

bite decrypt-msg

Decrypt a BITE encrypted message.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name | | --ciphertext | string | Yes | Encrypted message (0x...) |

Output:

{
  "code": "NOT_IMPLEMENTED",
  "message": "Direct message decryption is not supported by BITE protocol. Use decrypt-tx with a transaction hash instead."
}

bite info

Get BITE protocol info for a chain.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Yes | SKALE chain name |

Output:

{
  "biteSupported": true,
  "biteEnabled": true,
  "committeeInfo": [
    {
      "epochId": 1,
      "blsPublicKey": "0x..."
    }
  ],
  "blsPublicKey": "0x...",
  "epochId": 1
}

txprep — Transaction Preparation

Prepare and encode transaction data.

txprep encode <method> <params>

Generate calldata for contract method calls.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | method | string | Yes | Method signature like 'transfer(address,uint256)' | | params | string | Yes | Comma-separated parameters |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --abi | string | No | Path to ABI file or contract name |

Output:

{
  "method": "transfer(address,uint256)",
  "parameters": ["0x...", "100"],
  "types": ["address", "uint256"],
  "selector": "0xa9059cbb",
  "calldata": "0xa9059cbb..."
}

Examples:

skale txprep encode 'transfer(address,uint256)' '0x...,100'

txprep selector <method>

Get function selector for a method signature.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | method | string | Yes | Method signature |

Output:

{
  "method": "transfer(address,uint256)",
  "selector": "0xa9059cbb",
  "fullKeccak256": "0xa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b"
}

txprep encode-param <type> <value>

Encode parameters for smart contract calls.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | type | string | Yes | Solidity type (address, uint256, bytes32, string, bool, etc.) | | value | string | Yes | Value to encode |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --array | boolean | No | Treat value as array (comma-separated) | | --dynamic | boolean | No | Mark as dynamic type |

Output:

{
  "type": "uint256",
  "value": "100",
  "dynamic": false,
  "encoded": "0x..."
}

Examples:

skale txprep encode-param address 0x...
skale txprep encode-param uint256 1000
skale txprep encode-param string 'hello world'
skale txprep encode-param address '0x...,0x...' --array

txprep build-tx <to> <value>

Build unsigned transaction object.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | to | string | Yes | Recipient address | | value | string | Yes | Amount in wei (or ETH with --eth flag) |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | No | SKALE chain name | | --network | enum | No | Ethereum network: mainnet, sepolia | | --data | string | No | Hex string data | | --gas-limit | number | No | Gas limit | | --nonce | number | No | Transaction nonce | | --eth | boolean | No | Treat value as ETH instead of wei (default: false) | | --max-fee | string | No | Max fee in wei | | --max-priority-fee | string | No | Max priority fee in wei |

Output:

{
  "transaction": {
    "to": "0x...",
    "value": "1000000000000000000",
    "data": "0x",
    "chainId": 1,
    "gas": "21000",
    "nonce": 0,
    "maxFeePerGas": "20000000000",
    "maxPriorityFeePerGas": "2000000000"
  },
  "serialized": "0x02f8...",
  "raw": "0x02f8..."
}

Examples:

skale txprep build-tx 0x... 100 --eth
skale txprep build-tx 0x... 1000000000000000000 --chain calypso

wallet — Wallet Operations

Wallet management and address utilities.

wallet balance <address>

Get ETH or token balance for an address.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Ethereum address |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | No | SKALE chain name | | --network | enum | No | Ethereum network: mainnet, sepolia | | --token | string | No | Token contract address for ERC20 balance |

Output (native token):

{
  "address": "0x...",
  "balance": "1000000000000000000",
  "formatted": "1.0",
  "chain": "skale-base",
  "chainName": "SKALE Base"
}

Output (ERC20 token):

{
  "address": "0x...",
  "balance": "1000000000000000000",
  "formatted": "1.0",
  "token": {
    "address": "0x...",
    "symbol": "SKL",
    "decimals": 18
  },
  "chain": "skale-base",
  "chainName": "SKALE Base"
}

Examples:

skale wallet balance 0x... --network sepolia
skale wallet balance 0x... --chain nebula
skale wallet balance 0x... --token 0x...

wallet validate <address>

Validate Ethereum address format.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Ethereum address to validate |

Output:

{
  "valid": true,
  "original": "0xab5801a7d398351b8be11c439e05c5b3259aec9b",
  "checksummed": "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B"
}

wallet ens <name>

Resolve ENS name to address or reverse resolve.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | name | string | Yes | ENS name or Ethereum address |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --network | enum | No | Ethereum network: mainnet, sepolia (default: mainnet) | | --reverse | boolean | No | Reverse resolution (address to ENS name) |

Output (forward resolution):

{
  "name": "vitalik.eth",
  "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
  "network": "mainnet"
}

Output (reverse resolution):

{
  "address": "0x...",
  "ensName": "vitalik.eth",
  "network": "mainnet"
}

Examples:

skale wallet ens vitalik.eth
skale wallet ens 0x... --reverse

wallet address <privateKey>

Generate derived address from private key (read-only, key is masked).

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | privateKey | string | Yes | Private key (will be masked in output) |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --index | number | No | Derivation index (default: 0) | | --path | string | No | Derivation path |

Output:

{
  "address": "0x...",
  "publicKey": "0x...",
  "index": 0,
  "maskedPrivateKey": "0x12...ab"
}

wallet explorer <address>

Show block explorer URL for an address or transaction.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Ethereum address or transaction hash |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | No | SKALE chain name | | --network | enum | No | Ethereum network: mainnet, sepolia | | --type | enum | No | Type: address or tx (auto-detected) |

Output:

{
  "address": "0x...",
  "type": "address",
  "url": "https://explorer.skale-base.skale.network/address/0x...",
  "chain": "skale-base"
}

Examples:

skale wallet explorer 0x... --network sepolia
skale wallet explorer 0x... --chain nebula
skale wallet explorer 0x... --type tx

gas — Gas Operations

Gas estimation and price queries.

gas estimate <to> <value>

Estimate gas for a transaction.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | to | string | Yes | Recipient address | | value | string | Yes | Amount in wei (or ETH with --eth flag) |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | No | SKALE chain name | | --network | enum | No | Ethereum network: mainnet, sepolia | | --data | string | No | Hex string data | | --from | string | No | Sender address | | --eth | boolean | No | Treat value as ETH instead of wei |

Output:

{
  "estimatedGas": "21000",
  "estimatedGasWithBuffer": "23100",
  "bufferPercent": "10%",
  "currentGasPrice": "20000000000",
  "costEstimate": "462000000000000",
  "costEstimateFormatted": {
    "wei": "462000000000000",
    "ether": "0.000462"
  }
}

Examples:

skale gas estimate 0x... 1000000000000000000 --eth --chain calypso
skale gas estimate 0x... 1000000 --network mainnet

gas price

Get current gas prices (fast/standard/slow).

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | No | SKALE chain name | | --network | enum | No | Ethereum network: mainnet, sepolia | | --unit | enum | No | Unit: gwei, wei (default: gwei) |

Output:

{
  "unit": "gwei",
  "current": {
    "slow": "18.5",
    "standard": "20.0",
    "fast": "24.0"
  },
  "raw": {
    "slow": "18500000000",
    "standard": "20000000000",
    "fast": "24000000000"
  },
  "baseFeePerGas": "15000000000",
  "isEIP1559": true
}

gas history

Get historical gas prices.

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --network | enum | No | Ethereum network: mainnet, sepolia | | --hours | number | No | Hours to look back, max 168 (default: 24) |

Output:

{
  "network": "mainnet",
  "hours": 24,
  "currentGasPrice": "20000000000",
  "baseFeePerGas": "15000000000",
  "history": [
    {
      "timestamp": 1712345678000,
      "gasPrice": "18500000000",
      "speed": "slow"
    }
  ]
}

gas simulate <to> <value>

Simulate transaction without executing (read-only).

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | to | string | Yes | Recipient address | | value | string | Yes | Amount in wei |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | No | SKALE chain name | | --network | enum | No | Ethereum network: mainnet, sepolia | | --data | string | No | Hex string data | | --from | string | No | Sender address | | --block | number | No | Block number to simulate at |

Output (success):

{
  "success": true,
  "simulatedAt": "12345678",
  "transaction": {
    "to": "0x...",
    "value": "1000000000000000000",
    "data": "0x",
    "from": "0x..."
  },
  "gasUsed": "21000",
  "gasUsedWithBuffer": "23100",
  "result": null,
  "status": "success"
}

Output (failure):

{
  "success": false,
  "transaction": {
    "to": "0x...",
    "value": "1000000000000000000",
    "data": "0x",
    "from": "0x..."
  },
  "error": "execution reverted: ...",
  "status": "reverted"
}

explorer — Blockchain Explorer

Query blockchain data and generate explorer URLs.

explorer tx <hash>

Get transaction details and construct explorer URL.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | hash | string | Yes | Transaction hash |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | No | SKALE chain name | | --network | enum | No | Ethereum network: mainnet, sepolia |

Output:

{
  "hash": "0x...",
  "status": "success",
  "blockNumber": "12345678",
  "blockHash": "0x...",
  "timestamp": "2024-01-15T12:34:56.000Z",
  "from": "0x...",
  "to": "0x...",
  "value": "1000000000000000000",
  "formattedValue": "1.0",
  "gasUsed": "21000",
  "gasPrice": "20000000000",
  "formattedGasPrice": "0.00000002",
  "inputData": "0x",
  "transactionIndex": "0",
  "chain": "skale-base",
  "chainName": "SKALE Base",
  "explorerUrl": "https://explorer.skale-base.skale.network/tx/0x..."
}

explorer address <address>

Get address details and explorer URL.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Ethereum address |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | No | SKALE chain name | | --network | enum | No | Ethereum network: mainnet, sepolia |

Output:

{
  "address": "0x...",
  "type": "EOA",
  "balance": "1000000000000000000",
  "formattedBalance": "1.0",
  "transactionCount": "42",
  "codeVerified": "not-a-contract",
  "code": null,
  "chain": "skale-base",
  "chainName": "SKALE Base",
  "explorerUrl": "https://explorer.skale-base.skale.network/address/0x..."
}

explorer block <block>

Get block details and explorer URL.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | block | string | Yes | Block number or hash |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | No | SKALE chain name | | --network | enum | No | Ethereum network: mainnet, sepolia | | --hash | boolean | No | Input is block hash instead of number |

Output:

{
  "number": "12345678",
  "hash": "0x...",
  "parentHash": "0x...",
  "timestamp": "2024-01-15T12:34:56.000Z",
  "transactionsCount": "150",
  "gasUsed": "15000000",
  "gasLimit": "30000000",
  "miner": "0x...",
  "size": "45000",
  "difficulty": "0",
  "totalDifficulty": "0",
  "chain": "skale-base",
  "chainName": "SKALE Base",
  "explorerUrl": "https://explorer.skale-base.skale.network/block/12345678"
}

explorer contract <address>

Get contract info and explorer URL.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Contract address |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | No | SKALE chain name | | --network | enum | No | Ethereum network: mainnet, sepolia | | --verify | boolean | No | Check verification status |

Output:

{
  "address": "0x...",
  "type": "Contract",
  "hasCode": true,
  "codeVerification": "has-code",
  "codeLength": "1234",
  "chain": "skale-base",
  "chainName": "SKALE Base",
  "explorerUrl": "https://explorer.skale-base.skale.network/address/0x...",
  "codeExplorerUrl": "https://explorer.skale-base.skale.network/address/0x...#code"
}

contract — Contract Inspection

Inspect and analyze smart contracts.

contract source <address>

Check contract source code information.

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Contract address |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Conditional | SKALE chain name (required if not using --network) | | --network | enum | Conditional | Ethereum network: mainnet, sepolia (required if not using --chain) |

Output:

{
  "address": "0x...",
  "isContract": true,
  "codeSizeBytes": "1234",
  "verificationNote": "Contract verification status cannot be queried via RPC. Use the block explorer to verify source code.",
  "explorerUrl": "https://explorer.skale-base.skale.network/address/0x...",
  "chain": "skale-base",
  "chainName": "SKALE Base"
}

contract standards <address>

Check ERC standard compliance (ERC20, ERC721, ERC165).

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Contract address |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Conditional | SKALE chain name | | --network | enum | Conditional | Ethereum network |

Output:

{
  "address": "0x...",
  "chain": "skale-base",
  "chainName": "SKALE Base",
  "detectedStandards": ["ERC20", "ERC165"],
  "erc20": {
    "methods": ["name", "symbol", "decimals", "totalSupply", "balanceOf", "transfer", "approve", "allowance"]
  },
  "erc721": null,
  "erc165": true,
  "complianceScore": 250,
  "hasCode": true
}

contract interface <address>

Get contract interface details (read/write functions and events).

Arguments: | Argument | Type | Required | Description | |----------|------|----------|-------------| | address | string | Yes | Contract address |

Options: | Option | Type | Required | Description | |--------|------|----------|-------------| | --chain | enum | Conditional | SKALE chain name | | --network | enum | Conditional | Ethereum network | | --output-format | enum | No | Output format: text, json, abi (default: text) |

Output (text format):

{
  "address": "0x...",
  "chain": "skale-base",
  "chainName": "SKALE Base",
  "outputFormat": "text",
  "readFunctionsCount": 5,
  "writeFunctionsCount": 3,
  "eventsCount": 4,
  "readFunctions": ["name", "symbol", "decimals", "totalSupply", "balanceOf"],
  "writeFunctions": ["transfer", "approve", "transferFrom"],
  "events": ["Transfer", "Approval", "ApprovalForAll"]
}

Output (abi format):

{
  "address": "0x...",
  "chain": "skale-base",
  "chainName": "SKALE Base",
  "outputFormat": "abi",
  "abi": [
    { "type": "function", "name": "name", "stateMutability": "view", "inputs": [], "outputs": [] },
    { "type": "function", "name": "transfer", "stateMutability": "nonpayable", "inputs": [], "outputs": [] },
    { "type": "event", "name": "Transfer", "inputs": [] }
  ]
}

Environment Setup

Create a .env file or export environment variables:

export PRIVATE_KEY=your_private_key
export RPC_URL=https://your-rpc-url

Supported Chains

SKALE Chains

  • europa — Europa Liquidity Hub
  • calypso — Calypso Hub
  • nebula — Nebula Gaming Hub
  • titan — Titan AI Hub
  • strayshot — StrayShot
  • skale-base — SKALE Base
  • calypso-testnet — Calypso Testnet
  • europa-testnet — Europa Testnet
  • nebula-testnet — Nebula Testnet
  • titan-testnet — Titan Testnet
  • skale-base-sepolia — SKALE Base Sepolia
  • skale-bite-sandbox — SKALE BITE Sandbox

Ethereum Networks

  • mainnet — Ethereum Mainnet
  • sepolia — Ethereum Sepolia Testnet

Documentation

License

MIT © SKALE Labs