Paxeer Docs logo

Paxeer EVM JSON-RPC API Reference

Explore Paxeer's EVM JSON-RPC API reference, covering standard Ethereum methods, support statuses, network endpoints, and usage limits.

Paxeer fully supports the standard Ethereum JSON-RPC API, so existing EVM tooling (ethers.js, viem, Hardhat, Foundry, etc.) works out of the box. Use the explorer below to browse every method Paxeer exposes, inspect parameters, run requests against a live endpoint, and copy ready-to-use snippets in a range of popular languages.

⚠ This content couldn’t be displayed(unknown component <RPCMethodsViewer>)

By default the explorer lists only the available, current methods. Each is labelled with one of three statuses:

  • Supported - registered with a full implementation and standard Ethereum behavior.
  • Limited - callable, but returns a static value or has a Paxeer-specific caveat (shown in the method's Paxeer-specific behavior note).
  • Unavailable - not registered, explicitly errors, or not applicable to Paxeer's architecture. This includes blob methods (eth_blobBaseFee), proof-of-work and uncle methods, and the admin/miner/clique/engine/les/personal namespaces.

Overview

Paxeer supports the Ethereum JSON-RPC API. Because Paxeer has instant finality, the safe, finalized, and latest block tags all resolve to the same (latest committed) block.

All endpoints follow the standard JSON-RPC format:

Request Format

  • HTTP method: always "POST"
  • Header: accept: application/json
  • Header: content-type: application/json
  • Body (JSON):
    • id: an arbitrary string identifier
    • jsonrpc: always "2.0"
    • method: endpoint name (e.g. "eth_sendRawTransaction")
    • params: an array that differs from endpoint to endpoint

Response Format

  • Body (JSON):
    • id: the same identifier in request
    • jsonrpc: always "2.0"
    • result: an object that differs from endpoint to endpoint
    • error (if applicable): error details

Network endpoints

NetworkChain IDHTTP endpoint
Mainnet125 (0x7d)https://public-rpc.paxeer.app/evm/reference

For additional public and commercial endpoints, see RPC providers and Chains & endpoints.

Filter and subscription limits

Log filters (eth_getLogs, eth_getFilterLogs) are subject to the following limits by default:

  • Open-ended block range: up to 10,000 logs in one response
  • Close-ended block range: up to 2,000 blocks to query over

Real-time subscriptions (eth_subscribe for newHeads and logs) are available over WebSocket only.

Standard Ethereum endpoints

Every method below is also browsable interactively in the explorer above; this section is the static, copy-friendly reference. Methods are grouped by purpose and labelled with their Paxeer support status. Block parameters accept a hex number or one of the tags latest, earliest, pending, safe, or finalized - on Paxeer, safe, finalized, and latest all resolve to the latest committed block due to instant finality.

eth_sendRawTransaction

Supported. Submits a signed, RLP-encoded raw EVM transaction to the network and returns its hash.

Parameters:

#NameTypeDescription
1dataDATASigned, RLP-encoded transaction bytes (0x-prefixed).

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_sendRawTransaction",
  "params": [
    "0x02f8b101808459682f00..."
  ]
}

eth_sendTransaction

Limited. Signs (with a node-hosted key) and submits a transaction in one call.

Paxeer-specific behavior: Requires the 'from' address's private key in the node's local test keyring; production/public RPC nodes hold no hosted keys. Sign client-side and use eth_sendRawTransaction instead.

Parameters:

#NameTypeDescription
1argsobjectTransaction object (from, to, value, data, gas, nonce, etc.).

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_sendTransaction",
  "params": [
    {
      "from": "0xDa52B9E673d1f48FcD9916b3F606A136a8eA5e55",
      "to": "0x7507454444fa193d39f1392076bc784b77a7a8ff",
      "value": "0x1"
    }
  ]
}

eth_signTransaction

Limited. Signs a transaction with a node-hosted key and returns the signed payload without broadcasting.

Paxeer-specific behavior: Requires a node-hosted key for the from address; not usable on public RPC nodes that hold no keys.

Parameters:

