Skip to main content

Configure Sequencer timing adjustments

To configure sequencer timing parameters when launching an Arbitrum chain, you'll primarily adjust settings in two places:

  1. Chain-level parameters: Set during deployment via the Chain SDK, affect seqeuencer behavior boundaries.
  2. Node-level parameters: Set when running your Nitro sequencer node—these control runtime behavior, such as block production speed and batch posting.

Most timing tweaks happen at the node level for the sequencer. Use the official Arbitrum Chain SDK to generate a base node config JSON, then override specific fields, or pass flags directly when running the nitro-node Docker image.

Key Sequencer Timing parameters to adjust

ParameterLocationDefaultHow to configureWhy adjust
Block time/maximum block speedNode (execution.sequencer)250msIn node config JSON: "execution": { "sequencer": { "max-block-speed": "250ms" } } or CLI flag: --execution.sequencer.max-block-speed=250msFaster blocks for higher TPS. Slower for less state bloat, easier on indexers/nodes to keep up.
Batch poster max delayNode (node.batch-poster)Varies (often ~seconds)In node config JSON: "node": { "batch-poster": { "max-delay": "5s" } } or CLI: --node.batch-poster.max-delay=5sControls max time to wait before posting a batch (even if not full). Lower value for more frequent posts, lower finality latency on parent chain. Higher for fewer posts, lower parent chain costs (good for low-traffic chains).
Batch poster max sizeNode (node.batch-poster)~90,000-100,000 bytesCLI example: --node.batch-poster.max-size=120000Larger batches for more efficient posting. Combine with max-delay for balance.
Delayed sequencer finalize distanceNode (node.delayed-sequencer)Higher (e.g., waits for full parent chain finality)CLI: --node.delayed-sequencer.finalize-distance=1 and enable: --node.delayed-sequencer.enable=trueLower value for near instance deposits (~seconds instead of minutes). Trade-off: minor re-org risk on parent chain.
Sequencer inbox max time variationChain deployment (sequencerInboxMaxTimeVariation)delayBlocks: 5760, futureBlocks: 12, delaySeconds: 86400, futureSeconds:3600In Chain SDK config struct or chainConfig JSON during deployment.Allows sequencer minor timestamp adjustments to avoid re-orgs if batch posting lags. Rarely needs change from defaults.
Timeboost non-express delayNode (execution.sequencer.timeboost)200msIn node config: "execution": { "sequencer": { "timeboost": { "non-express-delay-msec": 300 } } }Larger delay for more advantage/revenue for express lane winner. Increases latency for regular transactions.

Step-by-step configuration process:

  1. Deploy your chain first: using the Chain SDK, this sets immutable params like sequencerInboxMaxTimeVariation.
  2. Generate base node config: Use the Chain SDK:
import { prepareNodeConfig } from '@arbitrum/orbit-sdk';

const nodeConfig = await prepareNodeConfig({
// Your deployment tx receipt or params
// Override defaults here, e.g.:
execution: {
sequencer: {
maxBlockSpeed: '100ms', // Faster blocks
},
},
node: {
batchPoster: {
maxDelay: '2s', // More frequent posting
},
},
});
// Write nodeConfig to file: nodeConfig.json
  1. Run the sequencer node:
  • Use Docker (recommended):
docker run -v /path/to/nodeConfig.json:/config/nodeConfig.json \
offchainlabs/nitro-node:<latest Nitro version> \
--conf.file=/config/nodeConfig.json \
--node.sequencer=true \
--execution.sequencer.enable=true \
# Add other required flags (parent-chain URL, chain info-json, keys, etc.)
Latest version of Nitro

You can find the latest recommended version of Nitro on the Run a Node page.

  • or override via CLI flags for testing
  1. Test changes on a devnet or testnet first—monitor TPS, state growth, posting costs, and deposit latency.

For a full list of flags, run nitro-node --help. Refer to Arbitrum Docs sections on Running a Sequencer Node and How to configure your Arbitrum chain's node using the Chain SDK for your exact version. If using Timeboost or advanced features, additional setup (e.g., auction contract) is needed.