Spin up a sovereign rollup locally

Before deploying to mainnet or testnet, verify your L3 appchain boilerplate works on localhost. This step confirms your environment is configured correctly and the rollup logic executes as expected.

1
Clone the repository
Run git clone https://github.com/l3boilerplate/sovereign-rollup.git to fetch the latest boilerplate code. Navigate into the directory with cd sovereign-rollup . This ensures you are working with the current 2026 release.
2
Install dependencies
Execute npm install or yarn to download all required packages. The boilerplate includes specific dependencies for OP Stack compatibility and ZK proof verification. Wait for the process to complete before proceeding.
3
Configure environment variables
Copy .env.example to .env and fill in the required fields. Set L2_OUTPUT_ORACLE_ADDRESS to 0x0 for local testing. Ensure NODE_URL points to your local Ethereum node (e.g., http://localhost:8545 ).
4
Start the local node
Run npm run start:local . This command launches the sequencer and the execution layer simultaneously. Watch the terminal for the message Rollup is running on localhost:8545 .
5
Verify the deployment
Send a test transaction to the local node using a tool like Hardhat or Etherscan's local interface. Check the block explorer at http://localhost:3000 to confirm the transaction is included in a block.

If the local node fails to start, check that your Node.js version is 18 or higher. Most errors stem from missing environment variables or port conflicts with existing local services.

Configure the settlement layer

The L3 appchain relies on an L2 settlement layer, such as Base, for security and finality. Connecting these layers ensures that transaction data is posted securely and that the L3 state is anchored to the L2 chain.

1. Select your L2 network

Choose the L2 network that will serve as your settlement layer. Base is a popular choice for L3 appchains due to its low costs and high throughput. Ensure you have selected the correct network ID in your configuration file.

2. Update RPC endpoints

Update your configuration file with the RPC endpoints for both your L3 node and the L2 settlement layer. These endpoints allow your L3 node to communicate with the L2 chain for posting data and verifying proofs. You can use public RPCs for testing, but production environments should use dedicated, high-availability endpoints.

JSON
{
  "l2": {
    "rpc": "https://mainnet.base.org",
    "chainId": 8453
  },
  "l3": {
    "rpc": "http://localhost:8545",
    "chainId": 1337
  }
}

3. Verify the connection

Once configured, start your L3 node and monitor the logs. The node should successfully connect to the L2 RPC endpoint and begin posting data. You can verify the connection by checking the L2 block explorer for your data availability transactions.

4. Test finality

Send a test transaction on your L3 appchain and wait for it to be settled on the L2. Confirm that the transaction is included in an L2 block and that the L3 state reflects the change. This step ensures that your L3 appchain is correctly anchored to the L2 chain.

Bridge the settlement layer

Connecting your new L3 appchain to its L2 settlement layer turns an isolated testnet into a functional part of the broader ecosystem. Without this bridge, assets and data remain trapped within the L3, unable to interact with the liquidity or security guarantees of the underlying layer.

Configure the bridge contract

Start by deploying the bridge contracts on both the L3 and the L2. These contracts act as the custodians for locked assets. On the L3, you deploy the L3Bridge contract, which mints tokens when deposits occur. On the L2, deploy the corresponding L2Bridge contract, which locks the original assets and emits events that the L3 bridge monitors.

Ensure the ownership and permissioning settings match your security model. For most boilerplate deployments, a simple multisig or single-owner model is sufficient for initial testing, but production setups should integrate with a governance DAO.

Set up the sequencer relay

The bridge needs a way to know when the L3 has finalized a transaction so it can unlock assets on the L2. This is handled by the sequencer relay. Configure your L3 sequencer to send StateRoot updates to the L2 bridge contract at regular intervals.

This step is critical for finality. If the relay is misconfigured, the L2 bridge won't recognize the L3's state updates, and withdrawals will fail. Verify the relay is sending updates by checking the L2 bridge's latest finalized state root.

Test the cross-layer transfer

Run a test transfer to confirm the end-to-end flow. Send a small amount of ETH or your native token from the L2 bridge to the L3 bridge. Monitor the transaction on the L2 explorer to ensure the lock event is emitted. Then, check the L3 explorer to confirm the mint event occurred.

Once the lock is confirmed, initiate a withdrawal back to the L2. This tests the reverse flow: the L3 bridge burns the tokens, and the L2 bridge unlocks them after the challenge period. Successful completion of this round-trip confirms your settlement layer is properly bridged.

Integrate DevRel kits for adoption

A functional L3 appchain boilerplate is only half the battle. Without developers building on it and users transacting on it, the chain remains an empty shell. DevRel kits bridge this gap by providing the marketing assets, documentation templates, and community frameworks needed to turn a technical deployment into a viable ecosystem.

Standardize your developer documentation

Your first priority is making it easy for other engineers to understand and use your chain. Use the boilerplate’s built-in documentation templates to create clear, concise guides. Focus on quickstart tutorials, API references, and deployment instructions. Consistent, high-quality docs reduce friction and encourage third-party developers to build on your infrastructure.

Launch community engagement channels

Active communities drive network effects. Set up Discord or Telegram channels early and populate them with the community guidelines and bot configurations provided in the DevRel kit. Host weekly office hours or AMAs (Ask Me Anything) to answer questions and gather feedback. Early engagement helps you identify pain points and build trust with your initial user base.

Distribute marketing assets

Developers and users need to know your chain exists. Use the provided logos, banners, and social media templates to maintain a consistent brand identity across all platforms. Share success stories, technical deep-dives, and roadmap updates regularly. This visibility attracts talent, investors, and early adopters who can help grow your ecosystem.

Validate your sovereign rollup

Before connecting your L3 appchain to public networks or mainnet bridges, you must verify that the sovereign rollup is functioning correctly in a controlled environment. This validation phase ensures that state transitions are accurate, RPC endpoints are responsive, and bridge mechanisms are secure. Skipping these checks often leads to critical failures during public deployment.

Verify RPC and Node Health

Start by confirming that your node is syncing correctly and responding to standard JSON-RPC calls. Use a tool like curl or a block explorer to check the latest block number and ensure it is increasing. If the node is stuck or returning errors, the underlying sequencer or validator configuration needs adjustment. A healthy node is the foundation of a reliable L3 appchain.

Test Bridge Functionality

Bridge validation is critical for any sovereign rollup. Send a small test transaction from the L2 parent chain to your L3 appchain and verify that the state root is correctly updated on both sides. Check that assets are locked on the source chain and unlocked on the destination. Incorrect bridge logic can lead to lost funds or state discrepancies, so thorough testing is non-negotiable.

Check Smart Contract Interactions

Deploy a simple test contract on your L3 and interact with it from a frontend or script. Verify that state changes are reflected in the block explorer and that gas fees are calculated correctly. This step confirms that the EVM environment is fully compatible with standard smart contracts and that your boilerplate’s configuration supports the expected execution layer.

Pre-Launch Validation Checklist

Use this checklist to ensure all critical components are verified before going live:

Completing these steps ensures your L3 appchain is robust and ready for public interaction. Validation is not just a technical formality; it is the primary defense against deployment failures.

Avoid Common L3 Setup Errors

Configuring an L3 appchain boilerplate usually takes under five minutes, but small misconfigurations can halt the entire process. The most frequent pitfalls involve RPC endpoints and settlement layer bindings. Fixing these issues requires a systematic check of your environment variables and contract addresses.

Misconfigured RPC Endpoints

The L3 node must connect to the correct sequencer and batcher RPCs. If the RPC_URL points to a testnet endpoint while your contract addresses are mainnet, the node will fail to sync or submit batches. Always verify that your RPC URL matches the network ID defined in your foundry.toml configuration file. A mismatch here is the most common reason for "connection refused" errors during startup.

Incorrect Settlement Layer Bindings

The L3 appchain relies on the L2 settlement layer for data availability and security. If the L2_RPC_URL or the L2_WETH_ADDRESS is incorrect, the bridge contracts cannot verify deposits. Double-check that the contract addresses in your .env file match the deployed versions on the target L2 network. Using outdated addresses from previous deployments will cause transaction reverts immediately upon interaction.

Frequently asked: what to check next