Skip to content

Commit

Permalink
feat: eigenda-memstore kurtosis devnet (#29)
Browse files Browse the repository at this point in the history
* feat: add kurtosis eigenda-memstore-devnet

This devnet spins-up the eigenda-proxy in memstore mode which is much faster for testing than having to use the holesky testnet.

* chore: set da_server image to use proxy v1.6.4 instead of dev

* ci: add eigenda-memstore-devnet to ci workflow
  • Loading branch information
samlaf authored Feb 19, 2025
1 parent eaa7e92 commit 1760bb0
Show file tree
Hide file tree
Showing 3 changed files with 121 additions and 9 deletions.
27 changes: 18 additions & 9 deletions .github/workflows/kurtosis-devnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@ on:
branches: [eigenda-develop]
pull_request:

env:
MISE_VERSION: 2024.12.14

jobs:
# This is an optimism devnet which talks to the eigenda holesky testnet via an eigenda-proxy.
# TODO: we should connect this to an eigenda kurtosis devnet instead of using our holesky testnet.
run_op_eigenda_holesky_devnet:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- uses: actions/checkout@v4
- uses: jdx/mise-action@v2
with:
version: 2024.12.14 # [default: latest] mise version to install
install: true # [default: true] run `mise install`
cache: true # [default: true] cache mise using GitHub's cache
experimental: true # [default: false] enable experimental features
version: ${{ env.MISE_VERSION }}
experimental: true
# Needed by the just eigenda-holesky-devnet command below
# These secrets get injected into the eigenda-holesky.yaml kurtosis config file
- name: Create EigenDA secrets file
Expand All @@ -31,7 +31,16 @@ jobs:
}
}
EOF
- name: Run Starlark
- run: just eigenda-holesky-devnet
working-directory: kurtosis-devnet

run_op_eigenda_memstore_devnet:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: jdx/mise-action@v2
with:
version: ${{ env.MISE_VERSION }}
experimental: true
- run: just eigenda-memstore-devnet
working-directory: kurtosis-devnet
run: |
just eigenda-holesky-devnet
94 changes: 94 additions & 0 deletions kurtosis-devnet/eigenda-memstore.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# This devnet uses an eigenda-proxy to interact with the eigenda holesky testnet network.
# As a requirement, you must first create and populate the eigenda-secrets.json file
# 1. cp eigenda-secrets.example.json eigenda-secrets.json
# 2. Populate the file with the required values
# TODO: Connect this with an eigenda v1 kurtosis devnet instead of using our holesky testnet.
# See https://github.com/Layr-Labs/avs-devnet/blob/main/examples/eigenda.yaml
{{- $context := or . (dict)}}
---
optimism_package:
altda_deploy_config:
use_altda: true
# We use the generic commitment which means that the dachallenge contract won't get deployed.
# We align with l2beat's analysis of the da_challenge contract not being economically viable,
# so even if a rollup failsover to keccak commitments, not using the da_challenge contract is fine
# (has same security as using it).
# See https://l2beat.com/scaling/projects/redstone#da-layer-risk-analysis and
# https://discord.com/channels/1244729134312198194/1260612364865245224/1290294353688002562 for
# an economic analysis of the da challenge contract.
da_commitment_type: GenericCommitment
da_challenge_window: 16
da_resolve_window: 16
da_bond_size: 0
da_resolver_refund_percentage: 0
chains:
- participants:
- el_type: op-geth
el_image: ""
el_log_level: ""
el_extra_env_vars: {}
el_extra_labels: {}
el_extra_params: []
cl_type: op-node
cl_image: {{ localDockerImage "op-node" }}
cl_log_level: "debug"
cl_extra_env_vars: {}
cl_extra_labels: {}
cl_extra_params: []
count: 1
network_params:
network: "kurtosis"
network_id: "2151908"
seconds_per_slot: 2
name: "op-kurtosis"
fjord_time_offset: 0
granite_time_offset: 0
holocene_time_offset: 0
fund_dev_accounts: true
batcher_params:
image: {{ localDockerImage "op-batcher" }}
extra_params: []
proposer_params:
image: {{ localDockerImage "op-proposer" }}
extra_params: []
game_type: 1
proposal_interval: 10m
challenger_params:
# TODO: reenable once we start testing secure integrations
enabled: false
image: {{ localDockerImage "op-challenger" }}
cannon_prestate_path: ""
cannon_prestates_url: "http://fileserver/proofs/op-program/cannon"
extra_params: []
da_server_params:
image: ghcr.io/layr-labs/eigenda-proxy:v1.6.4
cmd:
- --addr
- 0.0.0.0
- --port
- "3100"
- --memstore.enabled
- --memstore.expiration
- "1m"
additional_services:
- da_server
global_log_level: "info"
global_node_selectors: {}
global_tolerations: []
persistent: false
ethereum_package:
participants:
- el_type: geth
cl_type: teku
network_params:
preset: minimal
genesis_delay: 5
additional_preloaded_contracts: |
{
"0x4e59b44847b379578588920cA78FbF26c0B4956C": {
"balance": "0ETH",
"code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3",
"storage": {},
"nonce": "1"
}
}
9 changes: 9 additions & 0 deletions kurtosis-devnet/justfile
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,18 @@ devnet-test DEVNET *TEST:
# Devnet recipes

# EigenDA devnet that uses eigenda-proxy connected to eigenda holesky testnet network
[group('eigenda')]
eigenda-holesky-devnet: (devnet "eigenda-holesky.yaml" "eigenda-secrets.json" "eigenda-holesky")
[group('eigenda')]
eigenda-holesky-devnet-clean:
kurtosis enclave rm eigenda-holesky-devnet --force
# EigenDA devnet that uses the eigenda-proxy in memstore mode (simulates an eigenda network but generates random certs)
[group('eigenda')]
eigenda-memstore-devnet: (devnet "eigenda-memstore.yaml")
[group('eigenda')]
eigenda-memstore-devnet-clean:
kurtosis enclave rm eigenda-memstore-devnet --force


# Simple devnet
simple-devnet: (devnet "simple.yaml")
Expand Down

0 comments on commit 1760bb0

Please sign in to comment.