Skip to content

Commit 6519ff6

Browse files
authored
fix(kt-devnet): migrate kt-devnet to sepolia (#56)
* pin teku image to version `25.7.1` * replace the existing holesky devnet config and tests with sepolia * bump proxy version to 2.2.1 * add support for v3 certs to failover tests * bump sepolia test timeouts * remove slow/flaky v1 sepolia tests from ci
1 parent 3ec28fb commit 6519ff6

File tree

11 files changed

+41
-58
lines changed

11 files changed

+41
-58
lines changed

.github/workflows/kurtosis-devnet.yml

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,18 @@ jobs:
4242
- run: just eigenda-devnet-test-memstore -v
4343
working-directory: kurtosis-devnet
4444

45-
# This is an optimism devnet which talks to the eigenda holesky testnet via an eigenda-proxy.
46-
# TODO: we should connect this to an eigenda kurtosis devnet instead of using our holesky testnet.
47-
run_op_eigenda_holesky_devnet:
45+
# This is an optimism devnet which talks to the eigenda sepolia testnet via an eigenda-proxy.
46+
# TODO: we should connect this to an eigenda kurtosis devnet instead of using our sepolia testnet.
47+
run_op_eigenda_sepolia_devnet:
4848
runs-on: ubuntu-latest
4949
strategy:
5050
fail-fast: false # run all matrix jobs even if one fails
5151
matrix:
5252
# This list should be kept up-to-date with the files in eigenda-template-values
5353
valuesFile:
5454
[
55-
# v1 is too slow for sequential large blobs.
56-
# Could send a single massive blob every few minutes, but then migration test
57-
# takes too long waiting for the few certs to land onchain, so opted to just not run it.
58-
"holesky-concurrent-small-blobs.json",
59-
"holesky-v2-sequential-large-blobs.json",
60-
"holesky-v2-concurrent-small-blobs.json",
55+
"sepolia-v2-sequential-large-blobs.json",
56+
"sepolia-v2-concurrent-small-blobs.json",
6157
]
6258
steps:
6359
- uses: actions/checkout@v4
@@ -71,14 +67,14 @@ jobs:
7167
jq --argjson newconfig '{
7268
"eigenda-proxy": {
7369
"secrets": {
74-
"eigenda.signer-private-key-hex": "${{ secrets.EIGENDA_V1_HOLESKY_TESTNET_SIGNER_KEY }}",
75-
"eigenda.v2.signer-payment-key-hex": "${{ secrets.EIGENDA_V2_HOLESKY_TESTNET_SIGNER_KEY }}",
76-
"eigenda.eth_rpc": "https://ethereum-holesky-rpc.publicnode.com"
70+
"eigenda.signer-private-key-hex": "${{ secrets.EIGENDA_SEPOLIA_TESTNET_SIGNER_KEY }}",
71+
"eigenda.v2.signer-payment-key-hex": "${{ secrets.EIGENDA_SEPOLIA_TESTNET_SIGNER_KEY }}",
72+
"eigenda.eth_rpc": "https://ethereum-sepolia-rpc.publicnode.com"
7773
}
7874
}
79-
}' '. *= $newconfig' eigenda-template-values/${{ matrix.valuesFile }} > holesky-config-with-secrets.json
75+
}' '. *= $newconfig' eigenda-template-values/${{ matrix.valuesFile }} > sepolia-config-with-secrets.json
8076
working-directory: kurtosis-devnet
81-
- run: just eigenda-devnet-start holesky-config-with-secrets.json
77+
- run: just eigenda-devnet-start sepolia-config-with-secrets.json
8278
working-directory: kurtosis-devnet
8379
env:
8480
# Temporary fix for error (see https://github.com/Layr-Labs/optimism/actions/runs/14325605690/job/40150440399?pr=42)
@@ -87,5 +83,5 @@ jobs:
8783
# See https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md
8884
# and https://github.com/docker/cli/issues/613
8985
DOCKER_API_VERSION: 1.45
90-
- run: just eigenda-devnet-test-holesky -v
86+
- run: just eigenda-devnet-test-sepolia -v
9187
working-directory: kurtosis-devnet

