Skip to content

fix(validator): do not process proposals from self#20314

Merged
spalladino merged 1 commit intomerge-train/spartanfrom
palla/ignore-self-proposals
Feb 9, 2026
Merged

fix(validator): do not process proposals from self#20314
spalladino merged 1 commit intomerge-train/spartanfrom
palla/ignore-self-proposals

Conversation

@spalladino
Copy link
Contributor

In a HA setup, if we receive a block or checkpoint proposal from an address we control, there's no point in processing it. We should just add it to the attestation pool to track equivocations (which is handled by the libp2p service), and that's it.

}

// Ignore proposals from ourselves (may happen in HA setups)
if (this.getValidatorAddresses().some(addr => addr.equals(proposer))) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Presumably this isn't going to prohibit propagation?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

No, this kicks in after the inivial validations run in the libp2p service that gate propagation

In a HA setup, if we receive a block or checkpoint proposal from an
address we control, there's no point in processing it. We should just
add it to the attestation pool to track equivocations (which is handled
by the libp2p service), and that's it.
@spalladino spalladino force-pushed the palla/ignore-self-proposals branch from 9f06fe5 to 688edfd Compare February 9, 2026 22:32
@spalladino spalladino enabled auto-merge (squash) February 9, 2026 22:33
@AztecBot
Copy link
Collaborator

AztecBot commented Feb 9, 2026

Flakey Tests

🤖 says: This CI run detected 1 tests that failed, but were tolerated due to a .test_patterns.yml entry.

\033FLAKED\033 (8;;http://ci.aztec-labs.com/e45675d6be24ef58�e45675d6be24ef588;;�):  yarn-project/end-to-end/scripts/run_test.sh simple src/e2e_epochs/epochs_mbps.parallel.test.ts "builds multiple blocks per slot with transactions anchored to proposed blocks" (229s) (code: 1) group:e2e-p2p-epoch-flakes

@spalladino spalladino merged commit 7b3a3fb into merge-train/spartan Feb 9, 2026
11 checks passed
@spalladino spalladino deleted the palla/ignore-self-proposals branch February 9, 2026 22:49
github-merge-queue bot pushed a commit that referenced this pull request Feb 10, 2026
BEGIN_COMMIT_OVERRIDE
chore: add new retention policy to cloudflare R2 (#20276)
fix: k8s enricher opt-in (#20279)
feat(slasher): add duplicate attestation slashing (#20218)
chore: improve HA e2e (#20280)
chore(test): fix p2p integration test (#20283)
chore(claude): minor changes to claude md and rules (#20284)
chore(test): fix p2p message propagation test build error (#20289)
chore(claude): add actor info to analyze-logs (#20290)
feat: tx file store source for tx collector (#20165)
chore(test): fix validator integration test (#20288)
chore(e2e): remove setup with remote env in e2e tests (#20294)
chore: fix test flakes (#20295)
chore: user-perceived latency explorer (#20298)
fix(p2p): fix flaky file store tx collection tests (#20318)
chore(spartan): add mbps-net env definition (#20308)
fix(validator): do not process proposals from self (#20314)
chore(ci): track history in merge-trains (#20321)
fix(e2e): enable broadcastEquivocatedProposals in duplicate proposal
slash test (#20320)
chore: use respective get endpoints for rollup test instead of only
port-forward (#20327)
END_COMMIT_OVERRIDE
spalladino added a commit that referenced this pull request Feb 10, 2026
With the fix from
#20314, nodes now
reject proposals that come from a validator key they themselves control.

In the epochs mbps test suite, we were sending txs from a wallet created
against the original node created, which is defined _with all validator
keys_ so it can create the initial block with the initial tx. So, when
this node's sequencer was later stopped and the validator keys were
assigned to individual nodes, this original node never accepted any
block proposal, since it considered it to be its own. So it failed to
advance its own proposed chain, so the test failed.

This PR fixes it so we just update the reference to the node in the
wallet. The proper fix should be killing the initial node altogether and
removing it from setup, and dealing with the initial timestamp issue
somehow else.
spalladino added a commit that referenced this pull request Feb 10, 2026
With the fix from
#20314, nodes now
reject proposals that come from a validator key they themselves control.

In the epochs mbps test suite, we were sending txs from a wallet created
against the original node created, which is defined _with all validator
keys_ so it can create the initial block with the initial tx. So, when
this node's sequencer was later stopped and the validator keys were
assigned to individual nodes, this original node never accepted any
block proposal, since it considered it to be its own. So it failed to
advance its own proposed chain, so the test failed.

This PR fixes it so we just update the reference to the node in the
wallet. The proper fix should be killing the initial node altogether and
removing it from setup, and dealing with the initial timestamp issue
somehow else.
github-merge-queue bot pushed a commit that referenced this pull request Feb 10, 2026
With the fix from
#20314, nodes now
reject proposals that come from a validator key they themselves control.

In the epochs mbps test suite, we were sending txs from a wallet created
against the original node created, which is defined _with all validator
keys_ so it can create the initial block with the initial tx. So, when
this node's sequencer was later stopped and the validator keys were
assigned to individual nodes, this original node never accepted any
block proposal, since it considered it to be its own. So it failed to
advance its own proposed chain, so the test failed.

This PR fixes it so we just update the reference to the node in the
wallet. The proper fix should be killing the initial node altogether and
removing it from setup, and dealing with the initial timestamp issue
somehow else.
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.

3 participants