// Copyright (C) 2019-2025, Lux Industries, Inc. All rights reserved. // See the file LICENSE for licensing terms. // // This file is a derived work, based on the go-ethereum library whose original // notices appear below. // // It is distributed under a license compatible with the licensing terms of the // original code from which it is derived. // // Much love to the original authors for their work. // ********** // Copyright 2025 The go-ethereum Authors // This file is part of the go-ethereum library. // // The go-ethereum library is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // The go-ethereum library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . package simulated import ( "math/big" "github.com/luxfi/evm/eth/ethconfig" "github.com/luxfi/evm/node" "github.com/luxfi/evm/params" ) // WithBlockGasLimit configures the simulated backend to target a specific gas limit // when producing blocks. func WithBlockGasLimit(gaslimit uint64) func(nodeConf *node.Config, ethConf *ethconfig.Config) { return func(nodeConf *node.Config, ethConf *ethconfig.Config) { ethConf.Genesis.GasLimit = gaslimit params.GetExtra(ethConf.Genesis.Config).FeeConfig.GasLimit = new(big.Int).SetUint64(gaslimit) } } // WithCallGasLimit configures the simulated backend to cap eth_calls to a specific // gas limit when running client operations. func WithCallGasLimit(gaslimit uint64) func(nodeConf *node.Config, ethConf *ethconfig.Config) { return func(nodeConf *node.Config, ethConf *ethconfig.Config) { ethConf.RPCGasCap = gaslimit } } // WithChainConfig configures the simulated backend to use a custom chain config. // This is useful for testing with legacy bytecode that requires pre-Shanghai/Cancun EVM. func WithChainConfig(config *params.ChainConfig) func(nodeConf *node.Config, ethConf *ethconfig.Config) { return func(nodeConf *node.Config, ethConf *ethconfig.Config) { ethConf.Genesis.Config = config } }