gas

package
v0.6.0-rc.8 Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2023 License: GPL-3.0 Imports: 14 Imported by: 6

Documentation

Overview

Package gas implements helper functions for calculating gas parameters based on Ethereum protocol values.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EstimateGas added in v0.6.0

func EstimateGas(
	rpc *rpc.Client,
	from common.Address,
	op *userop.UserOperation,
	ov *Overhead,
	chainID *big.Int,
	tracer string,
) (verificationGas uint64, callGas uint64, err error)

EstimateGas uses the simulateHandleOp method on the EntryPoint to derive an estimate for verificationGasLimit and callGasLimit.

TODO: This function requires an eth_call and a debug_traceCall. It could probably be optimized further by just using a debug_traceCall.

Types

type CalcPreVerificationGasFunc added in v0.6.0

type CalcPreVerificationGasFunc = func(op *userop.UserOperation) (*big.Int, error)

func CalcArbitrumPVGWithEthClient added in v0.6.0

func CalcArbitrumPVGWithEthClient(
	rpc *rpc.Client,
) CalcPreVerificationGasFunc

CalcArbitrumPVGWithEthClient uses Arbitrum's NodeInterface precompile to get an estimate for preVerificationGas that takes into account the L1 gas component. see https://medium.com/offchainlabs/understanding-arbitrum-2-dimensional-fees-fd1d582596c9.

type GasEstimates added in v0.2.0

type GasEstimates struct {
	PreVerificationGas *big.Int `json:"preVerificationGas"`
	VerificationGas    *big.Int `json:"verificationGas"`
	CallGasLimit       *big.Int `json:"callGasLimit"`
}

GasEstimates provides estimate values for all gas fields in a UserOperation.

type Overhead

type Overhead struct {
	// contains filtered or unexported fields
}

Overhead provides helper methods for calculating gas limits based on pre-defined parameters.

func NewDefaultOverhead

func NewDefaultOverhead() *Overhead

NewDefaultOverhead returns an instance of Overhead using parameters defined by the Ethereum protocol.

func (*Overhead) CalcPreVerificationGas

func (ov *Overhead) CalcPreVerificationGas(op *userop.UserOperation) (*big.Int, error)

CalcPreVerificationGas returns an expected gas cost for processing a UserOperation from a batch.

func (*Overhead) NonZeroValueCall

func (ov *Overhead) NonZeroValueCall() *big.Int

NonZeroValueCall returns an expected gas cost of using the CALL opcode in the context of EIP-4337. See https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-1-call.

func (*Overhead) SetCalcPreVerificationGasFunc added in v0.6.0

func (ov *Overhead) SetCalcPreVerificationGasFunc(fn CalcPreVerificationGasFunc)

Jump to

Keyboard shortcuts

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