diff --git a/params/chainparam.go b/params/chainparam.go index b11390a7f4..c0b72c8df6 100644 --- a/params/chainparam.go +++ b/params/chainparam.go @@ -55,13 +55,16 @@ var BlobSchedule = Define(T[map[forks.Fork]BlobConfig]{ // schedule configuration. func validateBlobSchedule(schedule map[forks.Fork]BlobConfig, cfg *Config2) error { for f := range forks.All() { - if cfg.Scheduled(f) && f.Requires(forks.Cancun) { + if _, defined := schedule[f]; f.BlockBased() && defined { + return fmt.Errorf("contains fork %q with block-number based scheduling", f.ConfigName()) + } + if cfg.Scheduled(f) && f.After(forks.Cancun) { bcfg, defined := schedule[f] if !defined { - return fmt.Errorf("invalid chain configuration: missing entry for fork %q in blobSchedule", f) + return fmt.Errorf("missing entry for fork %q", f.ConfigName()) } else { if err := bcfg.validate(); err != nil { - return fmt.Errorf("invalid chain configuration in blobSchedule for fork %q: %v", f, err) + return fmt.Errorf("invalid blob config for fork %q: %v", f.ConfigName(), err) } } } diff --git a/params/testdata/invalid-blobschedule-blockbased.json b/params/testdata/invalid-blobschedule-blockbased.json new file mode 100644 index 0000000000..72641f2d05 --- /dev/null +++ b/params/testdata/invalid-blobschedule-blockbased.json @@ -0,0 +1,24 @@ +{ + "config": { + "homesteadBlock": 0, + "eip150Block": 0, + "eip155Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "mergeNetsplitBlock": 0, + "shanghaiTime": 900, + "chainId": 99, + "blobSchedule": { + "berlin": { + "target": 8, + "max": 5, + "baseFeeUpdateFraction": 3338477 + } + } + }, + "error": "invalid blobSchedule: contains fork \"berlin\" with block-number based scheduling" +} diff --git a/params/testdata/invalid-blobschedule-missing.json b/params/testdata/invalid-blobschedule-missing.json new file mode 100644 index 0000000000..19d8bc1298 --- /dev/null +++ b/params/testdata/invalid-blobschedule-missing.json @@ -0,0 +1,26 @@ +{ + "config": { + "homesteadBlock": 0, + "eip150Block": 0, + "eip155Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "mergeNetsplitBlock": 0, + "shanghaiTime": 900, + "cancunTime": 1000, + "pragueTime": 1100, + "chainId": 99, + "blobSchedule": { + "cancun": { + "target": 8, + "max": 5, + "baseFeeUpdateFraction": 3338477 + } + } + }, + "error": "invalid blobSchedule: missing entry for fork \"prague\"" +} diff --git a/params/testdata/invalid-blobschedule-validation.json b/params/testdata/invalid-blobschedule-validation.json new file mode 100644 index 0000000000..8db36e56ba --- /dev/null +++ b/params/testdata/invalid-blobschedule-validation.json @@ -0,0 +1,24 @@ +{ + "config": { + "homesteadBlock": 0, + "eip150Block": 0, + "eip155Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "mergeNetsplitBlock": 0, + "shanghaiTime": 900, + "cancunTime": 1000, + "chainId": 99, + "blobSchedule": { + "cancun": { + "target": 8, + "max": 10 + } + } + }, + "error": "invalid blobSchedule: invalid blob config for fork \"cancun\": update fraction must be defined and non-zero" +}