From b53fa6c6d90ddcaf69a768487546b595f7018b83 Mon Sep 17 00:00:00 2001 From: Wanwiset Peerapatanapokin Date: Mon, 9 Feb 2026 16:06:16 +0700 Subject: [PATCH] skip gaslimit check on genesis block (#1968) --- consensus/XDPoS/engines/engine_v2/engine.go | 10 ++++++++-- consensus/XDPoS/engines/engine_v2/verifyHeader.go | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/consensus/XDPoS/engines/engine_v2/engine.go b/consensus/XDPoS/engines/engine_v2/engine.go index 0b636ec220..90c8096d19 100644 --- a/consensus/XDPoS/engines/engine_v2/engine.go +++ b/consensus/XDPoS/engines/engine_v2/engine.go @@ -347,10 +347,13 @@ func (x *XDPoS_v2) Prepare(chain consensus.ChainReader, header *types.Header) er if parent == nil { return consensus.ErrUnknownAncestor } + // Ensure gas settings are bounded - if err := misc.VerifyGaslimit(parent.GasLimit, header.GasLimit); err != nil { + err = misc.VerifyGaslimit(parent.GasLimit, header.GasLimit) + if err != nil && parent.Number.Sign() != 0 { // skip genesis block return err } + if header.GasUsed > header.GasLimit { return fmt.Errorf("gas used exceeded gaslimit, gas used: %d, gas limit: %d", header.GasUsed, header.GasLimit) } @@ -458,10 +461,13 @@ func (x *XDPoS_v2) Finalize(chain consensus.ChainReader, header *types.Header, s if parentHeader == nil { return nil, consensus.ErrUnknownAncestor } + // Ensure gas settings are bounded - if err := misc.VerifyGaslimit(parentHeader.GasLimit, header.GasLimit); err != nil { + err = misc.VerifyGaslimit(parentHeader.GasLimit, header.GasLimit) + if err != nil && parentHeader.Number.Sign() != 0 { // skip genesis block return nil, err } + if header.GasUsed > header.GasLimit { return nil, fmt.Errorf("gas used exceeded gaslimit, gas used: %d, gas limit: %d", header.GasUsed, header.GasLimit) } diff --git a/consensus/XDPoS/engines/engine_v2/verifyHeader.go b/consensus/XDPoS/engines/engine_v2/verifyHeader.go index f57b22975c..a1c75e85bc 100644 --- a/consensus/XDPoS/engines/engine_v2/verifyHeader.go +++ b/consensus/XDPoS/engines/engine_v2/verifyHeader.go @@ -65,6 +65,7 @@ func (x *XDPoS_v2) verifyHeader(chain consensus.ChainReader, header *types.Heade if err != nil && parent.Number.Sign() != 0 { // skip genesis block return err } + // Ensure gas used is less than or equal to gas limit if header.GasUsed > header.GasLimit { return fmt.Errorf("gas used exceeded gaslimit, gas used: %d, gas limit: %d", header.GasUsed, header.GasLimit)