Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
395 commits
Select commit Hold shift + click to select a range
ced42d7
Fix caff-node stalling (#213)
Ayiga Aug 27, 2025
87f0250
Support timestamp env var (#218)
shenkeyao Aug 28, 2025
e89df75
IL3 Remove redundant "Walking back L1Block" and "will retry" logs (#221)
shenkeyao Aug 29, 2025
b6bb619
Skip BatchFuture (#217)
shenkeyao Aug 29, 2025
43de2a7
Fix length check (#216)
shenkeyao Aug 29, 2025
f7fafcb
IA1.6.1 Add batcher service running in TEE (#205)
dailinsubjam Aug 29, 2025
b4daa9e
Fix batcher restart test (#222)
jbearer Sep 2, 2025
69972a7
Download binaries for appropriate architecture in Docker images (#223)
jbearer Sep 4, 2025
b2bef2a
Add key rotation tests (#224)
QuentinI Sep 5, 2025
034f8f7
Remove a Caff node comment (#225)
shenkeyao Sep 5, 2025
2e846fd
Bump github.com/ulikunitz/xz from 0.5.12 to 0.5.14 (#220)
dependabot[bot] Sep 10, 2025
78a5e4a
Test a challenge game in the docker devnet (#228)
jbearer Sep 12, 2025
15fff68
Run smoke devnet test in CI (#231)
philippecamacho Sep 16, 2025
0f5f64e
push (#232)
dailinsubjam Sep 19, 2025
05e2f0b
forget this commit (#233)
dailinsubjam Sep 24, 2025
5b03c58
Add a Buffered Streamer around Espresso Streamer for batcher (#230)
Ayiga Sep 30, 2025
9ac6774
Rename tests (#236)
shenkeyao Oct 1, 2025
6da3d3a
Remove unneeded service http proxy for docker compose (#238)
dailinsubjam Oct 2, 2025
889d90b
Fix `TestSmoke` failing on CI/CD (#237)
Ayiga Oct 2, 2025
5d640e6
Fix CI after rebasing celo-14 (#243)
dailinsubjam Nov 1, 2025
2568618
TN5 withdrawal devnet test (#226)
philippecamacho Oct 6, 2025
c05777b
Rename DevNet to E2eDevnet (#239)
shenkeyao Oct 6, 2025
a991967
Fix low gasLimit in L1 genesis (#241)
QuentinI Oct 9, 2025
4976d52
update (#244)
dailinsubjam Oct 9, 2025
cd9c8c2
Streaming streamer (#235)
QuentinI Oct 22, 2025
23b5597
Fix pcr0 extraction in docker compose script and correctly shutdown o…
dailinsubjam Oct 23, 2025
5ffeb25
Update metrics (#242)
shenkeyao Oct 23, 2025
b329818
Update log level (#247)
shenkeyao Oct 24, 2025
98125a7
Decouple Espresso L1 & OP L1 (#248)
QuentinI Oct 31, 2025
1f48fba
Add back forgotten config when rebase celo-sync-14
dailinsubjam Nov 2, 2025
bc14068
Fix prepare-allocs after rebasing celo-sync-14 (#250)
dailinsubjam Nov 3, 2025
c8723d5
Skip TestChallengerGame and TestWithdrawal (#251)
dailinsubjam Nov 3, 2025
3b13eaa
mise: Define fake install sources for disabled tools (#18109) (#254)
QuentinI Nov 4, 2025
e44c458
Change the logging level for the safe L2 number (#252)
shenkeyao Nov 4, 2025
fd8f7eb
Respect espresso.fetch-api flag (#253)
QuentinI Nov 5, 2025
c693144
Readd devnet tests to CI. (#257)
philippecamacho Nov 6, 2025
587a3f3
Add a log debouncer to op-service.log package (#259)
QuentinI Nov 6, 2025
29fe114
Add netcat-openbsd to Dockerfile (#262)
shenkeyao Nov 7, 2025
71689d7
Add a devnet cleanup script (#261)
shenkeyao Nov 7, 2025
a9e3e80
Enable circleCI after rebase14 (#265)
dailinsubjam Nov 12, 2025
f86fb87
Add origin height to Espresso streamer (#255)
QuentinI Nov 12, 2025
9c60c29
Clean up more loggings (#266)
shenkeyao Nov 13, 2025
af01b0a
Skip attestation verification (#263)
dailinsubjam Nov 13, 2025
4cbd3e8
Fix test TestChangeBatchInboxOwner (#264)
philippecamacho Nov 13, 2025
2c24d79
Update README and relevant scripts (#269)
shenkeyao Nov 13, 2025
7763971
Remove unused metrics (#273)
shenkeyao Nov 14, 2025
d8a8cc8
Rename (#275)
shenkeyao Nov 14, 2025
1a8cecb
Improve image versioning and repo consistency (#276)
shenkeyao Nov 18, 2025
06e9a18
Create enclave ami for enclave test (#277)
dailinsubjam Nov 18, 2025
68cd557
Add devnet smoke test with TEE (#268)
shenkeyao Nov 19, 2025
8f388e5
Blockscout running inside the local devnet (#281)
philippecamacho Nov 27, 2025
78ba19f
Build deployer image in CI
QuentinI Nov 12, 2025
52e51e9
Upate CI utils
QuentinI Nov 18, 2025
c48a764
Saner 'confirmed' logging
QuentinI Nov 18, 2025
929ea2f
Don't error out on light client issues
QuentinI Nov 18, 2025
54bec68
fix the name of deployer factory address
Sneh1999 Nov 18, 2025
c57546e
Add a workaround for query service lag in real-world networks
QuentinI Nov 19, 2025
f27e576
Generate more metadata
QuentinI Nov 19, 2025
ed0357e
More faithful compiler output in verifier
QuentinI Nov 19, 2025
2456df6
Don't fall below hotshot origin height
QuentinI Nov 20, 2025
91d030d
Remove cache buster to speed up docker image builds
QuentinI Nov 25, 2025
3b2b802
Adjust channel duration in devnet
QuentinI Nov 25, 2025
a6cce30
Jump ahead when origin is too low
QuentinI Nov 25, 2025
2807f51
Add log line to matching Espresso txn to L2 block
QuentinI Nov 25, 2025
e9930db
Fix semver lock
QuentinI Nov 25, 2025
42c16d7
Fix snapshot lock
QuentinI Nov 25, 2025
57a72ae
Support environment variables for channel parameters
QuentinI Dec 1, 2025
1618255
Enable EigenDaProxy & MEMSTORE (#274)
jjeangal Dec 1, 2025
2584065
Don't copy artifacts to batcher image (#290)
QuentinI Dec 3, 2025
120ff12
Refactor: replace MultiNode majority rule with SingleNode client and …
miguelCyclone Dec 3, 2025
5e1d748
Fallback Inbox contract changes (#278)
philippecamacho Dec 4, 2025
53ac8ba
OP succint support (#287)
philippecamacho Dec 5, 2025
44e911e
Update error handling (#289)
shenkeyao Dec 5, 2025
67a7fc6
Document configuration of all services (#291)
shenkeyao Dec 8, 2025
6ace756
Support Sepolia Devnet with TEE (#288)
dailinsubjam Dec 8, 2025
21719d0
OP Succinct: Making changes to the derivation pipeline (#293)
philippecamacho Dec 9, 2025
278aee0
Fix op-succinct dependencies diagram. (#297)
philippecamacho Dec 9, 2025
47fad24
Simplify checks in the derivation pipeline (#296)
philippecamacho Dec 10, 2025
7a9a8dd
Removed nonexist logs (#298)
shenkeyao Dec 12, 2025
391beff
Add support for ZK attestation service (#294)
Sneh1999 Dec 12, 2025
227eba0
Enable AltDA Espresso E2E using EigenDA Docker proxy (#295)
miguelCyclone Dec 15, 2025
1f801f3
Downgrade Dasel (#303)
Sneh1999 Dec 16, 2025
2237a62
Make the withdraw devnet test pass again (#301)
philippecamacho Dec 16, 2025
b8c19c5
Add migration related things to readme (#302)
dailinsubjam Dec 17, 2025
4105d57
Reducing logging when outputting the batch (#304)
dailinsubjam Dec 17, 2025
954f6ff
Document code sync procedure (#308)
shenkeyao Dec 18, 2025
24243b7
Update batchAuthenticator according to audit report (#309)
dailinsubjam Dec 18, 2025
0c1d0cf
Port ForcedTxs test into devnet test suite (#306)
miguelCyclone Dec 19, 2025
884c8a3
Reorder checks of isValidBatchTx in derivation pipeline (#310)
dailinsubjam Dec 19, 2025
9c2c4c7
Add fallback mechanism test (#305)
QuentinI Dec 19, 2025
ae75350
Philippe/fix withdraw flakiness (#312)
philippecamacho Dec 23, 2025
6d016c5
Use unified run-enclave.sh script for op-batcher-tee (#299)
dailinsubjam Dec 24, 2025
95c57f9
Test fallback mechanism on devnet (#313)
philippecamacho Dec 26, 2025
cfa0608
Recovery from fallback batcher (#315)
QuentinI Jan 3, 2026
45839f2
Make ZK Verifier Optional for E2E Testing (#321)
Ayiga Jan 9, 2026
d5c5d56
Tee support for EigenDA (#319)
dailinsubjam Jan 9, 2026
9c198f4
Add Batcher Fallback: Channel Not Closed Test (#314)
Ayiga Jan 11, 2026
24946c9
Move diagram files (#326)
shenkeyao Jan 12, 2026
5de3d5b
Update Succinct image versions, update diagram (#329)
shenkeyao Jan 14, 2026
14198f3
Inactive Batcher Shouldn't Post (#316)
jjeangal Jan 14, 2026
29f1f1d
Removes PreRegisteredBatcher code (#327)
Sneh1999 Jan 14, 2026
4ca1dee
Update Succinct images
shenkeyao Jan 16, 2026
d42432f
Streamer namespace range 14.2 (#334)
Sneh1999 Jan 19, 2026
eb76937
Enable and test Transparent proxy upgradability and batcher address u…
shenkeyao Jan 27, 2026
3ce31b4
Description for TestBatcherSwitching (#335)
dailinsubjam Jan 27, 2026
3e292a2
Add cmd to shutdown all docker containers with TEE (#332)
dailinsubjam Jan 30, 2026
629080d
Guardians rebased (#345)
QuentinI Jan 31, 2026
2cc3acd
Audit Document (#339)
jjeangal Feb 2, 2026
e5cbb86
Security Analysis (#342)
philippecamacho Feb 3, 2026
dd7bccb
Fix and improve steps in the code sync doc (#344)
shenkeyao Feb 4, 2026
8349427
Fix op-deployer build
shenkeyao Feb 10, 2026
f597a68
Fix go mod and duplicate flag
shenkeyao Feb 10, 2026
debc6cd
Fix go-ffi
shenkeyao Feb 10, 2026
98aff96
Fix prepare-allocs
shenkeyao Feb 10, 2026
1df9b3c
Fix duplicate attribute in pipeline
shenkeyao Feb 10, 2026
45d33ea
Fix test slice
shenkeyao Feb 10, 2026
37dc8e3
Fix builder version
shenkeyao Feb 10, 2026
2acf704
Set timeout for docker-images CI
shenkeyao Feb 10, 2026
c2e6314
Fix devnet tests
shenkeyao Feb 10, 2026
df083f0
Add missing file
shenkeyao Feb 10, 2026
3feb034
Fix go version
shenkeyao Feb 11, 2026
c7e7bb8
Fix go version
shenkeyao Feb 11, 2026
45d39d7
Add missing address
shenkeyao Feb 11, 2026
31b96eb
Use generic way to generate slice
shenkeyao Feb 11, 2026
e14f011
Fix go version for build-op CIs
shenkeyao Feb 11, 2026
495f4d7
Fix dockerfile
shenkeyao Feb 11, 2026
77ca0db
Continue devnet version fix
shenkeyao Feb 11, 2026
9b817e5
Fix dockerfile
shenkeyao Feb 11, 2026
fb5d271
More dockerfile fix
shenkeyao Feb 11, 2026
4de3c47
More dockerfile fix
shenkeyao Feb 11, 2026
a1c171e
Simplify changes
shenkeyao Feb 11, 2026
45191ac
More dockerfile fix
shenkeyao Feb 11, 2026
76c8988
More dockerfile fix
shenkeyao Feb 11, 2026
aa28963
Add missing event type
shenkeyao Feb 12, 2026
95bec9e
Fix op-node
shenkeyao Feb 12, 2026
bb8ee33
Fix op-batcher
shenkeyao Feb 12, 2026
efed037
Fix batcher TEE and proposer
shenkeyao Feb 12, 2026
08dce53
Remove unnecessary changes
shenkeyao Feb 12, 2026
3ecbeae
Address Gemini comment
shenkeyao Feb 13, 2026
da863c1
Restore rootClaim fix
shenkeyao Feb 13, 2026
57bcf28
Remove duplicate flag
shenkeyao Feb 13, 2026
e72127a
Fix devnet build
shenkeyao Feb 13, 2026
1375218
Fix go version, add timeout
shenkeyao Feb 13, 2026
2142057
Update moved crate
shenkeyao Feb 13, 2026
7d2bf39
Fix the build after rebase (#352)
shenkeyao Feb 13, 2026
ec13e36
Remove duplicate import
shenkeyao Feb 13, 2026
f42c785
Fix go module flakiness
shenkeyao Feb 13, 2026
20d057b
Fix refactored types and functions
shenkeyao Feb 13, 2026
f5a2278
Set light client
shenkeyao Feb 13, 2026
dd2d7ab
Add timeouts for devnet tests
shenkeyao Feb 14, 2026
260e312
Investigate test failure
shenkeyao Feb 17, 2026
15ab623
Fix integration tests 0
shenkeyao Feb 17, 2026
0df0181
Fix fallback batcher test
shenkeyao Feb 17, 2026
7199a2d
Fix duplicate devnet running issue
shenkeyao Feb 17, 2026
48b083d
Specify artifact names
shenkeyao Feb 17, 2026
e3d03f3
Fix fmt
shenkeyao Feb 17, 2026
e78527f
Fix challenge game test
shenkeyao Feb 18, 2026
d7fd525
Try fix batcher restart test
shenkeyao Feb 18, 2026
ef014b0
Fix fallback test
shenkeyao Feb 18, 2026
1b9024f
Fix test build
shenkeyao Feb 18, 2026
2df7e68
Remove duplicate builds
shenkeyao Feb 19, 2026
8316baf
Fix parsing
shenkeyao Feb 19, 2026
3308796
Fix duplicate l1-geth-image
shenkeyao Feb 19, 2026
661b690
Increase timeout
shenkeyao Feb 24, 2026
f21cdc3
Fix fallback
shenkeyao Feb 24, 2026
dbfd1b0
Fix batcher restart test
shenkeyao Feb 25, 2026
a8097ff
Fix devnet tests 3 and 4
shenkeyao Feb 25, 2026
85f9021
Fix contracts
shenkeyao Feb 25, 2026
59ebf90
Fix fmt
shenkeyao Feb 25, 2026
450efe9
More devnet tests
shenkeyao Feb 25, 2026
0f61ed7
More contract tests
shenkeyao Feb 25, 2026
6eac3f3
Update version for contract tests
shenkeyao Feb 25, 2026
e5faced
Fix fmt
shenkeyao Feb 25, 2026
562fcc9
Fix foundry
shenkeyao Feb 25, 2026
c15add8
Fix CI for devnet tests
shenkeyao Feb 25, 2026
de407dc
Ignore warning
shenkeyao Feb 25, 2026
676479c
Fix remaining contract tests
shenkeyao Feb 25, 2026
6188e5e
Fix script
shenkeyao Feb 25, 2026
c244910
Fix EOA path
shenkeyao Feb 25, 2026
6710ab6
Merge remote-tracking branch 'origin/celo-integration-rebase-16' into…
shenkeyao Feb 25, 2026
7bbed0c
Fix devnet test command
shenkeyao Feb 25, 2026
64bf31f
more yaml fix
shenkeyao Feb 25, 2026
08f2fdb
Fix docker compose spinup
shenkeyao Feb 25, 2026
f8c3dc5
Remove blockscout
shenkeyao Feb 26, 2026
446feb3
Move blockscount to monitoring profile
shenkeyao Feb 26, 2026
5ccb8e6
Free space
shenkeyao Feb 26, 2026
9b9c939
More docker fix
shenkeyao Feb 26, 2026
e46158d
Fix more
shenkeyao Feb 26, 2026
1bd7953
Fix more
shenkeyao Feb 26, 2026
5bbfe93
Add investigation log
shenkeyao Feb 26, 2026
526b647
Fix beacon
shenkeyao Feb 26, 2026
bc7a2d9
Fix timeout
shenkeyao Feb 26, 2026
d8aa807
Fix docker compose dir
shenkeyao Feb 26, 2026
a9bfbd7
Fix path
shenkeyao Feb 26, 2026
f23fed4
More sequencer fixes
shenkeyao Feb 27, 2026
2c8807f
Fix sequencer
shenkeyao Feb 27, 2026
c86b6e5
More CI fix
shenkeyao Feb 28, 2026
6389ca8
Revert devnet test fixes
shenkeyao Feb 28, 2026
34b6d68
Restore more devnet files
shenkeyao Feb 28, 2026
9002965
Add back image fix
shenkeyao Feb 28, 2026
9fb2f02
Restore streamer
shenkeyao Feb 28, 2026
17900af
Restore a devnet fix
shenkeyao Feb 28, 2026
b391abd
Restore ec2 test fix
shenkeyao Feb 28, 2026
cbc386e
Restore l1 geth fix
shenkeyao Feb 28, 2026
0326bc4
Fix throttle
shenkeyao Feb 28, 2026
8cff2be
Restrict throttle fix scope
shenkeyao Mar 1, 2026
ad627c7
Remove isActiveBatcher
shenkeyao Mar 2, 2026
d089948
Remove unnecessary changes
shenkeyao Mar 4, 2026
13b940b
Restore fallback path fix
shenkeyao Mar 4, 2026
86e3ee9
Restore fmt fixes
shenkeyao Mar 4, 2026
4b110ce
Ignore cache error
shenkeyao Mar 4, 2026
20bf319
Revert foundry version and fmt fixes
shenkeyao Mar 4, 2026
1e97d4f
remove fmt check
shenkeyao Mar 4, 2026
96cdadc
fix: mise install (#366)
Sneh1999 Mar 4, 2026
d8fee0a
Add back necessary contract files
shenkeyao Mar 4, 2026
27b14d0
Fix contract workflow
shenkeyao Mar 4, 2026
39a5bab
Address comments for espresso/docker
shenkeyao Mar 4, 2026
679d444
Update espresso/scripts/run-tests-github-actions.sh
shenkeyao Mar 4, 2026
72cc64d
Remove use of output file
shenkeyao Mar 4, 2026
3cbd328
Merge branch 'keyao/fix-integration-and-contracts' of github.com:Espr…
shenkeyao Mar 4, 2026
71e9695
Remove path from contract names
shenkeyao Mar 4, 2026
b351ed5
Restore more files
shenkeyao Mar 4, 2026
c7699eb
Restore more files
shenkeyao Mar 4, 2026
56e454f
Revert IproxyAdmin changes
shenkeyao Mar 4, 2026
3c10bd5
Remove unneeded IProxyAdmin uses
shenkeyao Mar 4, 2026
d3336bf
Remove more files
shenkeyao Mar 5, 2026
f99f916
Add back toml
shenkeyao Mar 5, 2026
f8fc4f2
Add lock
shenkeyao Mar 5, 2026
99e074e
Replace build
shenkeyao Mar 5, 2026
1cd5f12
Fix build timeout
shenkeyao Mar 5, 2026
ea15589
Fix duplicate build
shenkeyao Mar 5, 2026
fb89c4a
Fix more
shenkeyao Mar 5, 2026
cd5215a
Match Celo's changes
shenkeyao Mar 5, 2026
c3eef94
Restore contract files
shenkeyao Mar 5, 2026
5c0de38
Update batcher fallback test
shenkeyao Mar 5, 2026
6f1a25d
Improvement the comment
shenkeyao Mar 5, 2026
6d98282
Remove dead code
shenkeyao Mar 6, 2026
cd415d8
Merge branch 'celo-integration-rebase-16' into keyao/merge-16-to-16.1
shenkeyao Mar 7, 2026
2ea9015
More conflict fixes
shenkeyao Mar 7, 2026
0972410
Fix test 11
shenkeyao Mar 7, 2026
cfe221a
Address gemini comments
shenkeyao Mar 7, 2026
0342715
Fix test 8
shenkeyao Mar 7, 2026
a50d657
Restore gotestsum
shenkeyao Mar 9, 2026
e2418b9
Undo unnecessary changes
shenkeyao Mar 10, 2026
a1b3607
Remove helper functions
shenkeyao Mar 10, 2026
ae0e5e4
Add a missing file
shenkeyao Mar 10, 2026
b6bee14
Improve sha256 installation
shenkeyao Mar 17, 2026
a8c0355
Fix Dockerfile build
shenkeyao Mar 17, 2026
330edcf
Restore artifactsfs
shenkeyao Mar 17, 2026
cb7464f
Fix Go version
shenkeyao Mar 17, 2026
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
12 changes: 9 additions & 3 deletions .github/workflows/espresso-integration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,15 @@ jobs:
- name: Set up Nix environment
uses: nicknovitski/nix-develop@v1

- name: Cache Go modules
- name: Set up Go and cache modules
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
cache-dependency-path: go.sum

- name: Download Go modules
run: go mod download && go list -deps ./espresso/... > /dev/null

- name: Install gotestsum
Comment thread
shenkeyao marked this conversation as resolved.
run: go install gotest.tools/gotestsum@latest
Expand Down Expand Up @@ -79,8 +86,7 @@ jobs:
junit-summary: ./junit-test-summary.xml

- name: Run Go tests for group ${{ matrix.group }}
run: |
gotestsum --junitfile junit-summary-${{ matrix.group }}.xml --format github-actions -- -short -timeout 30m -p 1 -count 1 -run "^(${{ steps.test_split.outputs.run}})$" ./espresso/...
run: gotestsum --junitfile junit-summary-${{ matrix.group }}.xml --format testdox -- -short -timeout 30m -p 1 -count 1 -v -run "^(${{ steps.test_split.outputs.run}})$" ./espresso/...

- name: Upload JUnit test summary
if: always()
Expand Down
1 change: 1 addition & 0 deletions cannon/mipsevm/testutil/evm.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ func NewEVMEnv(t testing.TB, contracts *ContractMetadata) (*vm.EVM, *state.State
if err != nil {
t.Fatalf("failed to create memory state db: %v", err)
}

blockContext := core.NewEVMBlockContext(header, bc, nil, chainCfg, state)
vmCfg := vm.Config{}

Expand Down
2 changes: 1 addition & 1 deletion espresso/devnet-tests/forced_transaction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import (
"testing"
"time"

"github.com/ethereum-optimism/optimism/op-core/predeploys"
"github.com/ethereum-optimism/optimism/op-e2e/bindings"
"github.com/ethereum-optimism/optimism/op-service/predeploys"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
Expand Down
9 changes: 5 additions & 4 deletions espresso/docker/l1-geth/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# L1 Geth Dockerfile, modified from ops/docker/deployment-utils/Dockerfile
FROM golang:1.23-alpine AS builder
FROM golang:1.24-alpine AS builder

# Install build dependencies
RUN apk add --no-cache \
Expand All @@ -17,16 +17,17 @@ RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache

# Build eth2-val-tools
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build \
go install -ldflags '-linkmode external -extldflags "-static"' \
github.com/protolambda/eth2-val-tools@latest
CGO_ENABLED=0 go install \
github.com/protolambda/eth2-val-tools@aeec3fcc6e7ae67be1aec8dc8f463e5585b2612e

# Main runtime image
FROM debian:12.7-slim

ENV DEBIAN_FRONTEND=noninteractive

# Install runtime dependencies
# Install runtime dependencies (coreutils provides sha256sum)
RUN apt-get update && apt-get install -y \
coreutils \
curl \
jq \
ca-certificates \
Expand Down
79 changes: 61 additions & 18 deletions espresso/docker/l1-geth/l1-geth-init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ L1_CHAIN_ID=${L1_CHAIN_ID:-11155111}
# Mode can be "genesis" or "geth" (default).
MODE=${MODE:-geth}

# sha256sum is required (provided by coreutils in the image).
hash_file() {
sha256sum "$1" | awk '{print $1}'
}

if [[ "$MODE" == "genesis" ]]; then
echo "Running Genesis Initialization"

Expand All @@ -27,18 +32,64 @@ if [[ "$MODE" == "genesis" ]]; then
fi
fi

echo "Updating genesis timestamp..."
dasel put -f /config/genesis.json -s .timestamp -v $(printf '0x%x\n' $(date +%s))
# eth-beacon-genesis is expensive. Reuse pre-generated artifacts only when
# all genesis inputs match exactly; otherwise force regeneration.
# Set FORCE_BEACON_GENESIS_REGEN=1 to force regeneration unconditionally.
REGENERATE_BEACON_GENESIS=0
GENESIS_INPUTS_VERSION="v2"
CURRENT_GENESIS_FINGERPRINT_FILE="/tmp/current_genesis_fingerprint"
STORED_GENESIS_FINGERPRINT_FILE="/config/genesis.fingerprint"

{
printf "%s\n" "$GENESIS_INPUTS_VERSION"
hash_file "/config/genesis.json"
hash_file "/templates/beacon-config.yaml"
hash_file "/templates/mnemonics.yaml"
} > "$CURRENT_GENESIS_FINGERPRINT_FILE"

if [[ "${FORCE_BEACON_GENESIS_REGEN:-0}" == "1" ]]; then
echo "FORCE_BEACON_GENESIS_REGEN=1 set, regenerating beacon genesis..."
REGENERATE_BEACON_GENESIS=1
elif [[ ! -f "/config/genesis.ssz" ]]; then
REGENERATE_BEACON_GENESIS=1
elif [[ ! -f "$STORED_GENESIS_FINGERPRINT_FILE" ]]; then
echo "Missing genesis fingerprint metadata, regenerating beacon genesis..."
REGENERATE_BEACON_GENESIS=1
elif ! cmp -s "$CURRENT_GENESIS_FINGERPRINT_FILE" "$STORED_GENESIS_FINGERPRINT_FILE"; then
echo "Genesis inputs changed, regenerating beacon genesis..."
REGENERATE_BEACON_GENESIS=1
fi

if [[ "$REGENERATE_BEACON_GENESIS" -eq 1 ]]; then
rm -f /config/genesis.ssz /config/config.yaml /config/jwt.txt \
/config/deposit_contract_block.txt /config/deposit_contract.txt

echo "Updating genesis timestamp..."
dasel put -f /config/genesis.json -s .timestamp -v $(printf '0x%x\n' $(date +%s))

echo "Generating consensus layer genesis..."
eth-beacon-genesis devnet \
--quiet \
--eth1-config "/config/genesis.json" \
--config "/templates/beacon-config.yaml" \
--mnemonics "/templates/mnemonics.yaml" \
--state-output "/config/genesis.ssz"
cp -r /templates/beacon-config.yaml /config/config.yaml
echo "Generating consensus layer genesis..."
eth-beacon-genesis devnet \
--quiet \
--eth1-config "/config/genesis.json" \
--config "/templates/beacon-config.yaml" \
--mnemonics "/templates/mnemonics.yaml" \
--state-output "/config/genesis.ssz"
cp -r /templates/beacon-config.yaml /config/config.yaml

if [[ ! -f "/config/jwt.txt" ]]; then
echo "Generating JWT secret..."
openssl rand -hex 32 > "/config/jwt.txt"
fi

echo "0" > /config/deposit_contract_block.txt
echo "0x00000000219ab540356cBB839Cbe05303d7705Fa" > /config/deposit_contract.txt
Copy link
Copy Markdown
Collaborator

@philippecamacho philippecamacho Mar 17, 2026

Choose a reason for hiding this comment

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

Where does this value come from?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Oh, this is actually from the 14.2 branch, and I didn't change it: https://github.com/EspressoSystems/optimism-espresso-integration/blob/celo-integration-rebase-14.2/espresso/docker/l1-geth/l1-geth-init.sh#L59. Somehow it wasn't included in the base branch of this PR.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I see, still it would be good to know.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

cp "$CURRENT_GENESIS_FINGERPRINT_FILE" "$STORED_GENESIS_FINGERPRINT_FILE"
else
echo "Beacon genesis already matches current inputs, skipping slow generation..."
fi
Comment thread
shenkeyao marked this conversation as resolved.

# Validator keystores must always be regenerated: they are copied to the
# l1-data Docker volume (/data) which is cleared on every `docker compose down -v`.
echo "Generating validator keys..."
rm -rf /config/keystore && \
eth2-val-tools keystores --out-loc /config/keystore \
Expand All @@ -50,14 +101,6 @@ if [[ "$MODE" == "genesis" ]]; then
cp -r /config/keystore/keys/* /data/lighthouse-validator/validators/
cp -r /config/keystore/secrets/ /data/lighthouse-validator/

if [[ ! -f "/config/jwt.txt" ]]; then
echo "Generating JWT secret..."
openssl rand -hex 32 > "/config/jwt.txt"
fi

echo "0" > /config/deposit_contract_block.txt
echo "0x00000000219ab540356cBB839Cbe05303d7705Fa" > /config/deposit_contract.txt

echo "Genesis initialization complete"
exit 0

Expand Down
8 changes: 2 additions & 6 deletions espresso/docker/op-geth/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,10 @@ ARG TARGETARCH
ARG GIT_COMMIT
ARG GIT_DATE

# CGO builder for components that need Espresso crypto linking
# CGO builder for components that need Espresso crypto linking (go.mod requires go >= 1.24.0)
FROM golang:1.24-alpine AS op-cgo-builder
# Install dependencies
RUN apk add musl-dev gcc g++ curl tar gzip make linux-headers git jq bash yq
# Install just from mise
COPY ./mise.toml .
RUN curl -L https://github.com/casey/just/releases/download/$(yq '.tools.just' mise.toml)/just-$(yq '.tools.just' mise.toml)-x86_64-unknown-linux-musl.tar.gz | \
tar xz -C /usr/local/bin just
RUN apk add musl-dev gcc g++ curl tar gzip make linux-headers git jq bash yq just

# Go sources
COPY ./go.mod /app/go.mod
Expand Down
18 changes: 6 additions & 12 deletions espresso/docker/op-stack/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ ARG TARGET_BASE_IMAGE=alpine:3.22
ARG TARGETOS
ARG TARGETARCH

# Base builder image
# Base builder image (go.mod requires go >= 1.24.0)
FROM golang:1.24-alpine AS builder

RUN apk add --no-cache \
curl netcat-openbsd tar gzip make gcc g++ musl-dev \
linux-headers git bash jq yq

# Install mise for toolchain management
RUN curl https://mise.run | MISE_INSTALL_PATH=/usr/local/bin/mise sh
RUN curl https://mise.run | MISE_INSTALL_PATH=/usr/local/bin/mise MISE_INSTALL_EXT=tar.gz sh

# Install yq, dasel and foundry
RUN case "$TARGETARCH" in \
Expand All @@ -32,15 +32,8 @@ RUN case "$TARGETARCH" in \
chmod +x /usr/local/bin/cast && \
chmod +x /usr/local/bin/forge

# Install just (direct binary to avoid mise trust issues)
ARG TARGETARCH
RUN case "$TARGETARCH" in \
"amd64") JUST_ARCH="x86_64-unknown-linux-musl" ;; \
"arm64") JUST_ARCH="aarch64-unknown-linux-musl" ;; \
*) echo "Unsupported architecture for just: $TARGETARCH" >&2; exit 1 ;; \
esac && \
wget -q "https://github.com/casey/just/releases/download/1.37.0/just-1.37.0-${JUST_ARCH}.tar.gz" -O /tmp/just.tar.gz && \
tar -xzf /tmp/just.tar.gz -C /usr/local/bin just && rm /tmp/just.tar.gz && just --version
# Install just from apk
RUN apk add just && just --version

# Ensure just and other tools are on PATH for all FROM builder stages
ENV PATH="/usr/local/bin:$PATH"
Expand All @@ -67,7 +60,8 @@ ARG GIT_DATE
ARG OP_NODE_VERSION=v0.0.0
ENV GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_NODE_VERSION"
RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache/go-build \
cd /app/op-node && mkdir -p bin && go build -v -ldflags "-X main.GitCommit=$GITCOMMIT -X main.GitDate=$GITDATE -X github.com/ethereum-optimism/optimism/op-node/version.Version=$VERSION -X github.com/ethereum-optimism/optimism/op-node/version.Meta=" -o ./bin/op-node ./cmd
cd /app/op-node && mkdir -p bin && \
CGO_ENABLED=0 go build -a -ldflags '-extldflags "-static" -X main.GitCommit=$GITCOMMIT -X main.GitDate=$GITDATE -X github.com/ethereum-optimism/optimism/op-node/version.Version=$VERSION -X github.com/ethereum-optimism/optimism/op-node/version.Meta=' -o bin/op-node ./cmd/main.go

# Build op-batcher
FROM builder AS op-batcher-builder
Expand Down
76 changes: 21 additions & 55 deletions espresso/environment/10_soft_confirmation_integrity_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ import (
geth_crypto "github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/trie"
)

// messageWithTimestamp is a struct that contains an entry of type T
Expand Down Expand Up @@ -314,36 +313,12 @@ func submitRandomDataToSequencerNamespace(ctx context.Context, espCli espressoCl
}
}

type FakeBlockType struct{}

// HasOptimismWithdrawalsRoot implements types.BlockType.
func (f *FakeBlockType) HasOptimismWithdrawalsRoot(blkTime uint64) bool {
return false
}

// IsGingerbread implements types.BlockType.
func (f *FakeBlockType) IsGingerbread(blockNumber *big.Int) bool {
return false
}

// IsIsthmus implements types.BlockType.
func (f *FakeBlockType) IsIsthmus(blkTime uint64) bool {
return false
}

// IsMigratedChain implements types.BlockType.
func (f *FakeBlockType) IsMigratedChain() bool {
return false
}

var _ geth_types.BlockType = (*FakeBlockType)(nil)

// createMaliciousEspressoBatch creates a malicious Espresso batch by
// constructing a block with a deposit transaction. It uses the latest
// block from the sequencer to create a new block with a deposit
// transaction. The block is then converted to an Espresso batch using
// the derive.BlockToEspressoBatch function.
func createMaliciousEspressoBatch(ctx context.Context, cli *ethclient.Client, rollupCfg *rollup.Config, hasher geth_types.TrieHasher) (*derive.EspressoBatch, error) {
func createMaliciousEspressoBatch(ctx context.Context, cli *ethclient.Client, rollupCfg *rollup.Config) (*derive.EspressoBatch, error) {
// / Determine what the latest block in the sequencer is, so we can
// hope to create a valid transaction, to get something out of it.
latestBlock, err := cli.BlockByNumber(ctx, nil)
Expand All @@ -352,7 +327,22 @@ func createMaliciousEspressoBatch(ctx context.Context, cli *ethclient.Client, ro
}

latestHeader := latestBlock.Header()
body := &geth_types.Body{
header := &geth_types.Header{
ParentHash: latestBlock.Hash(),
UncleHash: latestHeader.UncleHash,
Coinbase: latestHeader.Coinbase,
Root: latestHeader.Root,
Bloom: latestHeader.Bloom,
Difficulty: latestHeader.Difficulty,
Number: new(big.Int).Add(latestBlock.Number(), big.NewInt(1)),
GasLimit: latestHeader.GasLimit,
GasUsed: latestHeader.GasUsed,
Time: latestHeader.Time + 1,
Extra: latestHeader.Extra,
MixDigest: latestHeader.MixDigest,
Nonce: latestHeader.Nonce,
}
body := geth_types.Body{
Transactions: []*geth_types.Transaction{
geth_types.NewTx(
&geth_types.DepositTx{
Expand All @@ -361,31 +351,9 @@ func createMaliciousEspressoBatch(ctx context.Context, cli *ethclient.Client, ro
),
},
}
block := geth_types.NewBlockWithHeader(header).WithBody(body)

return derive.BlockToEspressoBatch(
rollupCfg,
geth_types.NewBlock(
&geth_types.Header{
ParentHash: latestBlock.Hash(),
UncleHash: latestHeader.UncleHash,
Coinbase: latestHeader.Coinbase,
Root: latestHeader.Root,
Bloom: latestHeader.Bloom,
Difficulty: latestHeader.Difficulty,
Number: new(big.Int).Add(latestBlock.Number(), big.NewInt(1)),
GasLimit: latestHeader.GasLimit,
GasUsed: latestHeader.GasUsed,
Time: latestHeader.Time + 1,
Extra: latestHeader.Extra,
MixDigest: latestHeader.MixDigest,
Nonce: latestHeader.Nonce,
},
body,
nil,
hasher,
&FakeBlockType{},
),
)
return derive.BlockToEspressoBatch(rollupCfg, block)
}

// SUBMIT_VALID_DATA_WITH_WRONG_SIGNATURE_INTERVAlL is the interval / frequency
Expand All @@ -398,7 +366,6 @@ const SUBMIT_VALID_DATA_WITH_WRONG_SIGNATURE_INTERVAlL = 500 * time.Millisecond
func submitValidDataWithWrongSignature(ctx context.Context, rollupCfg *rollup.Config, l2Seq *ethclient.Client, espCli espressoClient.EspressoClient, namespace uint64) {
// We only want to submit garbage data to the sequencer so quickly
ticker := time.NewTicker(SUBMIT_VALID_DATA_WITH_WRONG_SIGNATURE_INTERVAlL)
stackTrie := trie.NewStackTrie(func(path []byte, hash geth_common.Hash, blob []byte) {})

for {
select {
Expand All @@ -417,7 +384,7 @@ func submitValidDataWithWrongSignature(ctx context.Context, rollupCfg *rollup.Co
}
randomChainSigner := factory(big.NewInt(int64(namespace)), geth_common.Address{})

batch, err := createMaliciousEspressoBatch(ctx, l2Seq, rollupCfg, stackTrie)
batch, err := createMaliciousEspressoBatch(ctx, l2Seq, rollupCfg)

if err != nil {
// Skip
Expand Down Expand Up @@ -479,7 +446,6 @@ func submitValidDataWithRandomSignature(
) {
// We only want to submit garbage data to the sequencer so quickly
ticker := time.NewTicker(SUBMIT_VALID_DATA_WITH_RANDOM_SIGNATURE_INTERVAL)
stackTrie := trie.NewStackTrie(func(path []byte, hash geth_common.Hash, blob []byte) {})
signer := new(fakeChainSigner)

for {
Expand All @@ -489,7 +455,7 @@ func submitValidDataWithRandomSignature(
case <-ticker.C:
}

batch, err := createMaliciousEspressoBatch(ctx, l2Seq, rollupCfg, stackTrie)
batch, err := createMaliciousEspressoBatch(ctx, l2Seq, rollupCfg)

if err != nil {
// Skip
Expand Down
5 changes: 2 additions & 3 deletions espresso/environment/11_forced_transaction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,12 @@ import (
"time"

env "github.com/ethereum-optimism/optimism/espresso/environment"
"github.com/ethereum-optimism/optimism/op-core/predeploys"
"github.com/ethereum-optimism/optimism/op-e2e/bindings"
"github.com/ethereum-optimism/optimism/op-e2e/config"
"github.com/ethereum-optimism/optimism/op-e2e/e2eutils/wait"
"github.com/ethereum-optimism/optimism/op-e2e/system/e2esys"
"github.com/ethereum-optimism/optimism/op-service/predeploys"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/stretchr/testify/require"
)

Expand Down Expand Up @@ -94,7 +93,7 @@ func ForcedTransaction(t *testing.T, withSmallSequencerWindow bool, withEspresso
withdrawalAmount := new(big.Int).SetUint64(1000)
tx, err := portal.DepositTransaction(
opts,
common.HexToAddress(predeploys.L2ToL1MessagePasser),
predeploys.L2ToL1MessagePasserAddr,
withdrawalAmount,
uint64(300_000),
false,
Expand Down
Loading
Loading