diff options
Diffstat (limited to 'eth')
-rw-r--r-- | eth/backend.go | 10 | ||||
-rw-r--r-- | eth/gasprice/gasprice.go | 21 |
2 files changed, 23 insertions, 8 deletions
diff --git a/eth/backend.go b/eth/backend.go index e26cbb3..9b6f1e4 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -559,3 +559,13 @@ func (s *Ethereum) AcceptedBlock() *types.Block { } return s.blockchain.CurrentBlock() } + +// SetGasPrice sets the minimum gas price to [newGasPrice] +// sets the price on [s], [txPool], and the gas price oracle +func (s *Ethereum) SetGasPrice(newGasPrice *big.Int) { + s.lock.Lock() + s.gasPrice = newGasPrice + s.lock.Unlock() + s.txPool.SetGasPrice(newGasPrice) + s.APIBackend.gpo.SetGasPrice(newGasPrice) +} diff --git a/eth/gasprice/gasprice.go b/eth/gasprice/gasprice.go index 33810b2..dc62ad6 100644 --- a/eth/gasprice/gasprice.go +++ b/eth/gasprice/gasprice.go @@ -48,12 +48,12 @@ type OracleBackend interface { // Oracle recommends gas prices based on the content of recent // blocks. Suitable for both light and full clients. type Oracle struct { - backend OracleBackend - lastHead common.Hash - lastPrice *big.Int - maxPrice *big.Int - cacheLock sync.RWMutex - fetchLock sync.Mutex + backend OracleBackend + lastHead common.Hash + minGasPrice *big.Int + maxPrice *big.Int + cacheLock sync.RWMutex + fetchLock sync.Mutex checkBlocks int percentile int @@ -83,7 +83,7 @@ func NewOracle(backend OracleBackend, params Config) *Oracle { } return &Oracle{ backend: backend, - lastPrice: params.Default, + minGasPrice: params.Default, maxPrice: maxPrice, checkBlocks: blocks, percentile: percent, @@ -93,7 +93,12 @@ func NewOracle(backend OracleBackend, params Config) *Oracle { // SuggestPrice returns a gasprice so that newly created transaction can // have a very high chance to be included in the following blocks. func (gpo *Oracle) SuggestPrice(ctx context.Context) (*big.Int, error) { - return params.MinGasPrice, nil + return gpo.minGasPrice, nil +} + +// SetGasPrice sets the minimum gas price to [newGasPrice] +func (gpo *Oracle) SetGasPrice(newGasPrice *big.Int) { + gpo.minGasPrice = newGasPrice } type getBlockPricesResult struct { |