@skalenetwork/cli
v0.1.11
Published
SKALE Network CLI Tool for developers, chain operators, and agents
Downloads
270
Readme
@skalenetwork/cli
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/cliOne-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-baseGlobal 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 USDchains 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 tablechains 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 --statusread — 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 mainnettoken — 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 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9Baccess — 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-baseima — 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...' --arraytxprep 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 calypsowallet — 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... --reversewallet 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 txgas — 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 mainnetgas 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-urlSupported Chains
SKALE Chains
europa— Europa Liquidity Hubcalypso— Calypso Hubnebula— Nebula Gaming Hubtitan— Titan AI Hubstrayshot— StrayShotskale-base— SKALE Basecalypso-testnet— Calypso Testneteuropa-testnet— Europa Testnetnebula-testnet— Nebula Testnettitan-testnet— Titan Testnetskale-base-sepolia— SKALE Base Sepoliaskale-bite-sandbox— SKALE BITE Sandbox
Ethereum Networks
mainnet— Ethereum Mainnetsepolia— Ethereum Sepolia Testnet
Documentation
License
MIT © SKALE Labs
