Vexidus Load Test Results
Latest: March 31, 2026 — Performance overhaul deployed (Tier 1 scaling + RocksDB + Borsh + ElasticState) Network: 5-validator testnet with leader rotation + Vexcel attestation DAG Protocol: HyperSync consensus, Dragonfly Stream Phase 3 (mempoolless direct delivery)
Proven TPS (March 29, 2026)
| Metric | Value |
|---|---|
| Sustained TPS | 1,005 ops/sec (block-level throughput) |
| Engine throughput | 830,000+ ops/sec (1,329 bundles in 16ms) |
| Execution success | 99.5% (1,329/1,336 in peak block) |
| RPC rejection | 0% (all bundles accepted) |
| Peak single block | 1,318 bundles (13,180 ops) |
| Block time | ~2.2s (5 validators, 4 continents) |
| Finality | Single-round BFT (1 block = final) |
Network Configuration
| Parameter | Value |
|---|---|
| Validators | 5 (across 4 continents) |
| Block time | ~2.2s average (adaptive: 100ms-12s range) |
| Max tx/block | 50,000 (100,000 in benchmark mode) |
| LeaderBuffer capacity | 100,000 |
| Gas price | 10 nanoVXS/gas |
| Leader rotation | Enabled (pure stake-weighted, leader skip recovery) |
| P2P transport | Dragonfly Stream (sealed direct-to-leader, PQ envelopes) |
| Wire encoding | Borsh binary with JSON fallback (dual-format) |
| Storage | ElasticState 3-tier (Hot/Warm/Cold) + RocksDB bloom filters + 512MB cache |
Validator Nodes
| Node | Location | Stake | Notes |
|---|---|---|---|
| Gravelines | OVH, France | 10,000 VXS | Seed + validator |
| Remote 1 | Contabo, Germany | 10,000 VXS | |
| Remote 2 | Contabo, Germany | 10,000 VXS | Top producer |
| SG2 | OVH, Singapore | 10,000 VXS | |
| Mumbai | Contabo, India | 10,000 VXS |
Test Methodology (March 29)
Audit-grade Rust load tester (tools/loadtest-rs/) with pre-signed Ed25519 bundles. Each wallet sends exactly 1 bundle (nonce 0) — zero nonce contention by design. Wallet count auto-calculated from target TPS.
Transaction type: VXS transfers (10 per bundle, 1 nanoVXS each). Lightest operation type for pure throughput measurement.
Submission: Single RPC endpoint (localhost:9933), 128 concurrent async workers, token-bucket rate limiter at 100 bundles/sec. Bundles forwarded to leader via Dragonfly Stream direct routing.
Verification: Balance-delta checking (pre-test vs post-test wallet balances) + node execution logs as ground truth.
Results Summary (March 29)
| Metric | Value |
|---|---|
| Bundles submitted | 2,712 (100% RPC acceptance) |
| Bundles in blocks | 2,714 (block-level count) |
| Block span | 9 blocks (~27s) |
| Block-level TPS | 1,005 ops/sec |
| Submit rate | 90.4 bundles/sec (904 ops/sec) |
| Peak block | #1760860: 1,318 bundles (4,393 ops/sec) |
| Latency p50 / p99 | 0.3ms / 552ms |
Block-by-Block Breakdown
| Block | Bundles | Ops | Ops/sec |
|---|---|---|---|
| #1760860 | 1,318 | 13,180 | 4,393 |
| #1760861 | 301 | 3,010 | 1,003 |
| #1760862 | 285 | 2,850 | 950 |
| #1760863 | 281 | 2,810 | 937 |
| #1760864 | 448 | 4,480 | 1,493 |
| #1760865 | 81 | 810 | 270 |
Engine Execution Speed
From node execution logs (precise Instant::elapsed() timing):
| Block | Proposed | Executed | Time | Speed |
|---|---|---|---|---|
| #1759061 | 1,336 | 1,329 | 16ms | 83,062 bundles/sec |
| #1759155 | 266 | 266 | 3ms | 88,667 bundles/sec |
| #1759156 | 281 | 281 | 4ms | 70,250 bundles/sec |
| #1759428 | 641 | 641 | 15ms | 42,733 bundles/sec |
The execution engine processes bundles at 42,000–89,000 bundles/sec depending on block size. With 10 operations per bundle, this translates to 420,000–890,000 operations/second of raw processing speed.
Theoretical Maximum TPS
| Parameter | Value |
|---|---|
| Max bundles/block | 50,000 (100,000 in benchmark mode) |
| Ops per bundle | 10-50 (configurable) |
| Block time | ~2.2s (current), 100ms (adaptive under extreme load) |
| Max at 10 ops/bundle, 2.2s blocks | 227,000 TPS |
| Max at 10 ops/bundle, 100ms blocks | 5,000,000 TPS |
| Benchmark mode (100K bundles, 100ms) | 10,000,000 TPS |
These are theoretical ceilings. Real-world throughput depends on RocksDB I/O, network propagation, and client submission rate. The engine processes 830,000+ ops/sec — execution is not the bottleneck. Distributed multi-client testing across all 5 validator RPCs is needed to push observed TPS toward the ceiling.
Scaling Tiers (Deployed + Planned)
| Tier | Status | Changes | Ceiling |
|---|---|---|---|
| Tier 1: Config | Deployed (Mar 31) | 50K bundles, 100ms floor, 250ms high load | 500K TPS |
| Tier 2: Serialization | Partially deployed | Borsh wire encoding (live), WriteBatch pipelining (planned) | 500K-1M TPS |
| Tier 3: Architecture | Planned | Transaction lanes, block sharding, state commitment deferral | 1M+ TPS |
What Limits Current TPS
The blockchain execution engine has never been saturated. All throughput limits are client-side:
- Single-RPC submission: All bundles submitted to one node (Gravelines). Distributed submission across 5 RPCs would increase throughput ~5x.
- HTTP round-trip: 128 concurrent workers limited by TCP connection pool and serialization overhead.
- Dragonfly forwarding: ~75% of bundles delivered to leader on first attempt. Remaining arrive via bootnode relay.
What is NOT a bottleneck
- Execution speed: 830K+ ops/sec — engine idle >99% of the time
- RocksDB writes: WriteBatch commits in under 1ms. Bloom filters, 512MB cache, periodic flush (every 100 blocks) all deployed.
- Block capacity: Peak observed is 1,318 bundles (2.6% of 50K limit)
- Network gossip: Block propagation uses Borsh binary encoding (5-10x smaller than JSON). Across 4 continents in under 500ms.
- State reads: ElasticState hot tier provides sub-microsecond reads for active accounts
Historical Results (March 5, 2026)
Earlier Python-based load test with 500 wallets and 11 operation types:
| Metric | Value |
|---|---|
| Submitted | 12,361 (100% RPC acceptance) |
| On-chain success | 92% (sampled) |
| Peak block | 2,856 transactions |
| Submission TPS | 67.9 |
| Inclusion TPS | 144.5 |
| Operation types | 11 (transfers, swaps, intents, liquidity) |
This test was limited by Python client throughput and nonce collisions. The Rust load tester (March 29) eliminated both bottlenecks.
Current Testnet State
| Metric | Value |
|---|---|
| Block height | 1,803,000+ |
| Validators | 5 (4 continents) |
| VexVisor upgrades | 30+ |
| Continuous uptime | 33+ days |
| Block time | ~2.2s average |
| Node crashes | 0 |
Transaction Cost
| Operation | Gas | Cost (at $1/VXS) |
|---|---|---|
| VXS Transfer | ~21,000 | ~$0.00021 |
| Token Create | ~50,000 | ~$0.0005 |
| Swap | ~55,000 | ~$0.00055 |
| Bridge Deposit | ~100,000 | ~$0.001 |
| Name Registration | ~60,000 | ~$0.0006 + name fee |
Gas price: 10 nanoVXS per gas unit. Fees split: 80% to block proposer, 20% to Foundation Treasury.
Key Takeaways
- 1,005 sustained TPS proven with single-client submission — chain is not the bottleneck
- 830,000+ ops/sec engine throughput — execution completes in milliseconds per block
- 99.5% execution success with proper nonce management (1-wallet-per-bundle)
- ~$0.0002 per transaction — Solana-competitive fees
- Single-round BFT finality — 1 block (~2.2s) = final, no confirmations needed
- Zero crashes across 30+ binary upgrades and 1.8M+ blocks
- Theoretical ceiling: 500,000 TPS at current config, 1M+ TPS with planned Tier 2-3 optimizations
- Borsh binary wire protocol — 5-10x smaller block propagation across all validators
- ElasticState active — 3-tier intelligent storage with sub-microsecond hot reads