Skip to content

fix(devnet): reliable local devnet L1 startup and arm64 build - #1029

Merged
tomatoishealthy merged 4 commits into
mainfrom
fix/devnet-geth-insecure-unlock
Jul 30, 2026
Merged

fix(devnet): reliable local devnet L1 startup and arm64 build#1029
tomatoishealthy merged 4 commits into
mainfrom
fix/devnet-geth-insecure-unlock

Conversation

@tomatoishealthy

@tomatoishealthy tomatoishealthy commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Summary

A few related fixes to get the local devnet (make devnet-up) starting reliably, especially on arm64 / Apple Silicon. Four changes:

  1. Drop removed --allow-insecure-unlock (docker-compose-devnet.yml) — a newer geth removed this flag, so layer1-el crash-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).
  2. Pin L1 images to stable versions instead of :latest (which drifts and caused Initialize morph #1): geth → v1.17.5, lighthouse → v8.2.1 — the versions verified working with this devnet.
  3. Bump morph-da-codec (common/go.mod, common/go.sum) to the commit that ships libmorph_da_zstd_linux_arm64.a. The previous pin only had linux/amd64 + darwin/arm64 libs, so building tx-submitter/node for linux/arm64 failed with undefined reference to morph_da_zstd_*.
  4. Fix 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-el starts and L1 produces blocks (no restart loop)
  • tx-submitter builds on arm64 (cgo links morph_da_zstd_* successfully)
  • node-1 derives batches from L1 and its block height advances (0 → batch end)
  • full make devnet-up on a clean checkout (arm64/Mac)

Summary by CodeRabbit

  • Security Improvements

    • Removed insecure account unlocking from the development network’s Layer 1 node configuration.
  • Infrastructure / Reliability

    • Pinned the development network’s execution client and consensus client images to specific versions (instead of floating “latest”) for more predictable behavior.
    • Added clarifying comments to the development network container settings for easier maintenance.

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>
@tomatoishealthy
tomatoishealthy requested a review from a team as a code owner July 29, 2026 08:39
@tomatoishealthy
tomatoishealthy requested review from twcctop and removed request for a team July 29, 2026 08:39

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The 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.

Changes

Devnet container configuration

Layer / File(s) Summary
Pin devnet images and secure Geth startup
ops/docker/docker-compose-devnet.yml, ops/docker/ha-nodekey2
Execution and consensus services use pinned images, and the Geth command no longer includes --allow-insecure-unlock; the nodekey value is unchanged.

Codec dependency update

Layer / File(s) Summary
Update codec binding dependency
common/go.mod
The Morph DA codec binding is updated to a newer pseudo-version, with dependency ordering adjusted.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: twcctop

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main changes: fixing devnet L1 startup and updating dependencies for arm64 support.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/devnet-geth-insecure-unlock

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

allen.wu and others added 3 commits July 30, 2026 12:03
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>
@tomatoishealthy tomatoishealthy changed the title fix(ops): drop removed --allow-insecure-unlock flag from devnet L1 geth fix(devnet): reliable local devnet L1 startup and arm64 build Jul 30, 2026
@tomatoishealthy
tomatoishealthy merged commit 655034b into main Jul 30, 2026
7 checks passed
@tomatoishealthy
tomatoishealthy deleted the fix/devnet-geth-insecure-unlock branch July 30, 2026 05:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants