Documentation ¶
Index ¶
- Constants
- Variables
- func BumpLegacyGasPriceOnly(config Config, lggr logger.Logger, currentGasPrice, originalGasPrice *big.Int, ...) (gasPrice *big.Int, chainSpecificGasLimit uint64, err error)
- func HexToInt64(input interface{}) int64
- func Int64ToHex(n int64) string
- func IsBumpErr(err error) bool
- type Block
- type BlockHistoryEstimator
- func (b *BlockHistoryEstimator) BumpDynamicFee(originalFee DynamicFee, originalGasLimit uint64) (bumped DynamicFee, chainSpecificGasLimit uint64, err error)
- func (b *BlockHistoryEstimator) BumpLegacyGas(originalGasPrice *big.Int, gasLimit uint64) (bumpedGasPrice *big.Int, chainSpecificGasLimit uint64, err error)
- func (b *BlockHistoryEstimator) Close() error
- func (b *BlockHistoryEstimator) EffectiveGasPrice(block Block, tx Transaction) *big.Int
- func (b *BlockHistoryEstimator) EffectiveTipCap(block Block, tx Transaction) *big.Int
- func (b *BlockHistoryEstimator) FetchBlocks(ctx context.Context, head *eth.Head) error
- func (b *BlockHistoryEstimator) FetchBlocksAndRecalculate(ctx context.Context, head *eth.Head)
- func (b *BlockHistoryEstimator) GetDynamicFee(gasLimit uint64) (fee DynamicFee, chainSpecificGasLimit uint64, err error)
- func (b *BlockHistoryEstimator) GetLegacyGas(_ []byte, gasLimit uint64, _ ...Opt) (gasPrice *big.Int, chainSpecificGasLimit uint64, err error)
- func (b *BlockHistoryEstimator) OnNewLongestChain(ctx context.Context, head *eth.Head)
- func (b *BlockHistoryEstimator) Recalculate(head *eth.Head)
- func (b *BlockHistoryEstimator) RollingBlockHistory() []Block
- func (b *BlockHistoryEstimator) Start() error
- type Config
- type DynamicFee
- type Estimator
- func NewBlockHistoryEstimator(lggr logger.Logger, ethClient eth.Client, config Config, chainID big.Int) Estimator
- func NewEstimator(lggr logger.Logger, ethClient eth.Client, config Config) Estimator
- func NewFixedPriceEstimator(config Config, lggr logger.Logger) Estimator
- func NewOptimism2Estimator(lggr logger.Logger, config Config, client optimismRPCClient) Estimator
- func NewOptimismEstimator(lggr logger.Logger, config Config, client optimismRPCClient) Estimator
- type Opt
- type OptimismGasPricesResponse
- type Transaction
- type TxType
Constants ¶
const LegacyTxType = TxType(0x0)
Variables ¶
var ( ErrBumpGasExceedsLimit = errors.New("gas bump exceeds limit") ErrBump = errors.New("gas bump failed") )
var (
ErrNoSuitableTransactions = errors.New("no suitable transactions")
)
Functions ¶
func BumpLegacyGasPriceOnly ¶ added in v1.1.0
func BumpLegacyGasPriceOnly(config Config, lggr logger.Logger, currentGasPrice, originalGasPrice *big.Int, originalGasLimit uint64) (gasPrice *big.Int, chainSpecificGasLimit uint64, err error)
BumpLegacyGasPriceOnly will increase the price and apply multiplier to the gas limit
func HexToInt64 ¶
func HexToInt64(input interface{}) int64
HexToInt64 performs the inverse of Int64ToHex Returns 0 on invalid input
func Int64ToHex ¶
Int64ToHex converts an int64 into go-ethereum's hex representation
Types ¶
type Block ¶
type Block struct { Number int64 Hash common.Hash ParentHash common.Hash BaseFeePerGas *big.Int Transactions []Transaction }
Block represents an ethereum block This type is only used for the block history estimator, and can be expensive to unmarshal. Don't add unnecessary fields here.
func (Block) MarshalJSON ¶
MarshalJSON implements json marshalling for Block
func (*Block) UnmarshalJSON ¶
UnmarshalJSON unmarshals to a Block
type BlockHistoryEstimator ¶
type BlockHistoryEstimator struct { utils.StartStopOnce // contains filtered or unexported fields }
func (*BlockHistoryEstimator) BumpDynamicFee ¶ added in v1.1.0
func (b *BlockHistoryEstimator) BumpDynamicFee(originalFee DynamicFee, originalGasLimit uint64) (bumped DynamicFee, chainSpecificGasLimit uint64, err error)
func (*BlockHistoryEstimator) BumpLegacyGas ¶ added in v1.1.0
func (*BlockHistoryEstimator) Close ¶
func (b *BlockHistoryEstimator) Close() error
func (*BlockHistoryEstimator) EffectiveGasPrice ¶ added in v1.1.0
func (b *BlockHistoryEstimator) EffectiveGasPrice(block Block, tx Transaction) *big.Int
func (*BlockHistoryEstimator) EffectiveTipCap ¶ added in v1.1.0
func (b *BlockHistoryEstimator) EffectiveTipCap(block Block, tx Transaction) *big.Int
func (*BlockHistoryEstimator) FetchBlocks ¶
func (*BlockHistoryEstimator) FetchBlocksAndRecalculate ¶
func (b *BlockHistoryEstimator) FetchBlocksAndRecalculate(ctx context.Context, head *eth.Head)
func (*BlockHistoryEstimator) GetDynamicFee ¶ added in v1.1.0
func (b *BlockHistoryEstimator) GetDynamicFee(gasLimit uint64) (fee DynamicFee, chainSpecificGasLimit uint64, err error)
func (*BlockHistoryEstimator) GetLegacyGas ¶ added in v1.1.0
func (*BlockHistoryEstimator) OnNewLongestChain ¶
func (b *BlockHistoryEstimator) OnNewLongestChain(ctx context.Context, head *eth.Head)
OnNewLongestChain recalculates and sets global gas price if a sampled new head comes in and we are not currently fetching
func (*BlockHistoryEstimator) Recalculate ¶
func (b *BlockHistoryEstimator) Recalculate(head *eth.Head)
FetchHeadsAndRecalculate adds the given heads to the history and recalculates gas price
func (*BlockHistoryEstimator) RollingBlockHistory ¶
func (b *BlockHistoryEstimator) RollingBlockHistory() []Block
func (*BlockHistoryEstimator) Start ¶
func (b *BlockHistoryEstimator) Start() error
type Config ¶
type Config interface { BlockHistoryEstimatorBatchSize() uint32 BlockHistoryEstimatorBlockDelay() uint16 BlockHistoryEstimatorBlockHistorySize() uint16 BlockHistoryEstimatorTransactionPercentile() uint16 ChainType() chains.ChainType EvmEIP1559DynamicFees() bool EvmFinalityDepth() uint32 EvmGasBumpPercent() uint16 EvmGasBumpWei() *big.Int EvmGasFeeCap() *big.Int EvmGasLimitMultiplier() float32 EvmGasPriceDefault() *big.Int EvmGasTipCapDefault() *big.Int EvmGasTipCapMinimum() *big.Int EvmMaxGasPriceWei() *big.Int EvmMinGasPriceWei() *big.Int GasEstimatorMode() string }
Config defines an interface for configuration in the gas package
type DynamicFee ¶ added in v1.1.0
DynamicFee encompasses both FeeCap and TipCap for EIP1559 transactions
func BumpDynamicFeeOnly ¶ added in v1.1.0
func BumpDynamicFeeOnly(config Config, lggr logger.Logger, currentTipCap *big.Int, originalFee DynamicFee, originalGasLimit uint64) (bumped DynamicFee, chainSpecificGasLimit uint64, err error)
BumpDynamicFeeOnly bumps the tip cap and max gas price if necessary
type Estimator ¶
type Estimator interface { OnNewLongestChain(context.Context, *eth.Head) Start() error Close() error GetLegacyGas(calldata []byte, gasLimit uint64, opts ...Opt) (gasPrice *big.Int, chainSpecificGasLimit uint64, err error) BumpLegacyGas(originalGasPrice *big.Int, gasLimit uint64) (bumpedGasPrice *big.Int, chainSpecificGasLimit uint64, err error) GetDynamicFee(gasLimit uint64) (fee DynamicFee, chainSpecificGasLimit uint64, err error) BumpDynamicFee(original DynamicFee, gasLimit uint64) (bumped DynamicFee, chainSpecificGasLimit uint64, err error) }
Estimator provides an interface for estimating gas price and limit
func NewBlockHistoryEstimator ¶
func NewBlockHistoryEstimator(lggr logger.Logger, ethClient eth.Client, config Config, chainID big.Int) Estimator
NewBlockHistoryEstimator returns a new BlockHistoryEstimator that listens for new heads and updates the base gas price dynamically based on the configured percentile of gas prices in that block
func NewEstimator ¶
func NewFixedPriceEstimator ¶
func NewOptimism2Estimator ¶ added in v1.0.0
NewOptimism2Estimator returns a new optimism 2.0 estimator
type OptimismGasPricesResponse ¶
OptimismGasPricesResponse is the shape of the response when calling rollup_gasPrices
func (*OptimismGasPricesResponse) UnmarshalJSON ¶
func (g *OptimismGasPricesResponse) UnmarshalJSON(b []byte) error
type Transaction ¶
type Transaction struct { GasPrice *big.Int GasLimit uint64 MaxFeePerGas *big.Int MaxPriorityFeePerGas *big.Int Type TxType Hash common.Hash }
Transaction represents an ethereum transaction Use our own type because geth's type has validation failures on e.g. zero gas used, which can occur on other chains. This type is only used for the block history estimator, and can be expensive to unmarshal. Don't add unnecessary fields here.
func (*Transaction) UnmarshalJSON ¶
func (t *Transaction) UnmarshalJSON(data []byte) error
UnmarshalJSON unmarshals a Transaction