kurtosis-devnet/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ To see available devnets, consult the `justfile` to see what `.*-devnet` targets
1414
- `simple-devnet`
1515
- `interop-devnet`
1616
- `user-devnet`
17-
- `eigenda-holesky-devnet`
17+
- `eigenda-sepolia-devnet`
1818

1919
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.
2020

kurtosis-devnet/eigenda-template-values/holesky-concurrent-small-blobs.json

Lines changed: 0 additions & 18 deletions
This file was deleted.

kurtosis-devnet/eigenda-template-values/holesky-v2-concurrent-small-blobs.json renamed to kurtosis-devnet/eigenda-template-values/sepolia-v2-concurrent-small-blobs.json

File renamed without changes.

kurtosis-devnet/eigenda-template-values/holesky-v2-sequential-large-blobs.json renamed to kurtosis-devnet/eigenda-template-values/sepolia-v2-sequential-large-blobs.json

File renamed without changes.

kurtosis-devnet/eigenda.yaml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
# This devnet uses an eigenda-proxy to interact with the eigenda holesky testnet network.
1+
# This devnet uses an eigenda-proxy to interact with the eigenda sepolia testnet network.
22
# As a requirement, you must first create and populate the eigenda-secrets.json file
33
# 1. cp eigenda-secrets.example.json eigenda-secrets.json
44
# 2. Populate the file with the required values
5-
# TODO: Connect this with an eigenda v1 kurtosis devnet instead of using our holesky testnet.
5+
# TODO: Connect this with an eigenda v1 kurtosis devnet instead of using our sepolia testnet.
66
# See https://github.com/Layr-Labs/avs-devnet/blob/main/examples/eigenda.yaml
77
{{- $context := or . (dict)}}
88
# TODO: I hate yaml templating... should really move to something more reasonable. CUE perhaps?
9-
# use proxy by default, otherwise connect with eigenda holesky backend
9+
# use proxy by default, otherwise connect with eigenda sepolia backend
1010
{{- $useProxyMemstore := dig "eigenda-proxy" "useMemstore" true $context }}
1111
{{- $proxyDispersalBackend := dig "eigenda-proxy" "dispersalBackend" "v1" $context }}
1212
{{- $eigendaV1SignerKey := dig "eigenda-proxy" "secrets" "eigenda.signer-private-key-hex" "" $context }}
1313
{{- $eigendaV2SignerKey := dig "eigenda-proxy" "secrets" "eigenda.v2.signer-payment-key-hex" "" $context }}
1414
{{- $eigendaBackendEthRpc := dig "eigenda-proxy" "secrets" "eigenda.eth_rpc" "" $context }}
1515
{{- if not $useProxyMemstore}}
16-
# make sure the secrets are populated when using eigenda-holesky backend
16+
# make sure the secrets are populated when using eigenda-sepolia backend
1717
{{- if or (eq $eigendaV1SignerKey "") (eq $eigendaV2SignerKey "") (eq $eigendaBackendEthRpc "") }}
1818
{{- fail "Missing required eigenda-proxy eigenda-backend secrets." }}
1919
{{- end }}
@@ -86,27 +86,28 @@ optimism_package:
8686
proposal_interval: 10m
8787
da_params:
8888
enabled: true
89-
image: ghcr.io/layr-labs/eigenda-proxy:v1.7.0
89+
image: ghcr.io/layr-labs/eigenda-proxy:2.2.1
9090
cmd:
9191
- --addr=0.0.0.0
9292
- --port=3100
9393
- --storage.backends-to-enable=V1,V2
9494
- --storage.dispersal-backend={{ $proxyDispersalBackend }} #v1 or v2
9595
- --api-enabled=admin # to enable changing dispersal-backend to v2 without restarting
9696
- --eigenda.v2.max-blob-length=1MiB # makes startup faster by only loading 1MiB/2MiB of G1/G2 SRS points.
97+
- --eigenda.v2.network=sepolia_testnet
9798
{{- if $useProxyMemstore }}
9899
- --memstore.enabled
99100
- --memstore.expiration=30m
100-
{{- else }} # connect to eigenda holesky backend
101+
{{- else }} # connect to eigenda sepolia backend
101102
# V1 flags
102-
- --eigenda.disperser-rpc=disperser-holesky.eigenda.xyz:443
103-
- --eigenda.svc-manager-addr=0xD4A7E1Bd8015057293f0D0A557088c286942e84b
103+
- --eigenda.disperser-rpc=disperser-testnet-sepolia.eigenda.xyz:443
104+
- --eigenda.svc-manager-addr=0x3a5acf46ba6890B8536420F4900AC9BC45Df4764
104105
# The two params below are loaded from the eigenda-secrets.json file
105106
- --eigenda.signer-private-key-hex={{ $eigendaV1SignerKey }}
106107
- --eigenda.eth-rpc={{ $eigendaBackendEthRpc }}
107108
# V2 flags
108-
- --eigenda.v2.disperser-rpc=disperser-holesky.eigenda.xyz:443
109-
- --eigenda.v2.cert-verifier-addr=0xFe52fE1940858DCb6e12153E2104aD0fDFbE1162
109+
- --eigenda.v2.cert-verifier-router-or-immutable-verifier-addr=0x58D2B844a894f00b7E6F9F492b9F43aD54Cd4429
110+
- --eigenda.v2.disperser-rpc=disperser-testnet-sepolia.eigenda.xyz:443
110111
- --eigenda.v2.signer-payment-key-hex={{ $eigendaV2SignerKey }}
111112
- --eigenda.v2.eth-rpc={{ $eigendaBackendEthRpc }}
112113
{{- end }}
@@ -130,6 +131,7 @@ ethereum_package:
130131
el_extra_params:
131132
- --graphql # needed to query for batcher-inbox txs to test failover working correctly
132133
cl_type: teku
134+
cl_image: consensys/teku:25.7.1
133135
network_params:
134136
preset: minimal
135137
genesis_delay: 5