#NameTypeDescription
1argsobjectSendTxArgs transaction object to sign (from, to, gas, gasPrice, value, nonce, data).

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_signTransaction",
  "params": [
    {
      "from": "0xDa52B9E673d1f48FcD9916b3F606A136a8eA5e55",
      "to": "0x7507454444fa193d39f1392076bc784b77a7a8ff",
      "value": "0x1",
      "nonce": "0x0",
      "gas": "0x5208",
      "gasPrice": "0x3b9aca00"
    }
  ]
}

eth_sign

Limited. Signs an EIP-191 personal message with a node-hosted key for the given address.

Paxeer-specific behavior: Only works for addresses in the node's local test keyring; production/public RPC nodes hold no hosted keys.

Parameters:

#NameTypeDescription
1addressDATA, 20 bytesAddress whose hosted key signs the data.
2dataDATAMessage bytes to sign.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_sign",
  "params": [
    "0xDa52B9E673d1f48FcD9916b3F606A136a8eA5e55",
    "0xdeadbeef"
  ]
}

eth_getTransactionByHash

Supported. Returns the EVM transaction matching the given hash, or null if not found.

Parameters:

#NameTypeDescription
1hashDATA, 32 bytesTransaction hash.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getTransactionByHash",
  "params": [
    "0x828c91592453fe7c5bf743204495a35bf02b67b579b8f59ee7eea8af031d7c14"
  ]
}

eth_getTransactionReceipt

Supported. Returns the receipt of a transaction by hash, or null if not found.

Parameters:

#NameTypeDescription
1hashDATA, 32 bytesTransaction hash.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getTransactionReceipt",
  "params": [
    "0x828c91592453fe7c5bf743204495a35bf02b67b579b8f59ee7eea8af031d7c14"
  ]
}

eth_getTransactionByBlockNumberAndIndex

Supported. Returns the EVM transaction at the given index within the block at the specified number.

Parameters:

#NameTypeDescription
1blockNrBLOCKNUMBERBlock number or tag.
2indexQUANTITYTransaction index within the block.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getTransactionByBlockNumberAndIndex",
  "params": [
    "latest",
    "0x0"
  ]
}

eth_getTransactionByBlockHashAndIndex

Supported. Returns the EVM transaction at the given index within the block identified by hash.

Parameters:

#NameTypeDescription
1blockHashDATA, 32 bytesBlock hash.
2indexQUANTITYTransaction index within the block.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getTransactionByBlockHashAndIndex",
  "params": [
    "0x5620c15afd9a1d0ab19d7560043df6e038d731c6205974dca7a55900071e3864",
    "0x0"
  ]
}

eth_getTransactionCount

Supported. Returns the number of transactions sent from an address (nonce) at a given block.

Paxeer-specific behavior: safe/finalized/latest are equivalent due to instant finality.

Parameters:

#NameTypeDescription
1addressDATA, 20 bytesAccount address.
2blockNrOrHashBLOCKNUMBER or DATABlock number, tag, or hash; 'pending' returns the next pending nonce.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getTransactionCount",
  "params": [
    "0xDa52B9E673d1f48FcD9916b3F606A136a8eA5e55",
    "latest"
  ]
}

eth_getBalance

Supported. Returns the wei balance of an account at a given block.

Paxeer-specific behavior: Balance reflects the account's HPX bank balance (18-decimal wei representation). Height is resolved with a state-version guard.

Parameters:

#NameTypeDescription
1addressDATA, 20 bytesAccount address.
2blockNrOrHashBLOCKNUMBER or DATABlock number, tag (latest/earliest/pending/safe/finalized), or hash.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getBalance",
  "params": [
    "0xDa52B9E673d1f48FcD9916b3F606A136a8eA5e55",
    "latest"
  ]
}

eth_getCode

Supported. Returns the contract bytecode at an address for a given block.

Parameters:

#NameTypeDescription
1addressDATA, 20 bytesContract address.
2blockNrOrHashBLOCKNUMBER or DATABlock number, tag, or hash.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getCode",
  "params": [
    "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7",
    "latest"
  ]
}

eth_getStorageAt

