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