L3/appchain development based on Arbitrum Orbit
Arbitrum Orbit is a framework for running your own L2 or L3 network using Arbitrum's rollup technology. If your protocol hits gas costs on L2, needs custom execution logic unavailable on EVM-compatible networks, or requires complete mempool isolation — Orbit appchain may be the right solution. But this is not "press button — get blockchain". This is months of infrastructure work with serious operational requirements in production.
What Orbit is and when it makes sense
Orbit lets you create an AnyTrust chain or Rollup chain with your network as settlement layer:
- L2 Orbit — settles on Ethereum L1. Classic rollup or AnyTrust DAC.
- L3 Orbit — settles on Arbitrum One/Nova (L2). This is the typical "appchain" — cheaper, faster, but inherits security assumptions of L2.
Rollup mode — full validity, all data published on parent chain. High security, higher operational costs (da costs).
AnyTrust mode — data stored in Data Availability Committee (DAC) — N of M trusted nodes. Much cheaper, but has trust assumption on DAC members. Used for gaming, social, high-frequency trading apps. Arbitrum Nova is an AnyTrust example.
Orbit makes sense if:
- Need custom gas token (your protocol's native token instead of ETH)
- Require custom precompile (custom logic at EVM level, unavailable through contracts)
- Need mempool privacy (only your sequencer)
- Transaction volume leads to > $50k/month gas costs on L2
- Need guaranteed throughput and predictable gas price
Orbit doesn't make sense if: you just want cheaper — Arbitrum One or Base are cheap enough for most cases.
Technical components of Orbit stack
Nitro node
Arbitrum Orbit uses Nitro — reworked Arbitrum core with Geth under the hood, compiled to WASM (Arbitrum's WAVM). Sequencer and validator — these are Nitro nodes with different configurations.
Sequencer — accepts and orders transactions, publishes batches to parent chain. This is centralized component in standard configuration. For decentralized sequencing (still in development at Arbitrum) — separate story.
Validator/staker — verifies sequencer assertions, stakes ETH as collateral for correct behavior. Important: at least one honest validator is sufficient for fraud proof security.
Data Availability — for Rollup mode batches published to L1 calldata or EIP-4844 blobs (Dencun). For AnyTrust — DAS (Data Availability Server) in DAC.
Contracts on parent chain
Orbit deploys set of contracts on parent chain (Ethereum or Arbitrum L2):
RollupCore ← main rollup contract
SequencerInbox ← receives batches from sequencer
Bridge ← standard cross-chain bridge
Inbox ← L1→L3 messages
Outbox ← L3→L1 withdrawals
ChallengeManager ← fraud proof mechanism
Deploy through orbit-sdk (TypeScript) or nitro-contracts:
import { createRollupPrepareConfig } from '@arbitrum/orbit-sdk';
const config = createRollupPrepareConfig({
chainId: BigInt(412346), // your chain ID
owner: deployer.address,
chainConfig: {
chainId: 412346,
homesteadBlock: 0,
// ... rest of genesis parameters
},
});
Custom configuration
Custom gas token. Replace ETH with ERC-20 token for gas payment. Requires CustomFeeToken contract deploy and sequencer configuration. Important: this token must have liquidity for parent chain cost payment — needs bridge or market maker.
// In chain config
{
"nativeToken": "0x...", // ERC-20 token address
}
Custom precompiles. Add functionality not present in standard EVM. Example: built-in ZK proof verification, VRF, custom cryptography. Implemented as Go code in Nitro node at addresses 0x...64+. Requires Nitro fork.
Sequencer whitelist. Allow transactions only from specific addresses — for permissioned appchains.
Bridges and cross-chain messaging
Standard Orbit bridge is slow for withdrawals: 7-day challenge period for Rollup (for AnyTrust — faster, depends on DAC config).
Canonical bridge (retryable tickets):
// L1 → L3 deposit
IInbox(inbox).createRetryableTicket{value: msg.value}(
to, // recipient on L3
l2CallValue, // ETH for L3
maxSubmissionCost,
excessFeeRefundAddress,
callValueRefundAddress,
gasLimit,
maxFeePerGas,
data
);
Third-party bridges (Layerswap, Connext, Hyperlane) — for fast withdrawals without 7-day wait. Needs separate integration.
Cross-chain messaging through Hyperlane or LayerZero — for general purpose messages between your appchain and other networks.
Sequencer and decentralization
This is the main operational vulnerability point. If your sequencer goes down — network doesn't process transactions. Standard architecture:
[Primary Sequencer]
↓
[Hot Standby Sequencer] ← failover in < 30 sec
↓
[Force Inclusion] ← users can include directly in SequencerInbox through L1
Force inclusion — safety mechanism: if sequencer ignores transaction longer than MAX_DELAY_BLOCKS (default 7200 blocks ≈ 24 hours), user can include it directly through L1. This prevents sequencer censorship.
For production sequencer: multi-region deploy (AWS + GCP), automatic failover, latency monitoring to parent chain.
Fraud Proofs and security
Orbit uses interactive fraud proofs (BOLD protocol in new versions) — assertion challenging through bisection. Complex mechanism but key security guarantee.
Challenge window. In Rollup mode: 6.4 days (standard). Within this time any validator can challenge incorrect assertion.
Validator requirements. Validator must have access to full node with block history, enough ETH for staking (minimum determined by contract).
Trusted setup. Initially: contract owner has upgrade rights. Recommended: timelock + multisig, then — gradual decentralization.
DA layer choice
| Option | Cost | Security | Suitable for |
|---|---|---|---|
| Ethereum calldata | ~$0.01-0.1/kb | L1 security | Financial protocols |
| EIP-4844 blobs | ~$0.001-0.01/kb | L1 security (with TTL) | Most cases |
| AnyTrust DAC | ~$0.0001/kb | Trust in DAC | Gaming, social |
| Celestia | ~$0.0001/kb | Separate DA layer | High throughput |
| EigenDA | ~$0.001/kb | EigenLayer restaking | Enterprise |
For L3 settling on Arbitrum One using EIP-4844 — optimal balance of cost and security for most appchains.
Monitoring and operations
Mandatory metrics:
nitro_sequencer_batch_poster_last_sent_block # when last batch sent
nitro_arb_node_inbox_messages_delivered_count # incoming queue
nitro_tx_streamer_messages_count # transactions processing
nitro_sequencer_message_count # processed messages
Alerts:
- Sequencer didn't send batch > 10 minutes → critical
- Validator lag from head > 100 blocks → warning
- Gas balance sequencer < 0.5 ETH → critical (batch posting falls)
- Parent chain RPC latency > 2s → warning
Technology stack
| Component | Technology |
|---|---|
| Node software | Arbitrum Nitro (Go) |
| SDK | @arbitrum/orbit-sdk (TypeScript) |
| Smart-contracts | nitro-contracts (Solidity) |
| Deploy infrastructure | Kubernetes + Helm charts |
| Monitoring | Prometheus + Grafana + Pagerduty |
| DA (AnyTrust) | DAS server + nitro das |
Implementation timeline
Phase 1 — Design (2 weeks). Choose mode (Rollup/AnyTrust), DA layer, settlement chain, chain config parameters, gas token tokenomics.
Phase 2 — Testnet (3-4 weeks). Deploy contracts on Arbitrum Sepolia, run sequencer + validator, test bridge, basic monitoring.
Phase 3 — Integrations (2-3 weeks). Customization (precompiles, gas token, whitelist), block explorer integration (Blockscout), bridge UI.
Phase 4 — Mainnet prep (2 weeks). Security review of contracts, multisig setup for owner, production monitoring, ops runbook.
Phase 5 — Mainnet launch (1 week). Deploy, liquidity migration, public launch.
Total: 10-12 weeks to mainnet. After launch — ongoing operational load: sequencer monitoring, gas balance top-ups, node software updates.







