@@ -20,6 +20,7 @@ export class ProposalValidator {
2020 private maxTxsPerBlock ?: number ;
2121 private maxBlocksPerCheckpoint ?: number ;
2222 private pipeliningWindow : PipeliningWindow ;
23+ private skipSlotValidation : boolean ;
2324 private signatureContext : CoordinationSignatureContext ;
2425
2526 constructor (
@@ -29,6 +30,7 @@ export class ProposalValidator {
2930 maxTxsPerBlock ?: number ;
3031 maxBlocksPerCheckpoint ?: number ;
3132 p2pPropagationTime ?: number ;
33+ skipSlotValidation ?: boolean ;
3234 signatureContext : CoordinationSignatureContext ;
3335 } ,
3436 loggerName : string ,
@@ -38,6 +40,7 @@ export class ProposalValidator {
3840 this . maxTxsPerBlock = opts . maxTxsPerBlock ;
3941 this . maxBlocksPerCheckpoint = opts . maxBlocksPerCheckpoint ;
4042 this . pipeliningWindow = new PipeliningWindow ( epochCache , { p2pPropagationTime : opts . p2pPropagationTime } ) ;
43+ this . skipSlotValidation = opts . skipSlotValidation ?? false ;
4144 this . signatureContext = opts . signatureContext ;
4245 this . logger = createLogger ( loggerName ) ;
4346 }
@@ -60,7 +63,7 @@ export class ProposalValidator {
6063 const { targetSlot, nextSlot } = this . epochCache . getTargetAndNextSlot ( ) ;
6164
6265 const slotNumber = proposal . slotNumber ;
63- if ( slotNumber !== targetSlot && slotNumber !== nextSlot ) {
66+ if ( ! this . skipSlotValidation && slotNumber !== targetSlot && slotNumber !== nextSlot ) {
6467 // When pipelining, accept proposals for the current slot (built in the previous slot)
6568 // if they're still within the shared proposal acceptance window.
6669 if ( this . pipeliningWindow . acceptsProposal ( slotNumber ) ) {
0 commit comments