feat(ethexe-consensus): introduce Watcher non-signing validator state#5531
Draft
grishasobol wants to merge 4 commits into
Draft
feat(ethexe-consensus): introduce Watcher non-signing validator state#5531grishasobol wants to merge 4 commits into
grishasobol wants to merge 4 commits into
Conversation
e528fa8 to
af71bad
Compare
- Bump EXPECTED_TYPE_INFO_HASH to match db types as drifted via merged master. - Update CLONES_CONTRACT_START to include Gear copyright header and pragma ^0.8.35 so the generator output matches the committed Clones.sol. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Rust stable 1.96 (rust-lld) no longer treats undefined wasm symbols as imports by default for the wasm32v1-none target, causing the test-program (and any gear program built via wasm-builder) to fail linking with "undefined symbol: gr_debug" etc. Pass --import-undefined through the existing rustc link-arg list so syscall symbols and the gear-dlmalloc allocator hooks remain resolvable as wasm imports. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
Introduces a
Watcherstate in the ethexe consensus validator state machine — the non-signing twin ofParticipant. Nodes without a validator key (or whose key is not in the current era's validator set) enterWatcheronce a coordinator is elected and follow the samevalidate_batch_commitmentpath as participants, populating the localoutgoing_actionscache without signing.ethexe/consensus/src/validator/watcher.rs(468 lines): waits for the coordinator's validation request, re-derives the batch, transitions back toIdle.BatchCommitmentManagerconsolidates value-claim persistence: the two call sites that previously calledstore_outgoing_actions_for_chain_commitment(&ChainCommitment)are replaced with a singlepersist_outgoing_actions(&BatchCommitment)invoked after the batch is validated against the requested digest. Both validators and watchers persist via this same path so any node can servemirror.outgoing_actions(state_hash)for merkle-proof clients.validator/mod.rsroutes elected/coordinator transitions to eitherParticipant(signing) orWatcher(non-signing) based on whether the local key is in the era's validator set.ethexe/service/src/tests/mod.rsadds a non-signing-node scenario (env helpers updated accordingly).Test plan
cargo nextest run -p ethexe-consensuscargo nextest run -p ethexe-service(incl. the new non-validator scenario)Based on top of #5XXX (
av/ethexe-value-claims-merkle-root).🤖 Generated with Claude Code