diff --git a/eth/catalyst/simulated_beacon_test.go b/eth/catalyst/simulated_beacon_test.go index 711e8f1d60..e1482225e0 100644 --- a/eth/catalyst/simulated_beacon_test.go +++ b/eth/catalyst/simulated_beacon_test.go @@ -49,7 +49,10 @@ func startSimulatedBeaconEthService(t *testing.T, genesis *core.Genesis, period t.Fatal("can't create node:", err) } - ethcfg := ðconfig.Config{Genesis: genesis, SyncMode: downloader.FullSync, TrieTimeout: time.Minute, TrieDirtyCache: 256, TrieCleanCache: 256, Miner: miner.DefaultConfig} + m := miner.DefaultConfig + m.GasCeil = new(uint64) + // *m.GasCeil = 30_000_000 + ethcfg := ðconfig.Config{Genesis: genesis, SyncMode: downloader.FullSync, TrieTimeout: time.Minute, TrieDirtyCache: 256, TrieCleanCache: 256, Miner: m} ethservice, err := eth.New(n, ethcfg) if err != nil { t.Fatal("can't create eth service:", err) diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go index 1b7e26fb74..f648d2398f 100644 --- a/ethclient/ethclient_test.go +++ b/ethclient/ethclient_test.go @@ -33,6 +33,7 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/eth/ethconfig" + "github.com/ethereum/go-ethereum/miner" "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc" @@ -219,7 +220,7 @@ func newTestBackend(t *testing.T) (*node.Node, []*types.Block) { t.Fatalf("can't create new node: %v", err) } // Create Ethereum Service - config := ðconfig.Config{Genesis: genesis, RPCGasCap: 1000000} + config := ðconfig.Config{Genesis: genesis, RPCGasCap: 1000000, Miner: miner.Config{GasCeil: new(uint64)}} ethservice, err := eth.New(n, config) if err != nil { t.Fatalf("can't create new ethereum service: %v", err) diff --git a/miner/miner_test.go b/miner/miner_test.go index b92febdd12..ca9d5531d3 100644 --- a/miner/miner_test.go +++ b/miner/miner_test.go @@ -164,6 +164,7 @@ func createMiner(t *testing.T) *Miner { // Create Miner backend := NewMockBackend(bc, txpool) + config.GasCeil = new(uint64) miner := New(backend, config, engine) return miner } diff --git a/miner/worker.go b/miner/worker.go index d2b9d35eee..56d32cdcab 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -173,21 +173,23 @@ func (miner *Miner) prepareWork(genParams *generateParams, witness bool) (*envir timestamp = parent.Time + 1 } useEip7783 := miner.config.GasCeil == nil - var gasLimit uint64 + var gasCeil uint64 + if useEip7783 { parentNumber := parent.Number if parentNumber == nil { parentNumber = common.Big0 } - gasLimit = eip7783.CalcGasLimitEIP7783(parentNumber, miner.config.EIP7783BlockNumStart, miner.config.EIP7783InitialGasLimit, miner.config.Eip7783IncreaseRate, miner.config.EIP7783GasLimitCap) + gasCeil = eip7783.CalcGasLimitEIP7783(new(big.Int).Add(parentNumber, common.Big1), miner.config.EIP7783BlockNumStart, miner.config.EIP7783InitialGasLimit, miner.config.Eip7783IncreaseRate, miner.config.EIP7783GasLimitCap) } else { - gasLimit = core.CalcGasLimit(parent.GasLimit, *miner.config.GasCeil) + gasCeil = *miner.config.GasCeil } + // Construct the sealing block header. header := &types.Header{ ParentHash: parent.Hash(), Number: new(big.Int).Add(parent.Number, common.Big1), - GasLimit: gasLimit, + GasLimit: core.CalcGasLimit(parent.GasLimit, gasCeil), Time: timestamp, Coinbase: genParams.coinbase, } @@ -204,7 +206,7 @@ func (miner *Miner) prepareWork(genParams *generateParams, witness bool) (*envir header.BaseFee = eip1559.CalcBaseFee(miner.chainConfig, parent) if !miner.chainConfig.IsLondon(parent.Number) { parentGasLimit := parent.GasLimit * miner.chainConfig.ElasticityMultiplier() - header.GasLimit = core.CalcGasLimit(parentGasLimit, gasLimit) + header.GasLimit = core.CalcGasLimit(parentGasLimit, gasCeil) } } // Run the consensus preparation with the default or customized consensus engine.