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.
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 theadmin/miner/clique/engine/les/personalnamespaces.
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 identifierjsonrpc: 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 requestjsonrpc: always "2.0"result: an object that differs from endpoint to endpointerror(if applicable): error details
Network endpoints
| Network | Chain ID | HTTP endpoint |
|---|---|---|
| Mainnet | 125 (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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | data | DATA | Signed, 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | args | object | Transaction 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | args | object | SendTxArgs 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | address | DATA, 20 bytes | Address whose hosted key signs the data. |
| 2 | data | DATA | Message 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | hash | DATA, 32 bytes | Transaction 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | hash | DATA, 32 bytes | Transaction 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | blockNr | BLOCKNUMBER | Block number or tag. |
| 2 | index | QUANTITY | Transaction 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | blockHash | DATA, 32 bytes | Block hash. |
| 2 | index | QUANTITY | Transaction 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | address | DATA, 20 bytes | Account address. |
| 2 | blockNrOrHash | BLOCKNUMBER or DATA | Block 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | address | DATA, 20 bytes | Account address. |
| 2 | blockNrOrHash | BLOCKNUMBER or DATA | Block 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | address | DATA, 20 bytes | Contract address. |
| 2 | blockNrOrHash | BLOCKNUMBER or DATA | Block 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | address | DATA, 20 bytes | Contract address. |
| 2 | key | DATA, 32 bytes | Storage slot key (hex, up to 32 bytes). |
| 3 | blockNrOrHash | BLOCKNUMBER or DATA | Block 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | number | BLOCKNUMBER | Block number (hex) or tag (latest/safe/finalized/pending/earliest). |
| 2 | fullTx | boolean | If 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | blockHash | DATA, 32 bytes | Block hash. |
| 2 | fullTx | boolean | If 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | number | BLOCKNUMBER | Block 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | blockHash | DATA, 32 bytes | Block 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | blockNrOrHash | BLOCKNUMBER or DATA | Block 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | blockCount | QUANTITY | Number of blocks in the requested range. |
| 2 | newestBlock | BLOCKNUMBER | Highest block of the range (number or tag). |
| 3 | rewardPercentiles | array of float | Monotonically 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | crit | object | Filter 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | filterID | QUANTITY/ID | Filter 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | filterID | QUANTITY/ID | Filter 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | crit | object | Filter 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | filterID | QUANTITY/ID | Filter 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | subscriptionType | string | Subscription name: 'newHeads' or 'logs'. |
| 2 | filter | object | Optional 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | subscriptionID | string | The 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | args | object | Call object (to, from, data/input, gas, gasPrice/maxFeePerGas, value). |
| 2 | blockNrOrHash | BLOCKNUMBER or DATA | Block number, tag, or hash. Defaults to latest. |
| 3 | overrides | object | Optional per-account state overrides (balance, code, nonce, state). |
| 4 | blockOverrides | object | Optional 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | args | object | Transaction call object. |
| 2 | blockNrOrHash | BLOCKNUMBER or DATA | Optional block number, tag, or hash; defaults to latest. |
| 3 | overrides | object | Optional 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | args | object | Transaction call object. |
| 2 | blockNrOrHash | BLOCKNUMBER or DATA | Optional 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | hash | DATA, 32 bytes | Transaction hash to trace. |
| 2 | config | object | Optional 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | number | BLOCKNUMBER | Block number or tag. |
| 2 | config | object | Optional 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | hash | DATA, 32 bytes | Block hash. |
| 2 | config | object | Optional 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:
| # | Name | Type | Description |
|---|---|---|---|
| 1 | args | object | Transaction call object. |
| 2 | blockNrOrHash | BLOCKNUMBER or DATA | Block number, tag, or hash. |
| 3 | config | object | Optional 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.