Supported. Returns the value stored at a storage slot of an address at a given block.

Parameters:

#NameTypeDescription
1addressDATA, 20 bytesContract address.
2keyDATA, 32 bytesStorage slot key (hex, up to 32 bytes).
3blockNrOrHashBLOCKNUMBER or DATABlock number, tag, or hash.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getStorageAt",
  "params": [
    "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7",
    "0x0",
    "latest"
  ]
}

eth_accounts

Limited. Returns the list of addresses for which the node holds hosted keys.

Paxeer-specific behavior: Sourced from the node's local test keyring only; production/public RPC nodes hold no hosted keys, so this returns an empty list. Sign client-side and use eth_sendRawTransaction.

Parameters: none.

eth_getBlockByNumber

Supported. Returns block information by number or tag, with full transactions when fullTx is true.

Paxeer-specific behavior: Block number 0 returns a synthetic genesis block; future/non-existent numeric blocks return null. Uncle/PoW header fields are placeholders and the uncles array is always empty. safe/finalized/latest are equivalent due to instant finality.

Parameters:

#NameTypeDescription
1numberBLOCKNUMBERBlock number (hex) or tag (latest/safe/finalized/pending/earliest).
2fullTxbooleanIf true include full transaction objects, else only hashes.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getBlockByNumber",
  "params": [
    "latest",
    true
  ]
}

eth_getBlockByHash

Supported. Returns block information by block hash, with full transactions when fullTx is true.

Parameters:

#NameTypeDescription
1blockHashDATA, 32 bytesBlock hash.
2fullTxbooleanIf true include full transaction objects, else only hashes.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getBlockByHash",
  "params": [
    "0x5620c15afd9a1d0ab19d7560043df6e038d731c6205974dca7a55900071e3864",
    false
  ]
}

eth_getBlockTransactionCountByNumber

Supported. Returns the number of EVM transactions in a block by number, as a hex quantity.

Parameters:

#NameTypeDescription
1numberBLOCKNUMBERBlock number or tag.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getBlockTransactionCountByNumber",
  "params": [
    "latest"
  ]
}

eth_getBlockTransactionCountByHash

Supported. Returns the number of EVM transactions in a block by hash, as a hex quantity.

Parameters:

#NameTypeDescription
1blockHashDATA, 32 bytesBlock hash.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getBlockTransactionCountByHash",
  "params": [
    "0x5620c15afd9a1d0ab19d7560043df6e038d731c6205974dca7a55900071e3864"
  ]
}

eth_getBlockReceipts

Supported. Returns all EVM transaction receipts for a given block.

Parameters:

#NameTypeDescription
1blockNrOrHashBLOCKNUMBER or DATABlock number, tag, or hash.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getBlockReceipts",
  "params": [
    "latest"
  ]
}

eth_blockNumber

Supported. Returns the number of the most recent committed EVM block as a hex uint64.

Paxeer-specific behavior: The latest committed block is already final on Paxeer (instant finality, so latest == safe == finalized).

Parameters: none.

eth_chainId

Supported. Returns the EVM chain ID as a hex big int.

Paxeer-specific behavior: Mainnet = 125 (0x7d).

Parameters: none.

eth_coinbase

Limited. Returns the block reward beneficiary (coinbase) address.

Parameters: none.

eth_gasPrice

Supported. Returns a suggested gas price in wei (hex).

Parameters: none.

eth_maxPriorityFeePerGas

Supported. Returns a suggested priority fee (tip) per gas in wei (hex).

Parameters: none.

eth_feeHistory

Supported. Returns base fees, gas-used ratios, and reward percentile data over a range of blocks.

Parameters:

#NameTypeDescription
1blockCountQUANTITYNumber of blocks in the requested range.
2newestBlockBLOCKNUMBERHighest block of the range (number or tag).
3rewardPercentilesarray of floatMonotonically increasing percentiles to sample for priority-fee rewards.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_feeHistory",
  "params": [
    "0x5",
    "latest",
    [
      25,
      50,
      75
    ]
  ]
}

net_version

Supported. Returns the network/chain ID as a decimal string.

