gas

package
v0.10.15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 14, 2021 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const LegacyTxType = TxType(0x0)

Variables

View Source
var (
	ErrNoSuitableTransactions = errors.New("no suitable transactions")
)

Functions

func BumpGasPriceOnly

func BumpGasPriceOnly(config Config, originalGasPrice *big.Int, originalGasLimit uint64) (gasPrice *big.Int, chainSpecificGasLimit uint64, err error)

BumpGasPriceOnly 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

func Int64ToHex(n int64) string

Int64ToHex converts an int64 into go-ethereum's hex representation

Types

type Block

type Block struct {
	Number       int64
	Hash         common.Hash
	ParentHash   common.Hash
	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

func (b Block) MarshalJSON() ([]byte, error)

MarshalJSON implements json marshalling for Block

func (*Block) UnmarshalJSON

func (b *Block) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshals to a Block

type BlockHistoryEstimator

type BlockHistoryEstimator struct {
	utils.StartStopOnce
	// contains filtered or unexported fields
}

func (*BlockHistoryEstimator) BumpGas

func (b *BlockHistoryEstimator) BumpGas(originalGasPrice *big.Int, gasLimit uint64) (bumpedGasPrice *big.Int, chainSpecificGasLimit uint64, err error)

func (*BlockHistoryEstimator) Close

func (b *BlockHistoryEstimator) Close() error

func (*BlockHistoryEstimator) Connect

func (b *BlockHistoryEstimator) Connect(bn *models.Head) error

func (*BlockHistoryEstimator) EstimateGas

func (b *BlockHistoryEstimator) EstimateGas(_ []byte, gasLimit uint64, _ ...Opt) (gasPrice *big.Int, chainSpecificGasLimit uint64, err error)

func (*BlockHistoryEstimator) FetchBlocks

func (b *BlockHistoryEstimator) FetchBlocks(ctx context.Context, head models.Head) error

func (*BlockHistoryEstimator) FetchBlocksAndRecalculate

func (b *BlockHistoryEstimator) FetchBlocksAndRecalculate(ctx context.Context, head models.Head)

func (*BlockHistoryEstimator) OnNewLongestChain

func (b *BlockHistoryEstimator) OnNewLongestChain(ctx context.Context, head models.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 models.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
	ChainID() *big.Int
	EthFinalityDepth() uint
	EthGasBumpPercent() uint16
	EthGasBumpWei() *big.Int
	EthGasLimitMultiplier() float32
	EthGasPriceDefault() *big.Int
	EthMaxGasPriceWei() *big.Int
	EthMinGasPriceWei() *big.Int
	GasEstimatorMode() string
}

Config defines an interface for configuration in the gas package

type Estimator

type Estimator interface {
	OnNewLongestChain(context.Context, models.Head)
	Start() error
	Close() error
	EstimateGas(calldata []byte, gasLimit uint64, opts ...Opt) (gasPrice *big.Int, chainSpecificGasLimit uint64, err error)
	BumpGas(originalGasPrice *big.Int, gasLimit uint64) (bumpedGasPrice *big.Int, chainSpecificGasLimit uint64, err error)
}

Estimator provides an interface for estimating gas price and limit

func NewBlockHistoryEstimator

func NewBlockHistoryEstimator(ethClient eth.Client, config Config) 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 NewEstimator(ethClient eth.Client, config Config) Estimator

func NewFixedPriceEstimator

func NewFixedPriceEstimator(config Config) Estimator

func NewOptimismEstimator

func NewOptimismEstimator(config Config, client optimismRPCClient) Estimator

NewOptimismEstimator returns a new optimism estimator

type Opt

type Opt int

Opt is an option for a gas estimator

const (
	// OptForceRefetch forces the estimator to bust a cache if necessary
	OptForceRefetch Opt = iota
)

type OptimismGasPricesResponse

type OptimismGasPricesResponse struct {
	L1GasPrice *big.Int
	L2GasPrice *big.Int
}

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

type TxType added in v0.10.12

type TxType uint8

func (*TxType) UnmarshalJSON added in v0.10.12

func (txt *TxType) UnmarshalJSON(data []byte) error

NOTE: Need to roll out own unmarshaller since geth's hexutil.Uint64 does not handle double zeroes e.g. 0x00

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL