Paxeer Docs logo

Finality and Block Tags

Paxeer's Twin Turbo Consensus delivers instant finality, so latest, safe, and finalized block tags all resolve identically with no reorg risk.

Finality and Block Tags

Paxeer uses Twin Turbo Consensus, which provides instant finality. Every committed block is final immediately - there is no period where a block could be reorganized away.

This changes how block tags behave compared to Ethereum.

Block Tags

On Ethereum, latest, safe, and finalized refer to different points in the chain:

  • latest - the most recent block, possibly not yet safe
  • safe - a block unlikely to be reorganized
  • finalized - a block that is permanently committed

On Paxeer, all three tags resolve to the same block. There is no reorg risk at any point after a block is committed, so the distinction does not exist.

viem
import { createPublicClient, http } from 'viem';
import { sei } from 'viem/chains';

const client = createPublicClient({ chain: sei, transport: http() });

// All three return the same block on Paxeer
const latest    = await client.getBlock({ blockTag: 'latest' });
const safe      = await client.getBlock({ blockTag: 'safe' });
const finalized = await client.getBlock({ blockTag: 'finalized' });
ethers
import { ethers } from 'ethers';

const provider = new ethers.JsonRpcProvider('https://evm-rpc.sei-apis.com');

// All three return the same block on Paxeer
const latest    = await provider.getBlock('latest');
const safe      = await provider.getBlock('safe');
const finalized = await provider.getBlock('finalized');

Waiting for Confirmation

Because finality is instant, you do not need to wait for multiple confirmations. waitForTransactionReceipt resolves as soon as the transaction is included in a block.

viem
const receipt = await client.waitForTransactionReceipt({ hash });
// receipt is already final - no further confirmation needed
ethers
const tx = await signer.sendTransaction({ /* ... */ });
const receipt = await tx.wait(1); // 1 confirmation is final on Paxeer

Pending State

Paxeer does not expose Ethereum-style pending state. Do not rely on:

  • Reading pending transactions from the mempool
  • eth_getBlockByNumber with 'pending'
  • Pending nonce differing from the confirmed nonce

If your application polls pending transactions or depends on pending state visibility, replace that pattern with confirmed-block polling or WebSocket subscriptions on committed blocks.

Practical Impact

PatternOn EthereumOn Paxeer
Wait for finalized tagWaits ~13 minutesReturns immediately
Check safe vs latestDifferent blocksSame block
Read pending mempoolSupportedNot reliable
Confirmation countMeaningful1 is sufficient