Paxeer-specific behavior: Returns '125' on mainnet.

Parameters: none.

web3_clientVersion

Supported. Returns the client version string.

Parameters: none.

eth_newFilter

Supported. Creates a log filter for the given criteria and returns a filter ID for later polling.

Parameters:

#NameTypeDescription
1critobjectFilter criteria: fromBlock, toBlock (or blockHash), address(es), and topics.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_newFilter",
  "params": [
    {
      "fromBlock": "latest",
      "address": "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7",
      "topics": []
    }
  ]
}

eth_newBlockFilter

Supported. Creates a filter that tracks newly arrived block hashes and returns its ID.

Parameters: none.

eth_getFilterChanges

Supported. Polls a filter and returns new logs (log filters) or block hashes (block filters) since the last poll.

Parameters:

#NameTypeDescription
1filterIDQUANTITY/IDFilter ID from a New*Filter call.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getFilterChanges",
  "params": [
    "0x1"
  ]
}

eth_getFilterLogs

Supported. Returns all logs matching a previously created log filter, including historical logs.

Parameters:

#NameTypeDescription
1filterIDQUANTITY/IDFilter ID from a NewFilter call.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getFilterLogs",
  "params": [
    "0x1"
  ]
}

eth_getLogs

Supported. Returns logs matching the given filter criteria.

Parameters:

#NameTypeDescription
1critobjectFilter criteria: fromBlock, toBlock (or blockHash), address(es), topics.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_getLogs",
  "params": [
    {
      "fromBlock": "0x0",
      "toBlock": "latest",
      "address": "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7",
      "topics": []
    }
  ]
}

eth_uninstallFilter

Supported. Removes a previously installed filter by ID; returns true if it existed and was removed.

Parameters:

#NameTypeDescription
1filterIDQUANTITY/IDFilter ID to remove.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_uninstallFilter",
  "params": [
    "0x1"
  ]
}

eth_subscribe

Limited. Opens a WebSocket-only push subscription for newHeads or logs notifications.

Paxeer-specific behavior: WebSocket-only. Only 'newHeads' and 'logs' are implemented.

Parameters:

#NameTypeDescription
1subscriptionTypestringSubscription name: 'newHeads' or 'logs'.
2filterobjectOptional filter criteria (address/topics) for the 'logs' subscription.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_subscribe",
  "params": [
    "logs",
    {
      "address": "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7",
      "topics": []
    }
  ]
}

eth_unsubscribe

Supported. Cancels an existing WebSocket subscription by ID; returns true on success.

Parameters:

#NameTypeDescription
1subscriptionIDstringThe subscription ID returned by a prior eth_subscribe call.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_unsubscribe",
  "params": [
    "0x9cef478923ff08bf67fde6c64013158d"
  ]
}

eth_call

Supported. Executes a read-only message call against state without creating a transaction; supports state and block overrides.

Parameters:

#NameTypeDescription
1argsobjectCall object (to, from, data/input, gas, gasPrice/maxFeePerGas, value).
2blockNrOrHashBLOCKNUMBER or DATABlock number, tag, or hash. Defaults to latest.
3overridesobjectOptional per-account state overrides (balance, code, nonce, state).
4blockOverridesobjectOptional block-context overrides (number, time, coinbase).

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_call",
  "params": [
    {
      "to": "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7",
      "data": "0x18160ddd"
    },
    "latest"
  ]
}

eth_estimateGas

Supported. Estimates the gas needed to execute a transaction.

Parameters:

#NameTypeDescription
1argsobjectTransaction call object.
2blockNrOrHashBLOCKNUMBER or DATAOptional block number, tag, or hash; defaults to latest.
3overridesobjectOptional state overrides.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_estimateGas",
  "params": [
    {
      "to": "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7",
      "data": "0x18160ddd"
    },
    "latest"
  ]
}

eth_createAccessList

Supported. Generates an EIP-2930 access list (and gas used) for a transaction.

Parameters:

