Celadon audit - #1072
Draft
tomatoishealthy wants to merge 13 commits into
Draft
Celadon audit#1072tomatoishealthy wants to merge 13 commits into
tomatoishealthy wants to merge 13 commits into
Conversation
…o ha-el The devnet execution-layer nodes were not peered with each other, and the HA cluster could not reach a usable state at all. Three independent causes, each failing silently: reth had no peers. docker-compose-reth.yml set --disable-discovery but never supplied --trusted-peers, and reth does not read geth's static-nodes.json, so net_peerCount was 0x0 on every reth node. It also mounted no nodekey, so reth minted a random identity per datadir and no peer list could be written ahead of time. The HA execution nodes never peered with each other under either client: they mount static-nodes.json, which lists only morph-el-0 and morph-el-1. The HA consensus nodes never peered with each other either. setup_nodes.py overwrote the persistent_peers generated by --populate-persistent-peers with a hardcoded node-0/node-1/node-2 list. node-1 runs with MORPH_NODE_DERIVATION_VERIFY_MODE=layer1 and never starts tendermint, and node-2 has no compose service, so each ha-node-* had exactly one reachable peer and none of each other. The sequencer hand-over waits for the block pool to report caught up, which never happened, so make devnet-up-cluster* stalled at height 0 - the failure mode already described in ops/README.md. Hardcoding the IDs could not have worked anyway: ops/docker/ has no ha-node0/1/2 directories, so those nodes keep the random key tendermint generates. Changes: - docker-compose-reth.yml points every node at the same nodekey*/ha-nodekey* file geth uses, via --p2p-secret-key, and passes explicit --trusted-peers, so both clients derive the same enode for a node. - static-nodes-cluster.json gives the geth cluster path the peers it lacked. - ha-nodekey0/1/2 and nodekey2 had a trailing newline, which reth rejects with "malformed or out-of-range secret key" while geth tolerates it. Stripped, so one file serves both clients. - setup_nodes.py derives each node ID from the node_key.json that actually ends up installed, and lists only the nodes that run tendermint. Copying the keys moved ahead of building the peer list, since overwriting a node_key.json changes the node's identity. Tendermint RPC now binds 0.0.0.0 so the ports in the README endpoint table are reachable from the host. - docker-compose-cluster.yml is layered before docker-compose-reth.yml. Later -f files win, so the previous order let the cluster file's geth image and entrypoint override the reth override, and devnet-up-cluster-reth silently ran geth for ha-el-*. - ha-geth-0/1/2 renamed to ha-el-0/1/2, since either client can back these services. The .devnet/ha-el* data directories already used that name. Verified with make devnet-clean-build && make devnet-up-cluster-reth: all five execution nodes report 4 peers and identical height, node-0 and the three ha-node-* report 3 peers each, the HA leader produces blocks, and the reth enodes match the values the geth static-nodes files have always used.
…1057) Co-authored-by: allen.wu <allen.wu@bitget.com>
Co-authored-by: allen.wu <allen.wu@bitget.com>
…nect fix(devnet): peer the execution and consensus nodes, rename ha-geth to ha-el
…known (#1041) Co-authored-by: allen.wu <allen.wu@bitget.com>
docker-compose-reth.yml carried reth overrides for ha-el-0/1/2 on the
assumption that compose would ignore them unless
docker-compose-cluster.yml was layered in as well. It does not: compose
creates any service a later -f file names, whether or not an earlier
file declared it. So `make devnet-up-reth` also started three ha-el-*
containers, which only got the -f file's own ha-nodekey mount and none
of the /genesis.json or /jwt-secret.txt mounts that live in the cluster
file. All three died immediately with
error: Invalid value '/genesis.json' for --chain <CHAIN_OR_PATH>:
No such file or directory
Move those three service overrides into docker-compose-cluster-reth.yml
and pass it only when both --cluster and reth are asked for, so the
plain reth devnet now resolves to exactly the geth devnet's service
list. The cluster path is unchanged: ha-el-* still come up on the reth
image and entrypoint with the cluster's mounts intact.
Claude Code keeps its git worktrees under .claude/worktrees. On a machine that has used one, .claude is 1.0 GB -- comparable to .git (1.1 GB) and prover (1.2 GB), both of which .dockerignore already excludes. Nothing under it is ever needed by a build, so every image build was shipping it as build context: ~3.0 GB transferred where ~2.0 GB is required.
…erride fix(devnet): scope the ha-el reth overrides, and keep .claude out of the build context
Co-authored-by: allen.wu <allen.wu@bitget.com>
#1065) Co-authored-by: kukoo.yue <kukoo.yue@bitget.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: allen.wu <allen.wu@bitget.com>
Point every Tendermint module replacement at morph-l2/tendermint#45's merged commit and refresh the affected checksums.
…ll-depth chore(deps): update Tendermint for backfill recovery
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueWarning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. 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 |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
No description provided.