diff --git a/.github/workflows/kurtosis-devnet.yml b/.github/workflows/kurtosis-devnet.yml index 05663291eb93..a1036ee13319 100644 --- a/.github/workflows/kurtosis-devnet.yml +++ b/.github/workflows/kurtosis-devnet.yml @@ -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 @@ -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 diff --git a/kurtosis-devnet/eigenda-memstore.yaml b/kurtosis-devnet/eigenda-memstore.yaml new file mode 100644 index 000000000000..6561f803cec3 --- /dev/null +++ b/kurtosis-devnet/eigenda-memstore.yaml @@ -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" + } + } diff --git a/kurtosis-devnet/justfile b/kurtosis-devnet/justfile index 94830b2ec346..826756d897a7 100644 --- a/kurtosis-devnet/justfile +++ b/kurtosis-devnet/justfile @@ -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")