kurtosis-devnet/justfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,12 @@ eigenda-devnet-clean ENCLAVE_NAME="eigenda-devnet":
100100
[group('eigenda')]
101101
eigenda-devnet-test-memstore *ARGS="":
102102
go test ./tests/eigenda/... -run "_Memstore$" -v -timeout 30m {{ARGS}}
103-
# Runs all tests that end with the `_Holesky` suffix, assuming the devnet was started with proxy using holesky backend.
104-
# To start the devnet with holesky backend, the files in eigenda-template-values/holesky-* need have secrets injected.
103+
# Runs all tests that end with the `_Sepolia` suffix, assuming the devnet was started with proxy using sepolia backend.
104+
# To start the devnet with sepolia backend, the files in eigenda-template-values/sepolia-* need have secrets injected.
105105
# Take a look at how CI does it in .github/workflows/kurtosis-devnet.yml .
106106
[group('eigenda')]
107-
eigenda-devnet-test-holesky *ARGS="":
108-
go test ./tests/eigenda/... -run "_Holesky$" -v -timeout 40m {{ARGS}}
107+
eigenda-devnet-test-sepolia *ARGS="":
108+
go test ./tests/eigenda/... -run "_Sepolia$" -v -timeout 50m {{ARGS}}
109109
[group('eigenda')]
110110
eigenda-devnet-add-tx-fuzzer ENCLAVE_NAME="eigenda-devnet" *ARGS="":
111111
kurtosis service add {{ENCLAVE_NAME}} tx-fuzz ethpandaops/tx-fuzz:master --cmd \

