fix(devnet): reliable local devnet L1 startup and arm64 build - #1029
Conversation
ethereum/client-go:latest no longer defines --allow-insecure-unlock, so
layer1-el crash-looped on startup ("flag provided but not defined"). The
flag is unused here (no --unlock is set; the PoS devnet drives block
production through the engine API), so removing it restores L1 startup
with no behavioral change.
Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Claude Code Review
Claude Code Review is paused for this repository. To reconnect it, an admin of this repository's GitHub organization (or the account owner, for personal repositories) who can also manage your Claude organization's Code Review settings needs to re-link GitHub in Code Review settings. This is a one-time step.
Tip: disable this comment in your organization's Code Review settings.
📝 WalkthroughWalkthroughThe devnet configuration pins execution and consensus client images and removes insecure account unlocking from Geth. The common Go module updates the Morph DA codec binding dependency, while the devnet nodekey value remains unchanged. ChangesDevnet container configuration
Codec dependency update
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The L1 images used :latest, which drifts — a newer geth had already removed --allow-insecure-unlock and crash-looped layer1-el. Pin geth to v1.17.5 and lighthouse to v8.2.1 (the stable versions verified working with this devnet) so the L1 stack stays reproducible. Co-authored-by: Cursor <cursoragent@cursor.com>
The pinned morph-da-codec commit shipped only linux/amd64 and darwin/arm64 static libs, so building tx-submitter/node for linux/arm64 failed with "undefined reference to morph_da_zstd_*". Bump to the commit that adds libmorph_da_zstd_linux_arm64.a. Co-authored-by: Cursor <cursoragent@cursor.com>
The HA node-2 nodekey file had a leading space before the hex key, which breaks geth nodekey parsing. Remove it so ha-node-2 loads the intended key. Co-authored-by: Cursor <cursoragent@cursor.com>
Summary
A few related fixes to get the local devnet (
make devnet-up) starting reliably, especially on arm64 / Apple Silicon. Four changes:--allow-insecure-unlock(docker-compose-devnet.yml) — a newer geth removed this flag, solayer1-elcrash-looped on startup (flag provided but not defined). It was also a no-op here (no--unlock; the PoS L1 drives block production via the engine API).:latest(which drifts and caused Initialize morph #1): geth →v1.17.5, lighthouse →v8.2.1— the versions verified working with this devnet.morph-da-codec(common/go.mod,common/go.sum) to the commit that shipslibmorph_da_zstd_linux_arm64.a. The previous pin only had linux/amd64 + darwin/arm64 libs, so buildingtx-submitter/nodefor linux/arm64 failed withundefined reference to morph_da_zstd_*.ha-nodekey2— strip a stray leading space before the hex key that broke geth's nodekey parsing for HA node-2 (key content unchanged).Test plan
layer1-elstarts and L1 produces blocks (no restart loop)tx-submitterbuilds on arm64 (cgo linksmorph_da_zstd_*successfully)node-1derives batches from L1 and its block height advances (0 → batch end)make devnet-upon a clean checkout (arm64/Mac)Summary by CodeRabbit
Security Improvements
Infrastructure / Reliability