diff --git a/yarn-project/validator-client/src/validator.ts b/yarn-project/validator-client/src/validator.ts index 5cedbd0370e1..682aaf6997ed 100644 --- a/yarn-project/validator-client/src/validator.ts +++ b/yarn-project/validator-client/src/validator.ts @@ -352,6 +352,15 @@ export class ValidatorClient extends (EventEmitter as new () => WatcherEmitter) return false; } + // Ignore proposals from ourselves (may happen in HA setups) + if (this.getValidatorAddresses().some(addr => addr.equals(proposer))) { + this.log.warn(`Ignoring block proposal from self for slot ${slotNumber}`, { + proposer: proposer.toString(), + slotNumber, + }); + return false; + } + // Check if we're in the committee (for metrics purposes) const inCommittee = await this.epochCache.filterInCommittee(slotNumber, this.getValidatorAddresses()); const partOfCommittee = inCommittee.length > 0; @@ -453,6 +462,15 @@ export class ValidatorClient extends (EventEmitter as new () => WatcherEmitter) return undefined; } + // Ignore proposals from ourselves (may happen in HA setups) + if (this.getValidatorAddresses().some(addr => addr.equals(proposer))) { + this.log.warn(`Ignoring block proposal from self for slot ${slotNumber}`, { + proposer: proposer.toString(), + slotNumber, + }); + return undefined; + } + // Check that I have any address in current committee before attesting const inCommittee = await this.epochCache.filterInCommittee(slotNumber, this.getValidatorAddresses()); const partOfCommittee = inCommittee.length > 0;