
Eight reads across both domains
px_* cross-domain read namespace
Join identity, balances, assets, network head and history on one JSON-RPC endpoint.
You call eight px_* read methods on the same endpoint that relays eth_* and answers lx_*. They resolve an account across the Paxeer EVM base layer and the LayerX agent domain, then join balances, the asset map, the network head and merged history tagged by side. The gateway reads the joins from native precompiles and the indexer, so a domain it cannot read answers -32001 instead of a fabricated zero. The hosted gateway's limited beta has not opened yet.
What it does
The px_* namespace is served by the Paxeer X network gateway on the same JSON-RPC endpoint that relays the EVM eth_ namespace and answers the LayerX lx_ methods. Eight read methods resolve one account across the Paxeer EVM base layer and the LayerX agent domain, then join its balances, the asset map, the network head and its transaction history. The gateway resolves the joins by calling three native precompiles on the chain (addr at 0x0000000000000000000000000000000000001004, layerxCustody at 0x0000000000000000000000000000000000001013 and layerxAnchor at 0x0000000000000000000000000000000000001014) and reads history from the indexer's read API. A domain that cannot be read returns an explicit error, never a fabricated zero.
Key capabilities
px_resolveAccountmaps an EVM address, adid:layerx:DID or a bare DID public key to both halves.px_getAccountandpx_getBalancesreturn balance, nonce and per-asset amounts from both domains together.px_listAssetsjoins each LayerX asset with its custody record: pointer, caps, custodied, released and pending.px_getNetworkreturns the network id, EVM chain id, latest block and the anchor's finalized batch and status.px_getUnifiedHistorymerges both sides' indexer pages newest first, tagging every row with its side.px_getCapabilitiesprobes the exchange, bridge and launchpad precompiles for code at one block height.
Who it's for
Wallet, explorer and dashboard developers who need one account view across both domains.
Why it matters
A wallet or explorer reads an account's EVM half and its agent-domain half in one call against one endpoint, instead of running two clients and reconciling identities itself. Absent data stays absent: an unreadable domain answers -32001 rather than a zero balance, so a client never shows a balance the network did not state.
Differentiators
One endpoint serves the EVM eth_ relay, the LayerX lx_ methods and the joined px_ reads, and a single batch may mix EVM and LayerX calls. The joins resolve through native precompiles on the chain rather than an off-chain mapping table. px_getCapabilities lets a client discover which fork surfaces the chain answers for at a stated height instead of assuming they are live.
Outcomes
- One account view instead of two clients and reconciliation
- Absent data stays absent, never a zero the network did not state
- Discover which fork surfaces answer at a stated block height
Technical notes
- Read-only: there is no
px_write method. Writes go througheth_sendRawTransactionorlx_sendActivityon the same endpoint. The TypeScript and PythonPxClientclasses expose the seven join and history methods;px_getCapabilitiesis served by the gateway and called directly. MAX_JOINED_ASSETS = 16bounds both joins: at most 16 assets perpx_getBalancesorpx_listAssetsanswer, reported back asjoined_limit, and at most 16 resolved account sides per unified history. The SDK decoders accept up to 1024 asset rows.- History pages default to 50 rows and cap at 100. Cursors are the indexer's opaque row cursors, passed through unchanged; both domains share one row sequence, so a unified page is the exact merge of every side's page at the same cursor. Every row carries
chain, and unified rows also carryside, each"layerx"or"paxeer". - Refusals are typed: an unconfigured Paxeer endpoint is
-32001withdata.code = paxeer_rpc_not_configured, and history without an indexer is-32001withindexer_not_configured. The anchor status ladder is 0 unknown, 1 submitted, 2 final. px_getCapabilitiescaches its probe forLAYERX_GATEWAY_CAPABILITIES_TTL_SECONDS, default 15 and maximum 300. While a surface reads false, transactions addressed to its precompile are refused with-32003 surface_unavailable; reads and history are never gated.- Reachable only through the network gateway, whose limited beta has not opened yet. Runtime floors are Node.js 22 or newer and Python 3.11 or newer.
import { PxClient } from "paxeer-xdk";
const px = new PxClient({ endpoint: process.env.PAXEER_RPC_URL! });
const account = await px.resolveAccount("0x1111111111111111111111111111111111111111");
const balances = await px.getBalances(account.evmAddress!);
const page = await px.getUnifiedHistory(account.evmAddress!, { limit: 50 });
console.log(account.layerxDid, balances.joinedLimit);
for (const row of page.items) {
console.log(row.side, row.kind, row.asset, row.amount);
}More in Interface
Passkey sessions and step-up approval
Passkeys hold your account, not passwords
ExploreStatements, evidence exports and notifications
Your record, exportable and verifiable
ExploreDeveloper console and API keys
One key, visible scopes and quota
ExploreExplorer with a joined account page
One account page, four spellings
ExploreBuild on Paxeer.
Give your agent a wallet, set its policy, and settle your first call on LayerX.