#NameTypeDescription
1argsobjectTransaction call object.
2blockNrOrHashBLOCKNUMBER or DATAOptional block number, tag, or hash; defaults to pending.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "eth_createAccessList",
  "params": [
    {
      "to": "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7",
      "data": "0x"
    },
    "pending"
  ]
}

debug_traceTransaction

Supported. Replays a transaction by hash and returns an execution trace using the configured tracer.

Parameters:

#NameTypeDescription
1hashDATA, 32 bytesTransaction hash to trace.
2configobjectOptional tracer config (tracer name, tracerConfig, timeout, reexec, disableStorage/Stack/Memory).

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "debug_traceTransaction",
  "params": [
    "0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060",
    {
      "tracer": "callTracer"
    }
  ]
}

debug_traceBlockByNumber

Supported. Traces all transactions in a block by number and returns per-transaction execution traces.

Parameters:

#NameTypeDescription
1numberBLOCKNUMBERBlock number or tag.
2configobjectOptional tracer config.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "debug_traceBlockByNumber",
  "params": [
    "latest",
    {
      "tracer": "callTracer"
    }
  ]
}

debug_traceBlockByHash

Supported. Traces all transactions in a block by hash and returns per-transaction execution traces.

Parameters:

#NameTypeDescription
1hashDATA, 32 bytesBlock hash.
2configobjectOptional tracer config.

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "debug_traceBlockByHash",
  "params": [
    "0x5620c15afd9a1d0ab19d7560043df6e038d731c6205974dca7a55900071e3864",
    {
      "tracer": "callTracer"
    }
  ]
}

debug_traceCall

Supported. Executes and traces a call against a block's state without creating a transaction.

Parameters:

#NameTypeDescription
1argsobjectTransaction call object.
2blockNrOrHashBLOCKNUMBER or DATABlock number, tag, or hash.
3configobjectOptional trace-call config (tracer name, state overrides, block overrides).

Example request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "debug_traceCall",
  "params": [
    {
      "to": "0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7",
      "data": "0x70a08231"
    },
    "latest",
    {
      "tracer": "callTracer"
    }
  ]
}

Address Resolution

For resolving the EVM (0x…) ↔ Paxeer (pax1…) address pair, use the addr precompile at 0x0000000000000000000000000000000000001004 via a standard eth_call.

# EVM → Paxeer (getPaxeerAddr(address), selector 0x0c3c20ed)
curl -X POST $PAXEER_RPC -H "Content-Type: application/json" -d '{
  "jsonrpc": "2.0",
  "method": "eth_call",
  "params": [{
    "to": "0x0000000000000000000000000000000000001004",
    "data": "0x0c3c20ed000000000000000000000000<evmAddressWithout0x>"
  }, "latest"],
  "id": 1
}'

In TypeScript with viem:

import { createPublicClient, http } from 'viem';

const ADDR_PRECOMPILE = '0x0000000000000000000000000000000000001004';
const ADDR_ABI = [
  { name: 'getPaxeerAddr', type: 'function', stateMutability: 'view',
    inputs: [{ name: 'addr', type: 'address' }],
    outputs: [{ name: 'response', type: 'string' }] },
  { name: 'getEvmAddr', type: 'function', stateMutability: 'view',
    inputs: [{ name: 'addr', type: 'string' }],
    outputs: [{ name: 'response', type: 'address' }] },
] as const;

const paxeerChain = {
  id: 125,
  name: 'Paxeer',
  nativeCurrency: { name: 'Paxeer', symbol: 'HPX', decimals: 18 },
  rpcUrls: { default: { http: ['https://public-rpc.paxeer.app/evm/reference'] } },
};

const client = createPublicClient({ chain: paxeerChain, transport: http() });

const paxeerAddr = await client.readContract({
  address: ADDR_PRECOMPILE, abi: ADDR_ABI, functionName: 'getPaxeerAddr', args: ['0x…'],
});

const evmAddr = await client.readContract({
  address: ADDR_PRECOMPILE, abi: ADDR_ABI, functionName: 'getEvmAddr', args: ['pax1…'],
});

The call reverts when the input address is not yet associated. See Accounts for the full association lifecycle and how the bidirectional mapping is established.