@@ -395,22 +395,52 @@ proc validateChainConfig(conf: ChainConfig): bool =
395395 if cur.time.isSome:
396396 lastTimeBasedFork = cur
397397
398+ func numBPOForks (): int {.compileTime .} =
399+ for x in Prague .. HardFork .high:
400+ if toLowerAscii ($ x).startsWith (" bpo" ):
401+ inc result
402+
403+ func getBPOForks (N: static [int ]): array [N, HardFork ] {.compileTime .} =
404+ var i = 0
405+ for x in Prague .. HardFork .high:
406+ if toLowerAscii ($ x).startsWith (" bpo" ):
407+ result [i] = x
408+ inc i
409+
410+ func getRegularForks (N: static [int ]): array [N, HardFork ] {.compileTime .} =
411+ var i = 0
412+ for x in Prague .. HardFork .high:
413+ if not toLowerAscii ($ x).startsWith (" bpo" ):
414+ result [i] = x
415+ inc i
416+
417+ const
418+ NumForksWithBlobSchedule = HardFork .high.int - Prague .int + 1 # minus Cancun, but cardinal + 1
419+ NumBPOForks = numBPOForks ()
420+ NumRegularForks = NumForksWithBlobSchedule - NumBPOForks
421+ BPOForks = getBPOForks (NumBPOForks )
422+ RegularForks = getRegularForks (NumRegularForks )
423+
398424proc configureBlobSchedule (conf: ChainConfig ) =
399- var prevFork = Cancun
400425 if conf.blobSchedule[Cancun ].isNone:
401426 conf.blobSchedule[Cancun ] = Opt .some (BlobSchedule (target: 3 'u64 , max: 6 'u64 , baseFeeUpdateFraction: 3_338_477 'u64 ))
402427 else :
403428 if conf.blobSchedule[Cancun ].value.baseFeeUpdateFraction == 0 :
404429 conf.blobSchedule[Cancun ].value.baseFeeUpdateFraction = 3_338_477 'u64
405430
406- for fork in Prague .. HardFork .high:
407- if conf.blobSchedule[fork].isNone:
408- conf.blobSchedule[fork] = conf.blobSchedule[prevFork]
409- if conf.blobSchedule[fork].value.baseFeeUpdateFraction == 0 :
410- # Set fallback to Cancun's baseFeeUpdateFraction and prevent division by zero
411- warn " baseFeeUpdateFraction not set, fallback to Cancun's" , fork= fork
412- conf.blobSchedule[fork].value.baseFeeUpdateFraction = 3_338_477 'u64
413- prevFork = fork
431+ template setBlobScheduleWithFallback (forks) =
432+ var prevFork = Cancun
433+ for fork in forks:
434+ if conf.blobSchedule[fork].isNone:
435+ conf.blobSchedule[fork] = conf.blobSchedule[prevFork]
436+ if conf.blobSchedule[fork].value.baseFeeUpdateFraction == 0 :
437+ # Set fallback to Cancun's baseFeeUpdateFraction and prevent division by zero
438+ warn " baseFeeUpdateFraction not set, fallback to Cancun's" , fork= fork
439+ conf.blobSchedule[fork].value.baseFeeUpdateFraction = 3_338_477 'u64
440+ prevFork = fork
441+
442+ setBlobScheduleWithFallback (RegularForks )
443+ setBlobScheduleWithFallback (BPOForks )
414444
415445proc parseGenesis * (data: string ): Genesis
416446 {.gcsafe .} =
0 commit comments