Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
be3aa5e
chore(simple-surge-node): add e2e CI pipeline, bridge delivery checks…
Feb 19, 2026
8b88f5d
fix: add container diagnostics when L2 blocks timeout or relayer star…
Mar 6, 2026
2c2e131
try previously working nm client version
Mar 7, 2026
51b7050
more debug logs
Mar 7, 2026
1ca52fe
skip raiko in ci
Mar 8, 2026
349c416
chore(simple-surge-node): apply CI overrides for dummy verifier befor…
Mar 8, 2026
c279206
chore(simple-surge-node): set NUM_PROOFS_THRESHOLD=0 in CI to bypass …
Mar 9, 2026
b831ea0
fix: enable prover with dummy mode for CI L2->L1 bridge finalization
Mar 9, 2026
a9b6c3f
fix(simple-surge-node): register ProofVerifierDummy in SurgeVerifier …
Mar 10, 2026
c13e32a
try nethermind client master branch
Mar 10, 2026
9df65e2
Revert "fix(simple-surge-node): register ProofVerifierDummy in SurgeV…
Mar 10, 2026
2813dcf
chore(simple-surge-node): revert bridge-txs-spammer.sh changes unrela…
Mar 10, 2026
090608e
fix(simple-surge-node): register ProofVerifierDummy in SurgeVerifier …
Mar 10, 2026
b0221c1
chore(simple-surge-node): remove PROVER_DUMMY from .env.devnet
Mar 10, 2026
53cb386
chore(simple-surge-node): clarify PROVER_DUMMY comment in .env.devnet
Mar 10, 2026
e330986
chore(simple-surge-node): comment out PROVER_DUMMY in .env.devnet
Mar 11, 2026
21334e2
chore(simple-surge-node): use nethermind:master instead of pinned sha
Mar 11, 2026
3e642c9
Revert "chore(simple-surge-node): use nethermind:master instead of pi…
Mar 11, 2026
bc875fe
Revert "Revert "chore(simple-surge-node): use nethermind:master inste…
Mar 12, 2026
4ab3f24
Revert "Revert "Revert "chore(simple-surge-node): use nethermind:mast…
Mar 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .env.devnet
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
############################### IMAGES #####################################
PACAYA_PROTOCOL_IMAGE=nethermind/catalyst-taiko-protocol:taiko-alethia-protocol-v2.3.1-new
PROTOCOL_IMAGE=nethermind/surge-protocol:sha-b85d39a
NETHERMIND_CLIENT_IMAGE=nethermindeth/nethermind:master
NETHERMIND_CLIENT_IMAGE=nethermindeth/nethermind:master-d6befe8
TAIKO_CLIENT_IMAGE=nethermind/taiko-client:pr-260-3b8a522d
CATALYST_IMAGE=nethermind/catalyst-node:v1.30.0
RAIKO_IMAGE=nethermind/surge-raiko-zk:sha-76f481b
Expand Down Expand Up @@ -215,6 +215,12 @@ P2P_SYNC_URL=
# If you want to be a prover who generates and submits zero knowledge proofs of proposed L2 blocks, you need to change
# `ENABLE_PROVER` to true, set `L1_PROVER_PRIVATE_KEY` and `SGX_RAIKO_HOST`.
ENABLE_PROVER=true
# Skip real ZK computation and submit 0xbb...bb dummy bytes as proof (taiko-client only, no raiko call).
# Only valid if the on-chain verifier explicitly accepts dummy bytes - no current verifier does.
# With USE_DUMMY_VERIFIER=true, ProofVerifierDummy still requires a valid ECDSA signature,
# so leave this unset and let raiko run in mock mode (ZK=true, MOCK_KEY) to produce correct signatures.
#PROVER_DUMMY=

# A L1 account private key (with a balance of TTKOh deposited on TaikoL1) which will be used to sign the bond for proving the block.
# WARNING: only use a test account, pasting your private key in plain text here is not secure.
L1_PROVER_PRIVATE_KEY=0x94eb3102993b41ec55c241060f47daa0f6372e2e3ad7e91612ae36c364042e44
Expand Down
96 changes: 96 additions & 0 deletions .github/workflows/e2e-full-stack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: E2E Full Stack Test

