Skip to main content

Testnet Deployment Quickstart

This guide will help you quickly setup a local testing environment. To do this we will use Kurtosis-CDK. It will allow you to get started in a few commands, but remain powerful enough that you can dig deeper into more advanced functionality later.

What is Kurtosis-CDK?

Kurtosis-CDK is an open-source tool that leverages Kurtosis to deploy a CDK-Erigon based stack. This setup allows you to deploy and interact with a local CDK network, specifically configured for a validium setup.

What is a Validium Setup?

A validium is a Layer 2 scaling solution which stores data off-chain. This approach offers high throughput and low costs.

Prerequisites

  • Docker: Make sure Docker is installed and running
  • Git: For cloning repositories (if needed)
  • Terminal: Command line access

Installation & Setup

1. Install Kurtosis

macOS:

brew install kurtosis-tech/tap/kurtosis-cli

Linux:

curl -sSL https://get.kurtosis.com/install.sh | sh

Optional: Set up command-line completion for easier usage:

# Follow the instructions at:
# https://docs.kurtosis.com/guides/adding-command-line-completion

2. Install Cast (from Foundry)

Cast is a command-line tool for interacting with the Ethereum blockchain. The following command works on both macOS and Linux:

curl -L https://foundry.paradigm.xyz | bash

Follow the prompts to complete the installation, then run:

foundryup

3. Special Steps for Apple Silicon Macs

This step is only required for Apple Silicon Mac users. Linux users can skip this section.

If you're using an Apple Silicon Mac (M1/M2/M3), you might need additional steps for the prover image:

# Set Docker to use AMD64 platform
export DOCKER_DEFAULT_PLATFORM=linux/amd64

# Pull the prover image manually
docker pull hermeznetwork/zkevm-prover:v8.0.0-RC14-fork.12

Note: You may need to enable Rosetta support in Docker Desktop settings before running these commands.

Deploying the Network

Quick Deploy (10 minutes)

To quickly deploy a CDK network with default settings (works on both macOS and Linux):

kurtosis run --enclave cdk github.com/0xPolygon/kurtosis-cdk

This command creates an enclave named "cdk" and pulls the configuration directly from the GitHub repository.

Start from Local Repository (Optional)

If you've cloned the kurtosis-cdk repository (works on both macOS and Linux):

# Navigate to your kurtosis-cdk directory
cd path/to/kurtosis-cdk

# Start the network from local files
kurtosis run --enclave cdk .

Inspecting and Interacting with the Network

View Network Layout

The following commands work on both macOS and Linux:

kurtosis enclave inspect cdk

This command shows all running services and their ports.

Set Environment Variables for Tools

# Get the RPC endpoint for an Erigon node
export ETH_RPC_URL="$(kurtosis port print cdk cdk-erigon-node-001 rpc)"

# Verify connection by checking block number
cast block-number

Find Important Service Endpoints

The following commands work on both macOS and Linux:

# L1 Node RPC endpoint
kurtosis port print cdk cdk-erigon-node-001 rpc

# Sequencer RPC endpoint
kurtosis port print cdk cdk-erigon-sequencer-001 rpc

# Sequencer Data Streamer endpoint
kurtosis port print cdk cdk-erigon-sequencer-001 data-streamer

Monitoring and Debugging

View Service Logs

The following commands work on both macOS and Linux:

# View aggregation layer logs
kurtosis service logs cdk agglayer --follow

# View sequencer logs
kurtosis service logs cdk cdk-erigon-sequencer-001 --follow

Advanced: Building from Source

This command works on both macOS and Linux with Docker installed:

DOCKER_TAG=cdk-erigon:local make docker

Cleanup

When you're done with your environment (works on both macOS and Linux):

# Clean up the specific enclave
kurtosis enclave rm cdk

# Or clean up everything
kurtosis clean --all

Interacting with the Network

Once your network is running, you can interact with it using any Ethereum json-rpc compatible tool:

  • Cast: For quick command-line operations

    # Get the latest block number
    cast block-number

    # Get chain ID
    cast chain-id

    # Get accounts
    cast accounts
  • Web3.js, ethers.js, or web3.py: For programmatic interactions

  • MetaMask: Configure a custom RPC using the endpoint from kurtosis port print cdk cdk-erigon-node-001 rpc

Common Issues and Solutions

  • Docker Issues: If containers fail to start, try restarting Docker
  • Port Conflicts: If ports are already in use, Kurtosis will automatically use alternative ports
  • Image Download Issues: For Apple Silicon, make sure you've set the Docker platform correctly

Next Steps

  • Explore deploying smart contracts to your local network
  • Learn how to customize your deployment
  • Explore the CDK architecture and components

Resources