eth, miner: add RPC method to modify miner gaslimit (pre london: ceiling) (#23134)

This commit is contained in:
Martin Holst Swende 2021-07-06 10:35:39 +02:00 committed by GitHub
parent 13bc9c0c6e
commit d21a069619
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 24 additions and 0 deletions

@ -129,6 +129,12 @@ func (api *PrivateMinerAPI) SetGasPrice(gasPrice hexutil.Big) bool {
return true return true
} }
// SetGasLimit sets the gaslimit to target towards during mining.
func (api *PrivateMinerAPI) SetGasLimit(gasLimit hexutil.Uint64) bool {
api.e.Miner().SetGasCeil(uint64(gasLimit))
return true
}
// SetEtherbase sets the etherbase of the miner // SetEtherbase sets the etherbase of the miner
func (api *PrivateMinerAPI) SetEtherbase(etherbase common.Address) bool { func (api *PrivateMinerAPI) SetEtherbase(etherbase common.Address) bool {
api.e.SetEtherbase(etherbase) api.e.SetEtherbase(etherbase)

@ -641,6 +641,12 @@ web3._extend({
params: 1, params: 1,
inputFormatter: [web3._extend.utils.fromDecimal] inputFormatter: [web3._extend.utils.fromDecimal]
}), }),
new web3._extend.Method({
name: 'setGasLimit',
call: 'miner_setGasLimit',
params: 1,
inputFormatter: [web3._extend.utils.fromDecimal]
}),
new web3._extend.Method({ new web3._extend.Method({
name: 'setRecommitInterval', name: 'setRecommitInterval',
call: 'miner_setRecommitInterval', call: 'miner_setRecommitInterval',

@ -204,6 +204,12 @@ func (miner *Miner) SetEtherbase(addr common.Address) {
miner.worker.setEtherbase(addr) miner.worker.setEtherbase(addr)
} }
// SetGasCeil sets the gaslimit to strive for when mining blocks post 1559.
// For pre-1559 blocks, it sets the ceiling.
func (miner *Miner) SetGasCeil(ceil uint64) {
miner.worker.setGasCeil(ceil)
}
// EnablePreseal turns on the preseal mining feature. It's enabled by default. // EnablePreseal turns on the preseal mining feature. It's enabled by default.
// Note this function shouldn't be exposed to API, it's unnecessary for users // Note this function shouldn't be exposed to API, it's unnecessary for users
// (miners) to actually know the underlying detail. It's only for outside project // (miners) to actually know the underlying detail. It's only for outside project

@ -244,6 +244,12 @@ func (w *worker) setEtherbase(addr common.Address) {
w.coinbase = addr w.coinbase = addr
} }
func (w *worker) setGasCeil(ceil uint64) {
w.mu.Lock()
defer w.mu.Unlock()
w.config.GasCeil = ceil
}
// setExtra sets the content used to initialize the block extra field. // setExtra sets the content used to initialize the block extra field.
func (w *worker) setExtra(extra []byte) { func (w *worker) setExtra(extra []byte) {
w.mu.Lock() w.mu.Lock()