SEQUENCERS

Documentation for eth_defi.chain.SEQUENCERS data.

SEQUENCERS: dict[int, dict[str, str]] = {10: {'public_rpc': 'https://mainnet.optimism.io', 'sequencer': 'https://mainnet-sequencer.optimism.io'}, 8453: {'public_rpc': 'https://mainnet.base.org', 'sequencer': 'https://mainnet-sequencer.base.org'}, 42161: {'public_rpc': 'https://arb1.arbitrum.io/rpc', 'sequencer': 'https://arb1-sequencer.arbitrum.io/rpc'}, 84532: {'public_rpc': 'https://sepolia.base.org', 'sequencer': 'https://sepolia-sequencer.base.org'}, 421614: {'public_rpc': 'https://sepolia-rollup.arbitrum.io/rpc', 'sequencer': 'https://sepolia-rollup-sequencer.arbitrum.io/rpc'}, 11155420: {'public_rpc': 'https://sepolia.optimism.io', 'sequencer': 'https://sepolia-sequencer.optimism.io'}}

L2 sequencer and official public RPC endpoints.

Many L2 chains have a centralised sequencer that processes transactions. Broadcasting directly to the sequencer (or the chain’s official single-endpoint public RPC) avoids issues with load-balanced RPCs like drpc.live where different backend nodes may return inconsistent state.

Each entry maps a chain ID to a dict with:

  • sequencer: write-only endpoint for eth_sendRawTransaction. Arbitrum sequencers only support eth_sendRawTransaction (no reads: no eth_chainId, eth_getTransactionReceipt, etc.). OP Stack sequencers (Base, Optimism) run a full op-geth but may return 403 on read calls under load. Use with the mev+ prefix in create_multi_provider_web3().

  • public_rpc: official single-endpoint RPC that supports both reads and writes. Suitable for forge create which needs eth_chainId, eth_gasPrice, eth_getTransactionReceipt etc. These avoid the receipt-polling issue on load-balanced providers (see forge.py docstring on foundry#1362).

Sources: