Benchmarking Blockchain
While each has its own theoretical finality, an important question for devs is "how long does it actually take for my app that a transaction is final". In this post, we send transactions across 6 different chains and waited for them to be final to compare them empirically
Understanding Finality in Blockchain
When you send a transaction on a blockchain, how long does it take to be truly final? This question is critical for developers building applications, especially those requiring fast confirmations like payments, gaming, or DeFi.
There are two main types of finality:
- Soft Finality (Optimistic): The transaction is included in a block and is unlikely to be reversed, but there's still a small chance of reorganization
- Hard Finality: The transaction is irreversibly committed to the blockchain with cryptographic guarantees
For example, here are the theoretical finality times for 6 popular blockchains:
| Blockchain | Optimistic Finality | Hard Finality | Validators/Nodes | Hardware Requirements |
|---|---|---|---|---|
| NEAR Protocol | 600ms | 1.2 seconds | ~350 | 8 cores, 8GB RAM, 1TB SSD |
| Aptos | 130ms | 650ms | ~135 | 32 cores, 64GB RAM, 3TB SSD |
| Arbitrum | 250ms | ~15 minutes | 1 sequencer | 4 cores, 16GB RAM, NVMe SSD |
| Ethereum Sepolia | 2.4 minutes (12 blocks) | ~15 minutes | ~12.000-10.000 | 4 cores, 16GB RAM, 2TB SSD |
| Solana | 400-600ms | 13 seconds | ~820 | 12 cores, 256GB RAM, 2TB SSD, 1Gbps |
| Sui | 500ms | 500ms | ~125 | 24 cores, 128GB RAM, 4TB NVMe |
Real-World Performance Benchmark
Despite what the theoretical numbers say, real-world performance can differ due to network conditions, node performance, and other factors. To get a clearer picture, we conducted a benchmark test across six different blockchains.
To put this to the test, we built simple benchmarking scripts which make 30 transactions on each network, and look to see how long it takes for both optimistic and hard finality.
To be as fair as possible, we:
- used testnet networks on all chains
- made a simple transfer of native tokens to avoid complexities of smart contracts
- used free and public RPC endpoints
What Does Optimistic Finality Actually Mean?
It is important to remark that there is not a single definition on what optimistic finality means, and it can vary between blockchains. Here's how each blockchain in our benchmark defines optimistic finality:
NEAR Protocol
On NEAR, we measure EXECUTED_OPTIMISTIC which is reached when the transaction is included in a block and all non-refund receipts have finished their execution. According to the official documentation, at this stage "the transaction is included into the block + all non-refund transaction receipts finished their execution," though the corresponding blocks may not yet be finalized. This represents an optimistic state where execution is complete but blocks are still being finalized by the network.
Aptos
For Aptos, optimistic finality is measured as the time when the transaction is submitted and the transaction hash is returned, without waiting for confirmation. This represents the fastest possible response but with the least guarantees. For hard finality, we use waitForTransaction which waits until the transaction is committed to the blockchain and execution succeeds.
Solana
Solana uses the confirmed commitment level for optimistic finality, which means 66%+ of the validator stake has voted on the block. For hard finality, the finalized commitment level requires 31+ confirmed blocks to be built on top of the transaction's block, making it economically irreversible.
Sui
On Sui, optimistic finality uses WaitForLocalExecution which waits for the local node to execute the transaction. For hard finality, WaitForEffectsCert waits for an effects certificate, which is a guarantee that the transaction will be included in a checkpoint and cannot be reverted.
Ethereum Sepolia & Arbitrum
For EVM chains, optimistic finality is measured using block confirmations - 12 confirmations for Sepolia and 1 confirmation for Arbitrum. Hard finality uses Ethereum's finalized block tag, which indicates the block has been accepted as canonical by more than 2/3 of validators, typically occurring after two epochs (~12-13 minutes for Ethereum).
Results
Here is a summary of the average finality times observed during our benchmark:
| Blockchain | Optimistic Finality | Hard Finality |
|---|---|---|
| NEAR Protocol | 2352ms ± 305ms | 3499ms ± 244ms |
| Aptos | 200ms ± 5ms | 618ms ± 40ms |
| Arbitrum | 2213ms ± 312ms | 1440021ms ± 161901ms |
| Ethereum Sepolia | 151618ms ± 15050ms | 1150564ms ± 5918ms |
| Solana | 938ms ± 252ms | 12973ms ± 279ms |
| Sui | 1493ms ± 77ms | 3152ms ± 30ms |
Additional Context
While conducting this benchmark, we discovered that Aptos achieved similar comparable performance testing.
Resources
The complete benchmark data and analysis tools are open source and available on GitHub:
- Benchmark Data: matiasbenary/benchmarks - Raw benchmark results and histograms
- Network Analyzer: matiasbenary/networksAnalizer - Tool used to measure and analyze finality across different networks
Want to build on NEAR? Check out our developer documentation to get started.
