core: inherit prior fork blob schedule when overriding amsterdam

--override.amsterdam onto a pre-amsterdam config left blobSchedule.amsterdam
unset, which CheckConfigForkOrder rejects. Inherit the most recent preceding
fork's blob params (Amsterdam/EIP-7928 doesn't change blob parameters).
This commit is contained in:
Rafael Matias 2026-06-23 15:46:42 +02:00
parent 037881aa8a
commit d826ffad51
No known key found for this signature in database
GPG key ID: 1BC39532FB4A2DBD

View file

@ -294,6 +294,14 @@ func (o *ChainOverrides) apply(cfg *params.ChainConfig) error {
}
if o.OverrideAmsterdam != nil {
cfg.AmsterdamTime = o.OverrideAmsterdam
// Amsterdam (EIP-7928 BAL) doesn't change blob parameters. When the
// bundled config has no amsterdam blobSchedule entry yet, inherit the
// most recent preceding fork's so CheckConfigForkOrder validates.
if cfg.BlobScheduleConfig != nil && cfg.BlobScheduleConfig.Amsterdam == nil {
if prev := latestBlobConfig(cfg.BlobScheduleConfig); prev != nil {
cfg.BlobScheduleConfig.Amsterdam = prev
}
}
}
if o.OverrideBPO1 != nil {
cfg.BPO1Time = o.OverrideBPO1
@ -307,6 +315,22 @@ func (o *ChainOverrides) apply(cfg *params.ChainConfig) error {
return cfg.CheckConfigForkOrder()
}
// latestBlobConfig returns the blob configuration of the most recent fork
// defined in bs (scanning newest-first, excluding Amsterdam/UBT), or nil if none
// is set. Used to give a newly-overridden fork sensible blob parameters.
func latestBlobConfig(bs *params.BlobScheduleConfig) *params.BlobConfig {
for _, c := range []*params.BlobConfig{
bs.BPO5, bs.BPO4, bs.BPO3, bs.BPO2, bs.BPO1,
bs.Osaka, bs.Prague, bs.Cancun,
} {
if c != nil {
return c
}
}
return nil
}
// SetupGenesisBlock writes or updates the genesis block in db.
// The block that will be used is:
//