Benchmark methodology
How performance numbers are measured and reported.
Principles
Reported throughput values are intended to be reproducible and conservative: strict validation enabled, deterministic execution, and a clear separation between synthetic throughput and end-to-end committed throughput.
What we publish
python scripts/praxisnet_benchmark_tps.py --blocks 10 --tx-per-block 20000 --block-interval-ms 200 --accounts 2000 \
--require-rust --state-apply-mode partitioned --state-partitions 16 --batch-signature-verify
Public artifacts
- Synthetic TPS JSON: /benchmarks/synthetic_tps_report.json
- End-to-end committed TPS JSON (cloud-load harness, committed blocks): /benchmarks/end_to_end_tps_32vcpu_latest.json
Legacy end-to-end JSON (historical run, older schema): /benchmarks/end_to_end_tps_32vcpu_40k_190ms_65s.json - Live invariants endpoint (best-effort): https://api.praxis-chain.com/api/chain/invariants
Performance figures
- Validator-path throughput (strict profile runs): approximately ~340k–380k TPS, depending on workload shape and batch configuration.
- End-to-end committed throughput (single machine, CPU-only): see the published JSON artifact. Current strict profile windows are approximately ~17.8k–18.1k TPS (20k tx/block profile) and ~73k–84k TPS (100k tx/block profile).
Hardware
Publish hardware details alongside results (CPU model, core count, RAM, OS, kernel). Keep the runtime single-machine and CPU-only.
Exact commands
Generate a fresh POR-style report bundle (includes the synthetic TPS JSON):
python scripts/praxisnet_por1_verify.py --out-dir data/artifacts/praxisnet_por1/$(date -u +%Y%m%d_%H%M%S) \
--synthetic-accounts 2048 \
--synthetic-batches 1000,5000,10000Publish the public verification bundle (copies required reports + exports chain JSONL and genesis artifacts):
python scripts/praxisnet_publish_artifacts.py --version v1 \
--praxisnet-data-dir data/praxisnet_testnet \
--out-root artifacts/public/praxisnetImportant: never claim “validator TPS” from HTTP ingest. Label synthetic/apply/validator/end-to-end numbers separately.
End-to-end TPS harness
Run the end-to-end benchmark harness (single machine, CPU-only) and publish the raw JSON output.
python scripts/praxisnet_benchmark_tps.py --blocks 10 --tx-per-block 20000 --block-interval-ms 200 --accounts 2000 \
+ --require-rust --state-apply-mode partitioned --state-partitions 16 --batch-signature-verify