-
Notifications
You must be signed in to change notification settings - Fork 3
Add EigenDA V2 CI Infrastructure #144
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
Closed
Closed
Changes from 15 commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
0415033
Add EigenDA V2 CI infrastructure
shyam-patel-kira d7fbe37
Add ReferenceDA system tests and update V2 CI workflow
shyam-patel-kira 47a835e
Improve ReferenceDA tests with certificate verification and comprehen…
shyam-patel-kira 6f87992
Enable EigenDA V2 with comprehensive system and e2e tests
shyam-patel-kira e8c2d3e
Fix double http:// prefix bug in ReferenceDA test URLs
shyam-patel-kira 642edd9
Fix lint errors: add missing JWTSecret field to ServerConfig
shyam-patel-kira afda9fa
Fix errcheck lint errors: properly handle server.Shutdown error returns
shyam-patel-kira 186a316
Handle V2 certificates: trigger failover when V2 detected
shyam-patel-kira da8c9f2
Restore EigenDA V2 + ReferenceDA failover test configuration
shyam-patel-kira 0a3bd8b
Deploy ReferenceDAProofValidator contract in tests and add ALT DA sup…
shyam-patel-kira cbfec59
Update contracts to eigenda-v2.1.3-altda-support with ALT DA support
shyam-patel-kira 4430bf8
Update contracts to v3.9.0-altda-support with ALT DA support
shyam-patel-kira 516c4dc
Add e2e tests and disperser mode support for EigenDA V2 with arb API
shyam-patel-kira f410169
Remove placeholder tests and consolidate TODOs
shyam-patel-kira fa69708
Remove V1 codepaths and simplify to V2-only through DAProvider interface
shyam-patel-kira a37f34d
Address review: remove V1 modifications, separate V2 script, drop Ref…
shyam-patel-kira 1551457
Handle missing GetSupportedHeaderBytes RPC method gracefully for simp…
shyam-patel-kira 791de56
Fix V2 proxy startup to use locally-built binary with Arbitrum RPC su…
shyam-patel-kira 62111bc
Use Docker-based proxy build for V2 with Arbitrum RPC support
shyam-patel-kira badb723
Exclude V2 proxy Dockerfile from main Docker build context
shyam-patel-kira File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,90 @@ | ||
| name: EigenDA V2 CI | ||
|
|
||
| on: | ||
| workflow_call: | ||
| workflow_dispatch: | ||
| pull_request: | ||
| paths: | ||
| - 'eigenda/**' | ||
| - 'system_tests/eigenda_v2_test.go' | ||
| - 'system_tests/referenceda_test.go' | ||
| - 'daprovider/referenceda/**' | ||
| - 'scripts/start-eigenda-proxy.sh' | ||
| - '.github/workflows/eigenda-v2-ci.yml' | ||
|
|
||
| jobs: | ||
| eigenda-v2-tests: | ||
| runs-on: linux-2xl | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| with: | ||
| submodules: recursive | ||
|
|
||
| - uses: ./.github/actions/ci-setup | ||
|
|
||
| - name: Start EigenDA V2 Proxy | ||
| run: | | ||
| # Start V2 proxy (will skip if image not available) | ||
| ./scripts/start-eigenda-proxy.sh v2 || echo "V2 proxy not available yet, skipping" | ||
| continue-on-error: true | ||
|
|
||
| - name: Build Nitro | ||
| run: make -j8 build test-go-deps | ||
| env: | ||
| CARGO_BUILD_JOBS: 2 | ||
|
|
||
| - name: Run V2 Integration Tests | ||
| run: | | ||
| # Run V2 tests with special build tag | ||
| # Tests are currently skipped but will run when V2 is ready | ||
| go test -timeout 600s \ | ||
| -tags eigendav2test \ | ||
| -v \ | ||
| ./system_tests \ | ||
| -run "TestEigenDAV2" || echo "V2 tests skipped (not yet implemented)" | ||
| env: | ||
| GOMEMLIMIT: 6GiB | ||
| GOGC: 80 | ||
| continue-on-error: true | ||
|
|
||
| - name: Run ReferenceDA Integration Tests | ||
| run: | | ||
| # Run ReferenceDA (CustomDA/ALT DA) tests | ||
| # These tests use the existing ReferenceDA implementation and should pass | ||
| # Tests include: | ||
| # - TestReferenceDAServerReachability: Basic server startup | ||
| # - TestReferenceDAStoreRetrieve: Store/retrieve operations | ||
| # - TestReferenceDAIntegration: Full L1/L2 integration with certificate verification | ||
| go test -timeout 600s \ | ||
| -v \ | ||
| ./system_tests \ | ||
| -run "TestReferenceDA" | ||
| env: | ||
| GOMEMLIMIT: 6GiB | ||
| GOGC: 80 | ||
|
|
||
| - name: Check for V2 TODOs | ||
| run: | | ||
| echo "=== V2 Implementation TODOs ===" | ||
| echo "" | ||
| echo "Proxy Script TODOs:" | ||
| grep -n "TODO" scripts/start-eigenda-proxy.sh || echo "None" | ||
| echo "" | ||
| echo "V2 Test TODOs:" | ||
| grep -n "TODO" system_tests/eigenda_v2_test.go | head -20 || echo "None" | ||
| echo "" | ||
| echo "=== Commands ===" | ||
| echo "V2 Proxy: ./scripts/start-eigenda-proxy.sh v2" | ||
| echo "V2 Tests: go test -tags eigendav2test ./system_tests -run TestEigenDAV2" | ||
| echo "ReferenceDA Tests: go test ./system_tests -run TestReferenceDA" | ||
|
|
||
| - name: Upload Test Logs | ||
| if: always() | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: eigenda-v2-test-logs | ||
| path: | | ||
| system_tests/*.log | ||
| /tmp/eigenda-v2-*.log | ||
| if-no-files-found: ignore |
Submodule contracts
updated
2 files
| +6 −0 | src/bridge/ISequencerInbox.sol | |
| +5 −1 | src/bridge/SequencerInbox.sol |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Submodule nitro-testnode
updated
from f464cf to c20d26
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,34 +1,51 @@ | ||
| #!/usr/bin/env bash | ||
|
|
||
| echo "==== Pull eigenda-proxy container ====" | ||
| docker pull ghcr.io/layr-labs/eigenda-proxy:2.3.1 | ||
| set -euo pipefail | ||
|
|
||
| echo "==== Starting eigenda-proxy container ====" | ||
| # EigenDA V2 Proxy Startup Script | ||
| # | ||
| # Starts EigenDA V2 proxy with memstore for fast CI tests. | ||
| # V2 implements the ALT-DA spec and is accessed via DAProvider interface. | ||
| # | ||
| # Usage: ./start-eigenda-proxy.sh | ||
| # | ||
| # The proxy uses memstore (in-memory storage) for testing without requiring | ||
| # real EigenDA disperser infrastructure. | ||
|
|
||
| # proxy has a bug currently which forces the use of the service manager address | ||
| # & eth rpc despite cert verification being disabled. | ||
| PROXY_IMAGE="ghcr.io/layr-labs/eigenda-proxy:latest" | ||
| CONTAINER_NAME="eigenda-proxy-v2-nitro-test-instance" | ||
|
|
||
| docker run -d --name eigenda-proxy-nitro-test-instance \ | ||
| echo "==== Pull EigenDA V2 proxy container ====" | ||
| docker pull "$PROXY_IMAGE" | ||
|
|
||
| echo "==== Starting EigenDA V2 proxy container ====" | ||
|
|
||
| # Build docker run command | ||
| # V2 uses memstore for fast testing without real disperser | ||
| docker run -d --name "$CONTAINER_NAME" \ | ||
| -p 4242:6666 \ | ||
| -e EIGENDA_PROXY_ADDR=0.0.0.0 \ | ||
| -e EIGENDA_PROXY_PORT=6666 \ | ||
| -e EIGENDA_PROXY_STORAGE_BACKENDS_TO_ENABLE=V1 \ | ||
| -e EIGENDA_PROXY_STORAGE_DISPERSAL_BACKEND=V1 \ | ||
| -e EIGENDA_PROXY_APIS_TO_ENABLE=standard \ | ||
| -e EIGENDA_PROXY_STORAGE_BACKENDS_TO_ENABLE=V2 \ | ||
| -e EIGENDA_PROXY_STORAGE_DISPERSAL_BACKEND=V2 \ | ||
| -e EIGENDA_PROXY_MEMSTORE_ENABLED=true \ | ||
| -e EIGENDA_PROXY_MEMSTORE_EXPIRATION=120m \ | ||
| -e EIGENDA_PROXY_EIGENDA_ETH_RPC=http://localhost:6969 \ | ||
| -e EIGENDA_PROXY_EIGENDA_SERVICE_MANAGER_ADDR="0x0000000000000000000000000000000000000000" \ | ||
| -e EIGENDA_PROXY_EIGENDA_SERVICE_MANAGER_ADDR=0x0000000000000000000000000000000000000000 \ | ||
| -e EIGENDA_PROXY_EIGENDA_CERT_VERIFICATION_DISABLED=true \ | ||
| ghcr.io/layr-labs/eigenda-proxy:2.3.1 | ||
| -e EIGENDA_PROXY_EIGENDA_DISPERSER_RPC=localhost:32003 \ | ||
| -e EIGENDA_PROXY_EIGENDA_V2_NETWORK=holesky_testnet \ | ||
| -e EIGENDA_PROXY_EIGENDA_V2_ETH_RPC=http://localhost:6969 \ | ||
| -e EIGENDA_PROXY_API_ENABLED=admin \ | ||
| "$PROXY_IMAGE" | ||
|
|
||
| # shellcheck disable=SC2181 | ||
| if [ $? -ne 0 ]; then | ||
| echo "==== Failed to start eigenda-proxy container ====" | ||
| echo "==== Failed to start EigenDA V2 proxy container ====" | ||
| exit 1 | ||
| fi | ||
|
|
||
| echo "==== eigenda-proxy container started ====" | ||
|
|
||
| ## TODO - support teardown or embed a docker client wrapper that spins up and tears down resource | ||
| # within system tests. Since this is only used by one system test, it's not a large priority atm. | ||
| echo "==== EigenDA V2 proxy container started ====" | ||
| echo "Container name: $CONTAINER_NAME" | ||
| echo "Image: $PROXY_IMAGE" | ||
| echo "Port: 4242" |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is the submodule changed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it was updated to add
DAC_CERTIFICATE_MESSAGE_HEADER_FLAG(0x01) support in SequencerInbox.sol. This allows the contract to accept ReferenceDA certificates which use the ALT-DA spec. Without this, ReferenceDA batches are rejected as invalid.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
still a bit fuzzy why contract submodules need to be updated here at all given the upstream repo has golang tests for their CustomDA feature which asserts to correctness of batch posting / derivation logics
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, upstream has CustomDA support and the golang daprovider/ code already supports 0x01 (we inherit that). However, the L1 contracts must also accept 0x01 headers for batch posting to work. Without this update, batch posting would fail with InvalidHeaderFlag(0x01).
The update adds one line to SequencerInbox.sol to validate the 0x01 header byte - same as upstream's CustomDA support, just using our fork's naming (
DAC_CERTIFICATE_MESSAGE_HEADER_FLAGvs upstream'sCUSTOM_DA_MESSAGE_HEADER_FLAG).