Skip to main content
Welcome to the first step of creating your own L2 rollup testnet! In this section, you’ll install the op-deployer tool and deploy the necessary L1 smart contracts for your rollup.
Step 1 of 5: This tutorial is designed to be followed step-by-step. Each step builds on the previous one.
Quick Setup AvailableFor a complete automated setup that includes op-deployer deployment, check out the code/ directory. The automated setup handles all contract deployment and configuration automatically.

About op-deployer

op-deployer simplifies the process of deploying the OP Stack. You define a declarative config file called an “intent,” then run a command to apply it. op-deployer compares your chain’s current state against the intent and makes the necessary changes to match.

Installation

There are a couple of ways to install op-deployer:
The recommended way to install op-deployer is to download the latest release from the monorepo’s release page.
Quick Setup AvailableFor automated installation, you can use the download script from the code directory. This script automatically downloads the latest version for your system.
1

Download the correct binary

  1. Go to the release page
  2. Find the latest release that includes op-deployer (look for releases tagged with op-deployer/v*)
  3. Under assets, download the binary that matches your system:
  • For Linux: op-deployer-linux-amd64
  • For macOS:
    • Apple Silicon (M1/M2): op-deployer-darwin-arm64
    • Intel processors: op-deployer-darwin-amd64
  • For Windows: op-deployer-windows-amd64.exe
Always download the latest version to ensure you have the most recent features and bug fixes.
Not sure which macOS version to use?
  • Open Terminal and run uname -m
  • If it shows arm64, use the arm64 version
  • If it shows x86_64, use the amd64 version
2

Create deployer directory and install binary

  1. Create the rollup directory structure and enter the deployer directory:
Your directory structure will now look like this:
  1. Move and rename the downloaded binary:
The downloaded file is likely in your Downloads folder:
  • macOS/Linux: /Users/YOUR_USERNAME/Downloads
  • Windows WSL: /mnt/c/Users/YOUR_USERNAME/Downloads
Pro Tip: Use the automated download script from the code directory to avoid manual version management. It automatically detects your platform and downloads the latest version.

L1 network requirements

Before deploying your L1 contracts, you’ll need: L1 RPC URL: An Ethereum RPC endpoint for your chosen L1 network
For testing, we recommend using Sepolia testnet. You can get free RPC access from:
  • Infura (create account, get API key)
  • Alchemy (create account, get API key)
  • Ankr (create account, get API key)

Generate deployment addresses

Your rollup needs several addresses for different roles. Let’s generate them first:
1

Create address directory

Your directory structure will now look like this:
2

Generate address for each role

This will save the various addresses for your intent file into files in your current directory. To view them later you can use cat *_address.txt.
Important:
  • Save these address - you’ll need them to operate your chain
  • You can use any address for the purpose of testing, for production, use proper key management solutions (HSMs, multisigs addresses)

Create and configure intent file

The intent file defines your chain’s configuration.
1

Initialize intent file

Inside the deployer folder, run this command:
2

Update the intent file

Edit .deployer/intent.toml with your generated addresses. The op-deployer init command automatically populates this file with sensible defaults. Update the addresses while keeping the auto-generated contract locator values:
Replace all 0x... with actual addresses from your addresses.txt file. Never use the default test mnemonic addresses in production or public testnets!

Create environment file

Before deploying, create a .env file in your deployer directory to store your environment variables:
Never commit your .env file to version control. Add it to your .gitignore:
Load the environment variables:

Deploy L1 Contracts

Now that your intent file and environment variables are configured, let’s deploy the L1 contracts:
This will:
  1. Deploy all required L1 contracts
  2. Configure them according to your intent file
  3. Save deployment information to .deployer/state.json
The deployment can take 10-15 seconds and requires multiple transactions.

Generate chain configuration

After successful deployment, generate your chain configuration files:

What’s Next?

Great! You’ve successfully:
  1. Installed op-deployer using the init and apply command.
  2. Created and configured your intent file
  3. Deployed L1 smart contracts
  4. Generated chain artifacts
Your final directory structure should look like this:
Now you can move on to setting up your sequencer node.

Spin up sequencer →

Next: Set up op-geth and op-node, essential building blocks of the execution and consensus layers in your rollup.

Need Help?