on:
pull_request:
branches: [main, feat/shasta]
workflow_dispatch:

concurrency:
group: e2e-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

jobs:
e2e-full-stack:
name: E2E Full Stack
permissions:
contents: read
runs-on: ubuntu-22.04
timeout-minutes: 60
env:
CI_L2_DEPLOYER_TIMEOUT: "300"
CI_HEALTH_MAX_RETRIES: "60"
CI_HEALTH_RETRY_INTERVAL: "10"
CI_BRIDGE_DELIVERY_TIMEOUT: "1200"

steps:
- name: Checkout simple-surge-node
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435

- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y curl jq bc

- name: Install Kurtosis CLI
run: |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
sudo apt-get update
sudo apt-get install -y kurtosis-cli
kurtosis version

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1

- name: Verify prerequisites
run: |
docker --version
docker compose version
docker info
kurtosis version
cast --version

- name: Run E2E
run: ./script/ci-e2e.sh

- name: Collect logs on failure
if: failure()
run: |
echo "=== Docker Compose Services ==="
docker compose ps || true
echo "=== Docker Compose Logs (last 200 lines) ==="
docker compose logs --tail=200 || true
echo "=== Relayer Compose Logs ==="
docker compose -f docker-compose-relayer.yml logs --tail=100 || true
echo "=== Kurtosis Enclaves ==="
kurtosis enclave ls || true
echo "=== Kurtosis Inspect ==="
kurtosis enclave inspect surge-devnet || true

- name: Upload artifacts on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: e2e-failure-logs
path: |
deployment/*.json
deployment/*.lock
*.log
retention-days: 7
if-no-files-found: ignore

- name: Cleanup
if: always()
run: |
docker compose --profile driver --profile proposer --profile spammer --profile prover --profile blockscout down --remove-orphans 2>/dev/null || true
docker compose -f docker-compose-protocol.yml down --remove-orphans 2>/dev/null || true
docker compose -f docker-compose-relayer.yml down --remove-orphans 2>/dev/null || true
docker network rm surge-network 2>/dev/null || true
kurtosis enclave rm surge-devnet --force 2>/dev/null || true
kurtosis clean -a 2>/dev/null || true
docker system prune -af --volumes 2>/dev/null || true
60 changes: 57 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,74 @@

This repository is ideal for easy set up operating Layer 2 (L2) solutions, simplifying the process of running Surge node.

## Prerequisites

### Docker and Docker Compose

Docker Engine and Docker Compose v2.1+ are required. Install Docker Desktop or Docker Engine following the [official docs](https://docs.docker.com/engine/install/).

Verify:

```bash
docker --version
docker compose version # must be >= 2.1
```

### Foundry (cast)

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

### Node.js (using nvm - recommended)

```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc # or ~/.zshrc if using zsh
nvm install --lts
```

Or using apt on Ubuntu/Debian:

```bash
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
```

After installation, restart your terminal or run `source ~/.bashrc` or `source ~/.zshrc` to ensure the tools are available in your PATH.

## Quick Start

### Deploy Complete Devnet

```bash
# Deploy everything with defaults
# Copy devnet environment (first time only)
cp .env.devnet .env

# Deploy everything (non-interactive, defaults to devnet + new L1)
./deploy-surge-full.sh --force

# Or specify options explicitly
./deploy-surge-full.sh --environment devnet --deploy-devnet true --force
```

### Remove Everything
Without `--force` the script prompts interactively for environment, deployment mode, and L1 options.

**Options:**
- `--environment ENV` - Surge environment: `devnet`, `staging`, `testnet` (defaults to `devnet` with `--force`)
- `--deploy-devnet true` - Deploy a new L1 devnet (default with `--force`)
- `--deploy-devnet false` - Skip L1 deployment, use existing chain
- `--deployment local|remote` - Local or remote deployment (defaults to `local` with `--force`)

### Remove Stack

```bash
# Remove all components
# Remove L2 stack, relayers, configs (keeps L1 devnet running)
./remove-surge-full.sh --force

# Remove everything including L1 devnet
./remove-surge-full.sh --remove-l1-devnet true --force
```

For detailed deployment and removal instructions, see [DEPLOYMENT.md](./DEPLOYMENT.md).
Expand Down
Loading
Loading