
See exactly what Paxeer X exercises
Test, conformance, load and benchmark suites
Per-method RPC parity against a live geth, dApp suites, block tests, load and benchmark runners.
Run one Mocha spec per JSON-RPC method against a live Paxeer X node and a local geth dev node at the same time, then diff the two responses. Thirty-one eth_* methods carry happy path, schema parity and byte-for-byte error envelope assertions. Deploy real dApps, replay the Ethereum block-test corpus, compare five execution modes on identical transactions, and generate load across thirteen message types. Read the spec files and skip lists to see what is covered and what is excluded.
What it does
The repository carries several suites that exercise Paxeer X from the outside. integration_test/rpc_tests runs one Mocha spec per JSON-RPC method against a live Paxeer X node and a local geth --dev reference node at the same time, then diffs the two responses. integration_test/dapp_tests deploys real dApps (Uniswap V3, an ERC-721 marketplace and a CosmWasm liquid-staking set) and drives end-to-end flows through them. Alongside those, run_blocktests.sh replays the Ethereum blockchain test corpus through paxd blocktest, engine/tests compares execution modes on identical transactions, and loadtest/ and benchmark/ generate transaction load and report throughput.
Key capabilities
- 31
eth_*methods, one spec each: happy path, schema parity with geth, empty forms, byte-for-byte error envelopes. - dApp suites cover Uniswap V3 swaps and pools, an ERC-721 marketplace, and CosmWasm liquid staking.
- Ethereum block tests replay through
paxd blocktestwith name, path and non-Prague skip filters plus runner sharding. - A differential suite runs the same transactions through five execution modes and compares the results.
- A Go load generator drives 13 Cosmos and EVM message types, including two deliberate failure injections.
- Benchmark scripts run weighted scenarios, log TPS every five seconds, and compare two commits side by side.
Who it's for
Chain and application developers who need to know which Paxeer X behavior is actually exercised.
Why it matters
Ethereum tooling depends on geth's exact response shapes and error envelopes, including the ones geth never documented. These suites check that parity against a running geth rather than against a written specification, and the block tests, execution-mode comparison and load runners do the same for execution and for sustained traffic. A developer can read the spec files and skip lists to see exactly what is covered and what is excluded.
Differentiators
JSON-RPC error envelopes are asserted byte-for-byte against a live geth --dev node, not against recorded fixtures. The execution suite drives one workload through five modes (sequential and OCC variants of two executors, plus a regular-store mode) and compares outcomes. Two known interop gaps are kept as passing negative tests rather than deleted.
Outcomes
- Diff every RPC response against a running geth, not a written spec.
- Replay the Ethereum block-test corpus with skip filters and runner sharding.
- Drive Uniswap V3, an NFT marketplace and CosmWasm liquid staking end to end.
Technical notes
- The RPC suite needs a running Paxeer X node and
geth --devon 9547, plusPAX_EVM_RPC,PAX_EVM_WS,PAX_COSMOS_RPC,PAX_REST,RPC_ETH_GETHandPAX_ADMIN_MNEMONIC. Per-spec timeout is 600 s, and it runs in a single Mocha process because every spec shares one chain and a 96-account funded pool. - Filter and subscription specs assert Paxeer X behavior only and are not compared value-for-value against geth. No
debugortxpoolspec directory exists. - dApp tests target
paxlocal,devnet(arctic-1) andtestnet(atlantic-2) only, needDAPP_TESTS_MNEMONICon live chains, and use ethers v5 where the RPC suite uses ethers v6, so the two suites share no utilities. - The Ethereum block-test corpus is not vendored (the caller passes its path) and
engine/tests/data/skip_list.jsonexcludes 101 state-test cases (60 result-code, 33 gas, 7 error-message and 1 fee-bound mismatches). loadtest/config.jsontargets 500 transactions per second across 500 accounts against gRPC127.0.0.1:9090, EVM:8545and Tendermint:26657on chain idpax-loadtest-testnet, but it hardcodespax1…contract addresses and leavespax_tester_addressempty, so it will not run against a fresh chain unmodified.benchmark/scenarios are JSON files rather than a stable API, and the scripts settimeout_committo 2000 ms for local runs. No result artifact is committed to the repository, so these files record what is exercised, not a measured outcome.
# RPC parity: start a Paxeer X node on :8545 first
cd integration_test/rpc_tests
npm install && npm run compile
npm run rpc:ci # boots geth --dev, bootstraps, runs all 31 specs
# dApp end-to-end against a local chain
./integration_test/dapp_tests/dapp_tests.sh paxlocal uniswap
# then conformance and benchmark
./run_blocktests.sh /path/to/ethtests/BlockchainTests
BENCHMARK_CONFIG=benchmark/scenarios/erc20.json benchmark/benchmark.shMore in Developers
Runnable samples and reference apps
Samples that cannot go stale
ExploreClient SDKs in seven languages
Call the network from seven languages
ExploreCore protocol and verification CLIs
Run, control and verify nodes from a shell
ExploreCosmos gRPC, REST and Swagger surface
Query the chain from Cosmos tooling
ExploreBuild on Paxeer.
Give your agent a wallet, set its policy, and settle your first call on LayerX.