op-challenger
. The challenger is a critical fault proofs component that monitors dispute games and challenges invalid claims to protect your OP Stack chain.
See the OP-Challenger Explainer for a general overview of this fault proofs feature.
The challenger is responsible for:
- Monitoring dispute games created by the fault proof system
- Challenging invalid claims in dispute games
- Defending valid state transitions
- Resolving games when possible
Prerequisites
Essential requirements
Before configuring your challenger, complete the following steps:1
Deploy OP Stack chain with fault proofs enabled
- L1 contracts deployed with dispute game factory
- Fault proof system active on your chain
- Access to your chain’s contract addresses
- Generate an absolute prestate for your network version - This is critical as the challenger will refuse to interact with games if it doesn’t have the matching prestate
2
Set up required infrastructure access
- L1 RPC endpoint (Ethereum, Sepolia, etc.)
- L1 Beacon node endpoint (for blob access)
- L2 archive node with debug API enabled
- Rollup node (op-node) with historical data
3
Prepare configuration files
rollup.json
- Rollup configuration filegenesis-l2.json
- L2 genesis fileprestate.json
- The absolute prestate file generated in step 1
Software requirements
- Git (for cloning repositories)
- Go 1.21+ (if building from source)
- Docker and Docker Compose (optional but recommended)
- Access to a funded Ethereum account for challenger operations
Finding the current stable releases
To ensure you’re using the latest compatible versions of OP Stack components, always check the official releases page: OP Stack releases page Look for the latestop-challenger/v*
release. The challenger version used in this guide (op-challenger/v1.5.0) is a verified stable version.
Always check the release notes to ensure you’re using compatible versions with your chain’s deployment.
Software installation
For challenger deployment, you can either build from source (recommended for better control and debugging) or use Docker for a containerized setup.- Tab Title
- Tab Title
Build and Configure
Building from source gives you full control over the binaries and is the preferred approach for production deployments.Clone and build op-challengerVerify installation
Check that you have properly installed the challenger component:Configuration setup
1
Organize your workspace
After building the binaries, create your challenger working directory:
2
Copy configuration files
3
Set up environment variables
You’ll need to gather several pieces of information before creating your configuration. Here’s where to get each value:L1 network access:Important: Replace ALL placeholder values (
- L1 RPC URL: Your L1 node endpoint (Infura, Alchemy, or self-hosted)
- L1 Beacon URL: Beacon chain API endpoint for blob access
- L2 RPC URL: Your op-geth archive node endpoint
- Rollup RPC URL: Your op-node endpoint with historical data
- Private key for challenger operations (must be funded)
- Game factory address from your contract deployment
- Network identifier (e.g., op-sepolia, op-mainnet, or custom)
YOUR_ACTUAL_*
) with your real configuration values.4
Understanding key configuration flags
Create challenger startup script
Createscripts/start-challenger.sh
:Initializing and starting the challenger
Start the challenger
Verify challenger is running
Monitor challenger logs to ensure it’s operating correctly:- Successful connection to L1 and L2 nodes
- Loading of prestates and configuration
- Monitoring of dispute games
Monitoring with op-dispute-mon
Consider runningop-dispute-mon
for enhanced security monitoring:
- Provides visibility into all game statuses for the last 28 days
- Essential for production challenger deployments
- Create Grafana dashboards using: Download the Dispute Monitor JSON
Next steps
- Read the OP-Challenger Explainer for additional context and FAQ
- Review the detailed challenger specifications for implementation details
- If you experience any problems, reach out to developer support