cmd, core, eth, miner: deprecate miner.gastarget flag (#23213)
This commit is contained in:
		
							parent
							
								
									520f25688a
								
							
						
					
					
						commit
						6d175460df
					
				| @ -118,7 +118,7 @@ var ( | |||||||
| 		utils.MiningEnabledFlag, | 		utils.MiningEnabledFlag, | ||||||
| 		utils.MinerThreadsFlag, | 		utils.MinerThreadsFlag, | ||||||
| 		utils.MinerNotifyFlag, | 		utils.MinerNotifyFlag, | ||||||
| 		utils.MinerGasTargetFlag, | 		utils.LegacyMinerGasTargetFlag, | ||||||
| 		utils.MinerGasLimitFlag, | 		utils.MinerGasLimitFlag, | ||||||
| 		utils.MinerGasPriceFlag, | 		utils.MinerGasPriceFlag, | ||||||
| 		utils.MinerEtherbaseFlag, | 		utils.MinerEtherbaseFlag, | ||||||
|  | |||||||
| @ -182,7 +182,6 @@ var AppHelpFlagGroups = []flags.FlagGroup{ | |||||||
| 			utils.MinerNotifyFlag, | 			utils.MinerNotifyFlag, | ||||||
| 			utils.MinerNotifyFullFlag, | 			utils.MinerNotifyFullFlag, | ||||||
| 			utils.MinerGasPriceFlag, | 			utils.MinerGasPriceFlag, | ||||||
| 			utils.MinerGasTargetFlag, |  | ||||||
| 			utils.MinerGasLimitFlag, | 			utils.MinerGasLimitFlag, | ||||||
| 			utils.MinerEtherbaseFlag, | 			utils.MinerEtherbaseFlag, | ||||||
| 			utils.MinerExtraDataFlag, | 			utils.MinerExtraDataFlag, | ||||||
| @ -226,6 +225,7 @@ var AppHelpFlagGroups = []flags.FlagGroup{ | |||||||
| 			utils.LegacyRPCCORSDomainFlag, | 			utils.LegacyRPCCORSDomainFlag, | ||||||
| 			utils.LegacyRPCVirtualHostsFlag, | 			utils.LegacyRPCVirtualHostsFlag, | ||||||
| 			utils.LegacyRPCApiFlag, | 			utils.LegacyRPCApiFlag, | ||||||
|  | 			utils.LegacyMinerGasTargetFlag, | ||||||
| 		}, | 		}, | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
|  | |||||||
| @ -444,11 +444,6 @@ var ( | |||||||
| 		Name:  "miner.notify.full", | 		Name:  "miner.notify.full", | ||||||
| 		Usage: "Notify with pending block headers instead of work packages", | 		Usage: "Notify with pending block headers instead of work packages", | ||||||
| 	} | 	} | ||||||
| 	MinerGasTargetFlag = cli.Uint64Flag{ |  | ||||||
| 		Name:  "miner.gastarget", |  | ||||||
| 		Usage: "Target gas floor for mined blocks", |  | ||||||
| 		Value: ethconfig.Defaults.Miner.GasFloor, |  | ||||||
| 	} |  | ||||||
| 	MinerGasLimitFlag = cli.Uint64Flag{ | 	MinerGasLimitFlag = cli.Uint64Flag{ | ||||||
| 		Name:  "miner.gaslimit", | 		Name:  "miner.gaslimit", | ||||||
| 		Usage: "Target gas ceiling for mined blocks", | 		Usage: "Target gas ceiling for mined blocks", | ||||||
| @ -1386,9 +1381,6 @@ func setMiner(ctx *cli.Context, cfg *miner.Config) { | |||||||
| 	if ctx.GlobalIsSet(MinerExtraDataFlag.Name) { | 	if ctx.GlobalIsSet(MinerExtraDataFlag.Name) { | ||||||
| 		cfg.ExtraData = []byte(ctx.GlobalString(MinerExtraDataFlag.Name)) | 		cfg.ExtraData = []byte(ctx.GlobalString(MinerExtraDataFlag.Name)) | ||||||
| 	} | 	} | ||||||
| 	if ctx.GlobalIsSet(MinerGasTargetFlag.Name) { |  | ||||||
| 		cfg.GasFloor = ctx.GlobalUint64(MinerGasTargetFlag.Name) |  | ||||||
| 	} |  | ||||||
| 	if ctx.GlobalIsSet(MinerGasLimitFlag.Name) { | 	if ctx.GlobalIsSet(MinerGasLimitFlag.Name) { | ||||||
| 		cfg.GasCeil = ctx.GlobalUint64(MinerGasLimitFlag.Name) | 		cfg.GasCeil = ctx.GlobalUint64(MinerGasLimitFlag.Name) | ||||||
| 	} | 	} | ||||||
| @ -1401,6 +1393,9 @@ func setMiner(ctx *cli.Context, cfg *miner.Config) { | |||||||
| 	if ctx.GlobalIsSet(MinerNoVerfiyFlag.Name) { | 	if ctx.GlobalIsSet(MinerNoVerfiyFlag.Name) { | ||||||
| 		cfg.Noverify = ctx.GlobalBool(MinerNoVerfiyFlag.Name) | 		cfg.Noverify = ctx.GlobalBool(MinerNoVerfiyFlag.Name) | ||||||
| 	} | 	} | ||||||
|  | 	if ctx.GlobalIsSet(LegacyMinerGasTargetFlag.Name) { | ||||||
|  | 		log.Warn("The generic --miner.gastarget flag is deprecated and will be removed in the future!") | ||||||
|  | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func setWhitelist(ctx *cli.Context, cfg *ethconfig.Config) { | func setWhitelist(ctx *cli.Context, cfg *ethconfig.Config) { | ||||||
|  | |||||||
| @ -20,6 +20,7 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"strings" | 	"strings" | ||||||
| 
 | 
 | ||||||
|  | 	"github.com/ethereum/go-ethereum/eth/ethconfig" | ||||||
| 	"github.com/ethereum/go-ethereum/node" | 	"github.com/ethereum/go-ethereum/node" | ||||||
| 	"gopkg.in/urfave/cli.v1" | 	"gopkg.in/urfave/cli.v1" | ||||||
| ) | ) | ||||||
| @ -33,7 +34,9 @@ var ShowDeprecated = cli.Command{ | |||||||
| 	Description: "Show flags that have been deprecated and will soon be removed", | 	Description: "Show flags that have been deprecated and will soon be removed", | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| var DeprecatedFlags = []cli.Flag{} | var DeprecatedFlags = []cli.Flag{ | ||||||
|  | 	LegacyMinerGasTargetFlag, | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
| 	// (Deprecated May 2020, shown in aliased flags section)
 | 	// (Deprecated May 2020, shown in aliased flags section)
 | ||||||
| @ -66,6 +69,12 @@ var ( | |||||||
| 		Usage: "API's offered over the HTTP-RPC interface (deprecated and will be removed June 2021, use --http.api)", | 		Usage: "API's offered over the HTTP-RPC interface (deprecated and will be removed June 2021, use --http.api)", | ||||||
| 		Value: "", | 		Value: "", | ||||||
| 	} | 	} | ||||||
|  | 	// (Deprecated July 2021, shown in aliased flags section)
 | ||||||
|  | 	LegacyMinerGasTargetFlag = cli.Uint64Flag{ | ||||||
|  | 		Name:  "miner.gastarget", | ||||||
|  | 		Usage: "Target gas floor for mined blocks (deprecated)", | ||||||
|  | 		Value: ethconfig.Defaults.Miner.GasFloor, | ||||||
|  | 	} | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // showDeprecated displays deprecated flags that will be soon removed from the codebase.
 | // showDeprecated displays deprecated flags that will be soon removed from the codebase.
 | ||||||
| @ -74,7 +83,8 @@ func showDeprecated(*cli.Context) { | |||||||
| 	fmt.Println("The following flags are deprecated and will be removed in the future!") | 	fmt.Println("The following flags are deprecated and will be removed in the future!") | ||||||
| 	fmt.Println("--------------------------------------------------------------------") | 	fmt.Println("--------------------------------------------------------------------") | ||||||
| 	fmt.Println() | 	fmt.Println() | ||||||
| 	// TODO remove when there are newly deprecated flags
 | 	for _, flag := range DeprecatedFlags { | ||||||
| 	fmt.Println("no deprecated flags to show at this time") | 		fmt.Println(flag.String()) | ||||||
|  | 	} | ||||||
| 	fmt.Println() | 	fmt.Println() | ||||||
| } | } | ||||||
|  | |||||||
| @ -103,44 +103,9 @@ func (v *BlockValidator) ValidateState(block *types.Block, statedb *state.StateD | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // CalcGasLimit computes the gas limit of the next block after parent. It aims
 | // CalcGasLimit computes the gas limit of the next block after parent. It aims
 | ||||||
| // to keep the baseline gas above the provided floor, and increase it towards the
 | // to keep the baseline gas close to the provided target, and increase it towards
 | ||||||
| // ceil if the blocks are full. If the ceil is exceeded, it will always decrease
 | // the target if the baseline gas is lower.
 | ||||||
| // the gas allowance.
 | func CalcGasLimit(parentGasLimit, desiredLimit uint64) uint64 { | ||||||
| func CalcGasLimit(parentGasUsed, parentGasLimit, gasFloor, gasCeil uint64) uint64 { |  | ||||||
| 	// contrib = (parentGasUsed * 3 / 2) / 1024
 |  | ||||||
| 	contrib := (parentGasUsed + parentGasUsed/2) / params.GasLimitBoundDivisor |  | ||||||
| 
 |  | ||||||
| 	// decay = parentGasLimit / 1024 -1
 |  | ||||||
| 	decay := parentGasLimit/params.GasLimitBoundDivisor - 1 |  | ||||||
| 
 |  | ||||||
| 	/* |  | ||||||
| 		strategy: gasLimit of block-to-mine is set based on parent's |  | ||||||
| 		gasUsed value.  if parentGasUsed > parentGasLimit * (2/3) then we |  | ||||||
| 		increase it, otherwise lower it (or leave it unchanged if it's right |  | ||||||
| 		at that usage) the amount increased/decreased depends on how far away |  | ||||||
| 		from parentGasLimit * (2/3) parentGasUsed is. |  | ||||||
| 	*/ |  | ||||||
| 	limit := parentGasLimit - decay + contrib |  | ||||||
| 	if limit < params.MinGasLimit { |  | ||||||
| 		limit = params.MinGasLimit |  | ||||||
| 	} |  | ||||||
| 	// If we're outside our allowed gas range, we try to hone towards them
 |  | ||||||
| 	if limit < gasFloor { |  | ||||||
| 		limit = parentGasLimit + decay |  | ||||||
| 		if limit > gasFloor { |  | ||||||
| 			limit = gasFloor |  | ||||||
| 		} |  | ||||||
| 	} else if limit > gasCeil { |  | ||||||
| 		limit = parentGasLimit - decay |  | ||||||
| 		if limit < gasCeil { |  | ||||||
| 			limit = gasCeil |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	return limit |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // CalcGasLimit1559 calculates the next block gas limit under 1559 rules.
 |  | ||||||
| func CalcGasLimit1559(parentGasLimit, desiredLimit uint64) uint64 { |  | ||||||
| 	delta := parentGasLimit/params.GasLimitBoundDivisor - 1 | 	delta := parentGasLimit/params.GasLimitBoundDivisor - 1 | ||||||
| 	limit := parentGasLimit | 	limit := parentGasLimit | ||||||
| 	if desiredLimit < params.MinGasLimit { | 	if desiredLimit < params.MinGasLimit { | ||||||
|  | |||||||
| @ -198,8 +198,7 @@ func testHeaderConcurrentAbortion(t *testing.T, threads int) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestCalcGasLimit1559(t *testing.T) { | func TestCalcGasLimit(t *testing.T) { | ||||||
| 
 |  | ||||||
| 	for i, tc := range []struct { | 	for i, tc := range []struct { | ||||||
| 		pGasLimit uint64 | 		pGasLimit uint64 | ||||||
| 		max       uint64 | 		max       uint64 | ||||||
| @ -209,23 +208,23 @@ func TestCalcGasLimit1559(t *testing.T) { | |||||||
| 		{40000000, 40039061, 39960939}, | 		{40000000, 40039061, 39960939}, | ||||||
| 	} { | 	} { | ||||||
| 		// Increase
 | 		// Increase
 | ||||||
| 		if have, want := CalcGasLimit1559(tc.pGasLimit, 2*tc.pGasLimit), tc.max; have != want { | 		if have, want := CalcGasLimit(tc.pGasLimit, 2*tc.pGasLimit), tc.max; have != want { | ||||||
| 			t.Errorf("test %d: have %d want <%d", i, have, want) | 			t.Errorf("test %d: have %d want <%d", i, have, want) | ||||||
| 		} | 		} | ||||||
| 		// Decrease
 | 		// Decrease
 | ||||||
| 		if have, want := CalcGasLimit1559(tc.pGasLimit, 0), tc.min; have != want { | 		if have, want := CalcGasLimit(tc.pGasLimit, 0), tc.min; have != want { | ||||||
| 			t.Errorf("test %d: have %d want >%d", i, have, want) | 			t.Errorf("test %d: have %d want >%d", i, have, want) | ||||||
| 		} | 		} | ||||||
| 		// Small decrease
 | 		// Small decrease
 | ||||||
| 		if have, want := CalcGasLimit1559(tc.pGasLimit, tc.pGasLimit-1), tc.pGasLimit-1; have != want { | 		if have, want := CalcGasLimit(tc.pGasLimit, tc.pGasLimit-1), tc.pGasLimit-1; have != want { | ||||||
| 			t.Errorf("test %d: have %d want %d", i, have, want) | 			t.Errorf("test %d: have %d want %d", i, have, want) | ||||||
| 		} | 		} | ||||||
| 		// Small increase
 | 		// Small increase
 | ||||||
| 		if have, want := CalcGasLimit1559(tc.pGasLimit, tc.pGasLimit+1), tc.pGasLimit+1; have != want { | 		if have, want := CalcGasLimit(tc.pGasLimit, tc.pGasLimit+1), tc.pGasLimit+1; have != want { | ||||||
| 			t.Errorf("test %d: have %d want %d", i, have, want) | 			t.Errorf("test %d: have %d want %d", i, have, want) | ||||||
| 		} | 		} | ||||||
| 		// No change
 | 		// No change
 | ||||||
| 		if have, want := CalcGasLimit1559(tc.pGasLimit, tc.pGasLimit), tc.pGasLimit; have != want { | 		if have, want := CalcGasLimit(tc.pGasLimit, tc.pGasLimit), tc.pGasLimit; have != want { | ||||||
| 			t.Errorf("test %d: have %d want %d", i, have, want) | 			t.Errorf("test %d: have %d want %d", i, have, want) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -273,11 +273,10 @@ func makeHeader(chain consensus.ChainReader, parent *types.Block, state *state.S | |||||||
| 	} | 	} | ||||||
| 	if chain.Config().IsLondon(header.Number) { | 	if chain.Config().IsLondon(header.Number) { | ||||||
| 		header.BaseFee = misc.CalcBaseFee(chain.Config(), parent.Header()) | 		header.BaseFee = misc.CalcBaseFee(chain.Config(), parent.Header()) | ||||||
| 		parentGasLimit := parent.GasLimit() |  | ||||||
| 		if !chain.Config().IsLondon(parent.Number()) { | 		if !chain.Config().IsLondon(parent.Number()) { | ||||||
| 			parentGasLimit = parent.GasLimit() * params.ElasticityMultiplier | 			parentGasLimit := parent.GasLimit() * params.ElasticityMultiplier | ||||||
|  | 			header.GasLimit = CalcGasLimit(parentGasLimit, parentGasLimit) | ||||||
| 		} | 		} | ||||||
| 		header.GasLimit = CalcGasLimit1559(parentGasLimit, parentGasLimit) |  | ||||||
| 	} | 	} | ||||||
| 	return header | 	return header | ||||||
| } | } | ||||||
|  | |||||||
| @ -83,7 +83,6 @@ var Defaults = Config{ | |||||||
| 	TrieTimeout:             60 * time.Minute, | 	TrieTimeout:             60 * time.Minute, | ||||||
| 	SnapshotCache:           102, | 	SnapshotCache:           102, | ||||||
| 	Miner: miner.Config{ | 	Miner: miner.Config{ | ||||||
| 		GasFloor: 8000000, |  | ||||||
| 		GasCeil:  8000000, | 		GasCeil:  8000000, | ||||||
| 		GasPrice: big.NewInt(params.GWei), | 		GasPrice: big.NewInt(params.GWei), | ||||||
| 		Recommit: 3 * time.Second, | 		Recommit: 3 * time.Second, | ||||||
|  | |||||||
| @ -242,7 +242,6 @@ func makeMiner(genesis *core.Genesis) (*node.Node, *eth.Ethereum, error) { | |||||||
| 		GPO:             ethconfig.Defaults.GPO, | 		GPO:             ethconfig.Defaults.GPO, | ||||||
| 		Ethash:          ethconfig.Defaults.Ethash, | 		Ethash:          ethconfig.Defaults.Ethash, | ||||||
| 		Miner: miner.Config{ | 		Miner: miner.Config{ | ||||||
| 			GasFloor: genesis.GasLimit * 9 / 10, |  | ||||||
| 			GasCeil:  genesis.GasLimit * 11 / 10, | 			GasCeil:  genesis.GasLimit * 11 / 10, | ||||||
| 			GasPrice: big.NewInt(1), | 			GasPrice: big.NewInt(1), | ||||||
| 			Recommit: time.Second, | 			Recommit: time.Second, | ||||||
|  | |||||||
| @ -193,7 +193,6 @@ func makeSealer(genesis *core.Genesis) (*node.Node, *eth.Ethereum, error) { | |||||||
| 		TxPool:          core.DefaultTxPoolConfig, | 		TxPool:          core.DefaultTxPoolConfig, | ||||||
| 		GPO:             ethconfig.Defaults.GPO, | 		GPO:             ethconfig.Defaults.GPO, | ||||||
| 		Miner: miner.Config{ | 		Miner: miner.Config{ | ||||||
| 			GasFloor: genesis.GasLimit * 9 / 10, |  | ||||||
| 			GasCeil:  genesis.GasLimit * 11 / 10, | 			GasCeil:  genesis.GasLimit * 11 / 10, | ||||||
| 			GasPrice: big.NewInt(1), | 			GasPrice: big.NewInt(1), | ||||||
| 			Recommit: time.Second, | 			Recommit: time.Second, | ||||||
|  | |||||||
| @ -171,7 +171,6 @@ func makeMiner(genesis *core.Genesis) (*node.Node, *eth.Ethereum, error) { | |||||||
| 		GPO:             ethconfig.Defaults.GPO, | 		GPO:             ethconfig.Defaults.GPO, | ||||||
| 		Ethash:          ethconfig.Defaults.Ethash, | 		Ethash:          ethconfig.Defaults.Ethash, | ||||||
| 		Miner: miner.Config{ | 		Miner: miner.Config{ | ||||||
| 			GasFloor: genesis.GasLimit * 9 / 10, |  | ||||||
| 			GasCeil:  genesis.GasLimit * 11 / 10, | 			GasCeil:  genesis.GasLimit * 11 / 10, | ||||||
| 			GasPrice: big.NewInt(1), | 			GasPrice: big.NewInt(1), | ||||||
| 			Recommit: time.Second, | 			Recommit: time.Second, | ||||||
|  | |||||||
| @ -897,19 +897,17 @@ func (w *worker) commitNewWork(interrupt *int32, noempty bool, timestamp int64) | |||||||
| 	header := &types.Header{ | 	header := &types.Header{ | ||||||
| 		ParentHash: parent.Hash(), | 		ParentHash: parent.Hash(), | ||||||
| 		Number:     num.Add(num, common.Big1), | 		Number:     num.Add(num, common.Big1), | ||||||
| 		GasLimit:   core.CalcGasLimit(parent.GasUsed(), parent.GasLimit(), w.config.GasFloor, w.config.GasCeil), | 		GasLimit:   core.CalcGasLimit(parent.GasLimit(), w.config.GasCeil), | ||||||
| 		Extra:      w.extra, | 		Extra:      w.extra, | ||||||
| 		Time:       uint64(timestamp), | 		Time:       uint64(timestamp), | ||||||
| 	} | 	} | ||||||
| 	// Set baseFee and GasLimit if we are on an EIP-1559 chain
 | 	// Set baseFee and GasLimit if we are on an EIP-1559 chain
 | ||||||
| 	if w.chainConfig.IsLondon(header.Number) { | 	if w.chainConfig.IsLondon(header.Number) { | ||||||
| 		header.BaseFee = misc.CalcBaseFee(w.chainConfig, parent.Header()) | 		header.BaseFee = misc.CalcBaseFee(w.chainConfig, parent.Header()) | ||||||
| 		parentGasLimit := parent.GasLimit() |  | ||||||
| 		if !w.chainConfig.IsLondon(parent.Number()) { | 		if !w.chainConfig.IsLondon(parent.Number()) { | ||||||
| 			// Bump by 2x
 | 			parentGasLimit := parent.GasLimit() * params.ElasticityMultiplier | ||||||
| 			parentGasLimit = parent.GasLimit() * params.ElasticityMultiplier | 			header.GasLimit = core.CalcGasLimit(parentGasLimit, w.config.GasCeil) | ||||||
| 		} | 		} | ||||||
| 		header.GasLimit = core.CalcGasLimit1559(parentGasLimit, w.config.GasCeil) |  | ||||||
| 	} | 	} | ||||||
| 	// Only set the coinbase if our consensus engine is running (avoid spurious block rewards)
 | 	// Only set the coinbase if our consensus engine is running (avoid spurious block rewards)
 | ||||||
| 	if w.isRunning() { | 	if w.isRunning() { | ||||||
|  | |||||||
| @ -67,7 +67,6 @@ var ( | |||||||
| 
 | 
 | ||||||
| 	testConfig = &Config{ | 	testConfig = &Config{ | ||||||
| 		Recommit: time.Second, | 		Recommit: time.Second, | ||||||
| 		GasFloor: params.GenesisGasLimit, |  | ||||||
| 		GasCeil:  params.GenesisGasLimit, | 		GasCeil:  params.GenesisGasLimit, | ||||||
| 	} | 	} | ||||||
| ) | ) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user