Vexidus Load Test Results
Latest: July 2026 — relaunched on BFT consensus (fresh genesis). A sustained-TPS benchmark on the new consensus is in progress. Network: 7-validator testnet across 4 continents Protocol: BFT consensus with deferred execution, Dragonfly Stream (mempoolless direct delivery)
Throughput
Vexidus provides instant, deterministic BFT finality (a committed block is final — no confirmations) and a high-throughput native execution engine. A sustained-TPS benchmark on the current consensus is in progress; we do not publish throughput numbers we have not re-verified.
| Metric | Value |
|---|---|
| Finality | Deterministic BFT — a committed block is final, typically well under two seconds |
| Block time | Sub-second to ~1.5s (7 validators, 4 continents) |
| RPC rejection | 0% (all bundles accepted) |
Network Configuration
| Parameter | Value |
|---|---|
| Validators | 7 (across 4 continents) |
| Block time | sub-second to ~1.5s (consensus-set under BFT) |
| Max tx/block | 50,000 (configurable via --max-txs-per-block) |
| 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
The network relaunched on BFT (fresh genesis, July 2026) with 7 validators across 4 continents. The table below reflects the prior 5-validator configuration.
| 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 (June 2026)
The measured results in the following sections (methodology, results summary, block-by-block, and engine execution speed) were measured on the prior immediate-execution consensus; superseded by the relaunch — re-benchmark pending.
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 (June 2026)
| 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.
Throughput Ceiling
Under BFT, block cadence is consensus-set (round timeout + 2f+1) rather than driven by a fixed producer interval, so prior throughput ceilings derived from that interval no longer apply and have been retired. A sustained-TPS benchmark on the current consensus is in progress; we do not publish throughput numbers we have not re-verified.
The execution and storage stack that supports high throughput remains in place: bundle-batched native execution, RocksDB with bloom filters and write buffering, Borsh binary wire encoding, and ElasticState tiered storage.
What Limits Throughput
In load tests on the prior consensus, the execution engine was never the bottleneck — the limits were client-side. Those characteristics of the submission path still hold:
- Single-RPC submission: All bundles submitted to one node (Gravelines). Distributed submission across 7 RPCs would increase throughput proportionally.
- 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: the engine sat idle the vast majority of the time during load tests
- 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)
(Measured on the prior immediate-execution consensus; superseded by the relaunch — re-benchmark pending.)
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 |
|---|---|
| Network | Relaunched on BFT consensus (fresh genesis, July 2026) |
| Validators | 7 (4 continents) |
| Finality | Deterministic BFT — a committed block is final |
| Block time | sub-second to ~1.5s |
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
- Deterministic BFT finality — a committed block is final, typically well under two seconds, no confirmations needed
- Sub-second to ~1.5s blocks across 7 validators on 4 continents
- High-throughput native execution engine — a sustained-TPS benchmark on the current consensus is in progress; we do not publish throughput numbers we have not re-verified
- ~$0.0002 per transaction — Solana-competitive fees
- Borsh binary wire protocol — 5-10x smaller block propagation across all validators
- ElasticState active — 3-tier intelligent storage with sub-microsecond hot reads