Benchmark Methodology
To ensure performance metrics are rigorous, reproducible, and representative of real-world network conditions, Altius utilizes a custom suite of utilities known as Altius Benchtools. This suite consists of two primary components: the Transaction Generator for workload synthesis and the Profiler for granular execution tracing.
Synthetic Workload Generation
Performance data is derived from synthetically generated block data that mimics specific network behaviors. The system utilizes the transaction_generator tool to create deterministic pre-states and transaction lists.
Defining Conflict Rates (c0, c20, c50)
A critical variable in these benchmarks is the Conflict Rate (c), which measures the frequency at which transactions compete for the same state, such as writing to the same storage slot or account balance.
Logic: The generator accepts a
c(conflict) flag. This percentage defines the probability of a transaction targeting a specific "hot" pool or account versus a random, non-overlapping address.c0 (0% Conflict): Represents ideal parallelism where no two transactions touch the same state.
c20 (20% Conflict): Represents standard traffic, consisting of a mix of independent transfers and popular decentralized exchange interactions.
c50 (50% Conflict): Represents high contention, simulating volatility events or high-demand minting where half of the block interacts with a single contract.
Workload Types
Our generator supports two primary patterns used in benchmarks:
Simple Transfers
Basic ETH/ERC20 transfers. Used to baseline raw throughput.
transfer -y o2m
Uniswap Simple
Complex DeFi swaps using original Uniswap V2 contracts. This tests the engine's ability to handle nested calls and storage updates.
uniswap -y simple
Reproduction Command
To reproduce the Uniswap Simple (c0) dataset used in our benchmarks:
# Generate 1,000 Uniswap transactions with 0% conflict (Ideal Parallelism)
./target/release/generate uniswap -y simple -t 1000 -c 0To reproduce the High Contention (c50) scenario:
Execution Profiling
To accurately measure Time-to-Block and TPS, we utilize the profiler tool. This embeds directly into the RPC server to capture multi-threaded execution traces without the overhead of external monitoring tools.
Metric Definitions
Execution Time: Measured via
profiler::start("task_name")andprofiler::end, strictly capturing the compute time for transaction processing.E2E Time (End-to-End): Captures the full lifecycle, including:
Transaction decoding
State root calculation
Database commit overhead
Client Latency: The total round-trip time experienced by the client submitting the workload.
Output Verification
The profiler outputs a verified JSON trace containing exact timestamps for every thread worker, ensuring that Speedup metrics account for the overhead of thread synchronization and do not ignore setup costs.
JSON
Last updated

