Why it matters
“Included in a block” and “final” are not the same thing. A block can, in rare cases, be replaced by another block at the same height. A final block can’t be. Apps that move value, such as a bridge, an exchange or a payment checkout, should wait for finality. A simple counter app doesn’t need to.How it works
Block production
BOT Chain’s docs describe its consensus as Parlia, the engine from BNB Smart Chain, with a difficulty-based fork choice and FFG (Casper’s “friendly finality gadget”) for finality. BOT Chain’s homepage describes it as hybrid SPoA consensus. See the JSON-RPC page and botchain.ai. In practice:- A fixed set of validators takes turns producing blocks.
- Each validator produces several blocks in a row before handing over, as described in BEP-341. On 2026-10-01 each validator produced 16 consecutive blocks on both networks.
- A new block arrives about every 0.75 seconds. BOT Chain’s homepage states this, and we measured exactly 750 seconds for 1,000 blocks on both networks on 2026-10-01.
Finality
Validators vote on recent blocks. Once enough validators have voted, a block is justified, and then finalized. A finalized block can’t be reverted without a large share of validators breaking the rules and being penalized for it. BOT Chain’s homepage describes average finality of about 0.9 seconds. Rather than rely on a fixed number, ask the node which block is final. The standard JSON-RPC block tags do this:
In our checks on 2026-10-01,
finalized was usually 1 to 2 blocks behind latest on both networks, and safe was 1 block behind. At 0.75 seconds per block, that means a transaction was final within a couple of seconds.
Check finality from your code
finalized block:
wait-final.js
How long should my app wait?
Related pages
Gas and fees
What transactions cost.
JSON-RPC
Every method the RPC supports.
Bridge tracking
Follow a transfer across chains.
What is BOT Chain
The bigger picture.