kurtosis-devnet/tests/eigenda/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ See the justfile for the options there.
55

66
## Backends
77

8-
The devnet can either be started with proxy in `memstore` mode, or in `holesky` mode where it connects to the eigenda holesky network.
8+
The devnet can either be started with proxy in `memstore` mode, or in `sepolia` mode where it connects to the eigenda sepolia network.
99

10-
> Every test in this package MUST have a `_Memstore` or `_Holesky` suffix to indicate which backend it is testing.
10+
> Every test in this package MUST have a `_Memstore` or `_Sepolia` suffix to indicate which backend it is testing.
1111
12-
The testing commands in the justfile are `eigenda-devnet-test-memstore` and `eigenda-devnet-test-holesky`, and pattern match the test names to run the correct tests.
12+
The testing commands in the justfile are `eigenda-devnet-test-memstore` and `eigenda-devnet-test-sepolia`, and pattern match the test names to run the correct tests.

kurtosis-devnet/tests/eigenda/batcher_logs_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ import (
88
"github.com/kurtosis-tech/kurtosis/api/golang/engine/lib/kurtosis_context"
99
)
1010

11-
func TestBatcherFromLogs_Holesky(t *testing.T) {
11+
func TestBatcherFromLogs_Sepolia(t *testing.T) {
1212
deadline, ok := t.Deadline()
1313
// !ok means no timeout was set, and hence uses golang's default 10min timeout.
14-
if !ok || time.Until(deadline) < 15*time.Minute {
15-
t.Logf("TestBatcherFromLogs_Holesky needs a timeout of at least 15 minutes to run.")
14+
if !ok || time.Until(deadline) < 30*time.Minute {
15+
t.Logf("TestBatcherFromLogs_Sepolia needs a timeout of at least 30 minutes to run.")
1616
t.FailNow()
1717
}
1818
harness := NewHarness(t)
19-
// Batching time on Holesky can be up to 10 minutes, so we need long time to see a tx getting confirmed.
20-
testBatcherFromLogs(t, harness, 15*time.Minute)
19+
// Batching time on Sepolia can be up to 10 minutes, so we need long time to see a tx getting confirmed.
20+
testBatcherFromLogs(t, harness, 30*time.Minute)
2121
}
2222

2323
func TestBatcherFromLogs_Memstore(t *testing.T) {

kurtosis-devnet/tests/eigenda/failover_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ func requireBatcherTxsToBeFromLayer(t *testing.T, fromBlockNum, toBlockNum uint6
146146
const ethDACalldataCommitmentPrefix = "0x00"
147147
const eigenDAV1CommitmentPrefix = "0x01010000"
148148
const eigenDAV2CommitmentPrefix = "0x01010001"
149+
const eigenDAV3CommitmentPrefix = "0x01010002"
149150

150151
type DALayer string
151152

@@ -268,6 +269,9 @@ func fetchBatcherTxs(gethL1Endpoint string, batchInbox string, fromBlockNum, toB
268269
batcherTx.daLayer = DALayerEigenDAV1
269270
} else if strings.HasPrefix(tx.InputData, eigenDAV2CommitmentPrefix) {
270271
batcherTx.daLayer = DALayerEigenDAV2
272+
} else if strings.HasPrefix(tx.InputData, eigenDAV3CommitmentPrefix) {
273+
// eigenDA V2 with V3 cert
274+
batcherTx.daLayer = DALayerEigenDAV2
271275
} else if strings.HasPrefix(tx.InputData, ethDACalldataCommitmentPrefix) {
272276
batcherTx.daLayer = DALayerEthCalldata
273277
} else {
@@ -277,6 +281,5 @@ func fetchBatcherTxs(gethL1Endpoint string, batchInbox string, fromBlockNum, toB
277281
}
278282
}
279283
}
280-
281284
return batcherTxs, nil
282285
}

0 commit comments

Comments
 (0)