Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: eigenda-holesky kurtosis devnet #25

Merged
merged 14 commits into from
Feb 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
37 changes: 37 additions & 0 deletions .github/workflows/kurtosis-devnet.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Kurtosis Devnet

on:
push:
branches: [eigenda-develop]
pull_request:

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: 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
# 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
run: |
cat > kurtosis-devnet/eigenda-secrets.json << EOF
{
"secrets": {
"eigenda.signer-private-key-hex": "${{ secrets.EIGENDA_V1_HOLESKY_TESTNET_SIGNER_KEY }}",
"eigenda.eth_rpc": "https://ethereum-holesky-rpc.publicnode.com"
}
}
EOF
- name: Run Starlark
working-directory: kurtosis-devnet
run: |
just eigenda-holesky-devnet
1 change: 1 addition & 0 deletions kurtosis-devnet/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*-user.json
eigenda-secrets.json
1 change: 1 addition & 0 deletions kurtosis-devnet/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ To see available devnets, consult the `justfile` to see what `.*-devnet` targets
- `simple-devnet`
- `interop-devnet`
- `user-devnet`
- `eigenda-holesky-devnet`

You can read over the referenced `yaml` files located in this directory to see the network definition which would be deployed. Mini and Simple are example network definitions, and User expects a provided network definition.

Expand Down
112 changes: 112 additions & 0 deletions kurtosis-devnet/eigenda-holesky.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# 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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have knowledge to verify the dachallenge contract, so I will just rust sam here.

# 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: 2
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:
image: {{ localDockerImage "op-challenger" }}
cannon_prestate_path: ""
cannon_prestates_url: "http://fileserver/proofs/op-program/cannon"
extra_params: []
mev_params:
rollup_boost_image: ""
builder_host: ""
builder_port: ""
da_server_params:
image: ghcr.io/layr-labs/eigenda-proxy:v1.6.3
cmd:
- --addr
- 0.0.0.0
- --port
- "3100"
- --eigenda.disperser-rpc
- disperser-holesky.eigenda.xyz:443
- --eigenda.svc-manager-addr
- "0xD4A7E1Bd8015057293f0D0A557088c286942e84b"
# The two params below are loaded from the eigenda-secrets.json file
- --eigenda.signer-private-key-hex
- {{ dig "secrets" "eigenda.signer-private-key-hex" "" $context }}
- --eigenda.eth-rpc
- {{ dig "secrets" "eigenda.eth_rpc" "" $context }}
additional_services:
- da_server
op_contract_deployer_params:
image: {{ localDockerImage "op-deployer" }}
l1_artifacts_locator: {{ localContractArtifacts "l1" }}
l2_artifacts_locator: {{ localContractArtifacts "l2" }}
global_deploy_overrides:
faultGameAbsolutePrestate: {{ localPrestate.Hashes.prestate }}
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": {
samlaf marked this conversation as resolved.
Show resolved Hide resolved
"balance": "0ETH",
"code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3",
"storage": {},
"nonce": "1"
}
}
port_publisher:
el:
enabled: true
public_port_start: 32000
6 changes: 6 additions & 0 deletions kurtosis-devnet/eigenda-secrets.example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"secrets": {
"eigenda.signer-private-key-hex": "",
"eigenda.eth_rpc": ""
}
}
5 changes: 5 additions & 0 deletions kurtosis-devnet/justfile
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,11 @@ devnet-test DEVNET *TEST:
# Devnet recipes

# EigenDA devnet that uses eigenda-proxy connected to eigenda holesky testnet network
bxue-l2 marked this conversation as resolved.
Show resolved Hide resolved
eigenda-holesky-devnet: (devnet "eigenda-holesky.yaml" "eigenda-secrets.json" "eigenda-holesky")
eigenda-holesky-devnet-clean:
kurtosis enclave rm eigenda-holesky-devnet --force

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

Expand Down