$ txfinality measure --chain solana --runs 20 ✓ 20 of 20 transfers reached finalized · 18 Oct 2026 21:18 UTC · srv2, Falkenstein DE · rpc solana-mainnet.infura.io slowest: confirmed 1.1 s · finalized 8.1 s · 1 USDC each, one at a time levels: processed 1.1 s → confirmed 1.1 s → finalized 8.1 s saved runs/solana/2026-10-18T2118Z.json
"Confirmed" is what wallets show; "finalized" is the rooted slot, about thirty-two slots later, which the docs call about thirteen seconds. Both are real, and they are seconds apart.
A block the cluster recognizes as finalized with maximum lockout, meaning it has reached the strongest confirmation state used by the network.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
// measure/run.ts, watchOne — the loop that produced the numbers above
while (t.failed === undefined && t.levels[final] === undefined) {
if (performance.now() - from > capMs) return;
const statuses = await driver.status([t.id]);
const now = performance.now();
t.polls++;
const s = statuses.get(t.id);
if (s) {
for (const level of reached(driver.levels, s.level)) {
if (t.levels[level] === undefined) {
t.levels[level] = Math.round(now - from) / 1000;
say(log, ` ${level.padEnd(12)} ${t.levels[level]}s`);
}
}
if (s.failed !== undefined) {
t.failed = s.failed;
say(log, ` failed on chain: ${s.failed}`);
}
}
await sleep(pollMs);
}Sub-half-second blocks and a finality vote two blocks later. The number to trust is the second one. The dollar here is USDT as Binance issues it on its chain (BSC-USD), which is what everyone on BNB Chain uses. Not measured yet.
With Fast Finality enabled (since the Plato upgrade), the chain is finalized within two blocks if ⅔*N or more validators vote normally. At the current block time of 0.45 seconds, this means finality is achieved in approximately 1.125 seconds.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
The EVM of an exchange chain: blocks every second, committed by HyperBFT, and no later level named. One level, and it is fast, if the docs are right. Not measured yet.
The HyperEVM consists of EVM blocks built as part of Hyperliquid's execution, inheriting all security from HyperBFT consensus.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
A rollup: the sequencer answers in two seconds (and in 200 ms if you read its flashblocks), Ethereum makes it final about twenty minutes later. Which one you need depends on whom you are trusting. Not measured yet; the figures are the docs' own.
After roughly 2 minutes, a Base batch containing the transaction has been posted to Ethereum.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
Same shape as Base: instant from the sequencer, final on Ethereum's clock, a quarter of an hour. Not measured yet; the figures are the docs' own.
Hard finality—the `safe` and `finalized` tags—is inherited from the parent chain and is what makes a block reorg-proof.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
Blocks come quickly, but a milestone is what makes them final, and the docs now put that at two to five seconds. The checkpoint to Ethereum comes later and is a separate matter. Not measured yet.
Milestones typically finalize a transaction within 2 to 5 seconds.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
OKX's chain, now on the OP Stack with the AggLayer. One-second blocks; what final means on Ethereum, the docs do not yet say in numbers. Not measured yet.
Fast execution happens on L2 with 1-second block times.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
Accepted is final, the docs say, in about a second; the RPC's finalized tag points one step later, at the block whose execution results are themselves accepted. Not measured yet.
In Avalanche, acceptance/rejection are final and irreversible and only take a few seconds.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
A new chain made for stablecoins, with native USDC. Its docs promise finality in seconds and say the consensus design is still subject to change; the runs will say. Not measured yet.
Block finality is achieved in seconds with minimal communication overhead, and validator selection is driven by a simplified Proof of Stake system optimized for performance and predictable behavior.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
A ledger closes every few seconds and a validated ledger is final; there is nothing after it. Old, simple, and it has not changed. Not measured yet: the driver is to be written; the figure is the docs' upper bound.
When the network agrees on the contents of a ledger version, that ledger version is validated , and its contents can never change.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
An Arbitrum chain run by Robinhood. Its docs list no USDC or USDT, only Paxos's USDG, so that is the dollar this row would move. Final means Ethereum, minutes after posting. Not measured yet.
Full finality — your transaction inherits Ethereum's security and is irreversible.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
One level: committed is final, and the docs say it takes under a second end to end. Not measured yet: the driver is to be written; the figure is the docs' own.
A successful payment is final as soon as the transaction commits (BFT consensus, no extra block confirmations).
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
A shard block is quick, and the masterchain block that seals it is what the docs call final: about a second, they say. One level counts, and it is fast. Not measured yet: the driver is to be written; the figure is the docs' own.
TON achieves transaction finality after a single masterchain block confirmation, typically within 1 second.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
Circle's own chain, with USDC as the gas. Two states and nothing between: pending, then final, in under a second by its docs. Below the cut by stablecoins held today; listed because it is new and built for exactly this. Not measured yet.
Arc uses a two-state transaction model. A transaction is either pending (in the mempool) or final (included in a committed block). There is no intermediate "confirming" state and no concept of accumulating confirmations.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
By design: a block every three seconds, but the docs call that pending; the only level Tron stands behind is "solidified", nineteen producers later, about a minute. Nothing in between to measure, so it is listed with its docs, like Ethereum.
Blocks become irreversible — solidified — once at least 19 distinct active SRs have each produced a block at that height or above, typically in about 1 minute.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
By design: a slot every twelve seconds, and a block is finalized once the checkpoint after its epoch's checkpoint is justified. The docs give the mechanism and the slot, not the minutes; the 6.4 and 12.8 minutes here are arithmetic on them. Faster finality is a research track, not a setting. Not measured.
Time in proof-of-stake Ethereum is divided into slots (12 seconds) and epochs (32 slots).
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
By design: a block about every ten minutes, and six of them is the custom, which the docs themselves call somewhat arbitrary. Holds no major stablecoin, so the rule leaves it out; shown because it is the chain everyone asks about. Not measured.
6 confirmations: The network has spent about an hour working to protect the transaction against double spends and the transaction is buried under six blocks.
the chain’s docs ↗ · read 18 Oct 2026 · next read 18 Nov · why the figure differs ↗
The chain's own last level: once a transfer is there, nothing in the chain's rules can undo it. Each chain names it differently — Solana calls it finalized (the slot is rooted), Tron solid, a rollup is final when its batch is finalized on Ethereum. The row's details print the chain's own name for it.
The figure is the slowest of the 20 transfers in the latest run, sent one at a time, so the true time is at or below it — that is the ≤. Milliseconds under a second, seconds under two minutes, minutes above. A chain whose final takes minutes by design is listed with ≈ and its documented figure, and not measured.
The earliest level at which the chain itself says the transfer will not be dropped — the level wallets show and exchanges act on. Solana's confirmed, a rollup's sequencer confirmation, a BNB block.
When a chain's final takes longer than three seconds but done is under three, done is printed in black with a green mark: on those chains a fast use case still works, if you accept the chain's word for done. When final itself is under three seconds, done is left quiet.
The docs describe the design: a block every so many milliseconds, final after so many blocks. The figure is the whole path as a sender meets it: signing on our machine, the RPC's queue, inclusion, the chain's own confirmation rule, and the RPC answering our poll — the slowest of twenty tries. The gap between the two is the point of the page.
Every row quotes the chain's claim beside its measurement, with the date the docs were read. When the two disagree by more than twice, the row says so and the change appears under what changed. If you think we measured the wrong level, run it yourself or report a correction.
next below the cut · tempo 0.72 · monad 0.70 · arc 0.67 · op mainnet 0.60 · stellar 0.54 · mantle 0.54 · sui 0.50 · $bn stablecoins · 18 Oct 2026
A chain enters at the first run after it crosses the line, and leaves one run after it falls below. If yours holds more than the fifteenth chain here, it is on its way; if it does not, you can still run it yourself today with the same code, and we will gladly link your run.
Because their docs already answer the question, in minutes: Ethereum is final after two epochs, 12.8 minutes or more; Bitcoin's custom is six blocks, about an hour. Measuring them would only confirm the docs. They are listed in their place, with the docs, so that nobody has to ask where they went.
A figure that was true for every transfer in the run. An average hides the one you would have hit; a median hides half of them. If you need the distribution, every transfer is in the run file, with its hash.
A dollar is the smallest transfer anyone makes, and a plain token transfer is the simplest practical transaction, so nothing in it but the chain is being timed. Each one goes alone and is watched until it is final before the next is sent. One machine with a named RPC provider makes the runs comparable with each other — both are part of the number, so both are printed in every run. Your machine and your RPC will give you your number: run it yourself.
Yes — for one chain, a handful, or all. The code is the code behind every figure here. With one wallet of yours and an RPC URL:
git clone https://github.com/burmisov/txfinality.com cd txfinality.com && npm install cp .env.example .env # your RPC URL for the chain; never committed npx txfinality wallet --chain solana # a sender into .env; fund it with a little SOL and 20 USDC npx txfinality measure --chain solana --runs 20 # → runs/solana/<stamp>.json, with the hashes; funds come back
The runner makes its own recipient, returns the USDC and closes the accounts afterwards. Or hand the README to your agent and ask it for your chain's numbers. Something wrong on the page: report a correction.
Sergey Burmisov. "Final in N seconds" is a claim every chain makes and nobody measures the same way; this page measures it the same way for all of them and shows its work. It grew out of building a router for stablecoin transfers, where the real finality time is the number that matters.