Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Backend ¶
type Backend interface { HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error) HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error) BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error) BlockByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Block, error) GetTransaction(ctx context.Context, txHash common.Hash) (*types.Transaction, common.Hash, uint64, uint64, error) RPCGasCap() uint64 ChainConfig() *params.ChainConfig Engine() consensus.Engine ChainDb() ethdb.Database StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, readOnly bool, preferDisk bool) (*state.StateDB, tracers.StateReleaseFunc, error) StateAtTransaction(ctx context.Context, block *types.Block, txIndex int, reexec uint64) (*core.Message, vm.BlockContext, *state.StateDB, tracers.StateReleaseFunc, error) StateAndHeaderByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*state.StateDB, *types.Header, error) GetHeader(hash common.Hash, _ uint64) *types.Header }
copy & paste from https://github.com/flashbots/builder/blob/03ee71cf0a344397204f65ff6d3a917ee8e06724/internal/ethapi/api.go#L2182
type BundleAPI ¶
type BundleAPI struct {
// contains filtered or unexported fields
}
BundleAPI offers an API for accepting bundled transactions
func NewBundleAPI ¶
NewBundleAPI creates a new Tx Bundle API instance.
func (*BundleAPI) CallBundle ¶
func (s *BundleAPI) CallBundle(ctx context.Context, args CallBundleArgs) (map[string]interface{}, error)
CallBundle will simulate a bundle of transactions at the top of a given block number with the state of another (or the same) block. This can be used to simulate future blocks with the current state, or it can be used to simulate a past block. The sender is responsible for signing the transactions and using the correct nonce and ensuring validity
func (*BundleAPI) EstimateGasBundle ¶
type CallBundleArgs ¶
type CallBundleArgs struct { Txs []hexutil.Bytes `json:"txs"` BlockNumber rpc.BlockNumber `json:"blockNumber"` StateBlockNumberOrHash rpc.BlockNumberOrHash `json:"stateBlockNumber"` Coinbase *string `json:"coinbase"` Timestamp *uint64 `json:"timestamp"` Timeout *int64 `json:"timeout"` GasLimit *uint64 `json:"gasLimit"` Difficulty *big.Int `json:"difficulty"` BaseFee *big.Int `json:"baseFee"` }
CallBundleArgs represents the arguments for a call.
type EstimateGasBundleArgs ¶
type EstimateGasBundleArgs struct { Txs []TransactionArgs `json:"txs"` BlockNumber rpc.BlockNumber `json:"blockNumber"` StateBlockNumberOrHash rpc.BlockNumberOrHash `json:"stateBlockNumber"` Coinbase *string `json:"coinbase"` Timestamp *uint64 `json:"timestamp"` Timeout *int64 `json:"timeout"` }
EstimateGasBundleArgs represents the arguments for a call
type TransactionArgs ¶
type TransactionArgs struct { From *common.Address `json:"from"` To *common.Address `json:"to"` Gas *hexutil.Uint64 `json:"gas"` GasPrice *hexutil.Big `json:"gasPrice"` MaxFeePerGas *hexutil.Big `json:"maxFeePerGas"` MaxPriorityFeePerGas *hexutil.Big `json:"maxPriorityFeePerGas"` Value *hexutil.Big `json:"value"` Nonce *hexutil.Uint64 `json:"nonce"` // We accept "data" and "input" for backwards-compatibility reasons. // "input" is the newer name and should be preferred by clients. // Issue detail: https://github.com/ethereum/go-ethereum/issues/15628 Data *hexutil.Bytes `json:"data"` Input *hexutil.Bytes `json:"input"` // Introduced by AccessListTxType transaction. AccessList *types.AccessList `json:"accessList,omitempty"` ChainID *hexutil.Big `json:"chainId,omitempty"` // Introduced by EIP-4844. BlobFeeCap *hexutil.Big `json:"maxFeePerBlobGas"` BlobHashes []common.Hash `json:"blobVersionedHashes,omitempty"` }
TransactionArgs represents the arguments to construct a new transaction or a message call.
func (*TransactionArgs) IsEIP4844 ¶
func (args *TransactionArgs) IsEIP4844() bool
IsEIP4844 returns an indicator if the args contains EIP4844 fields.
func (*TransactionArgs) ToMessage ¶
func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (*core.Message, error)
ToMessage converts the transaction arguments to the Message type used by the core evm. This method is used in calls and traces that do not require a real live transaction.
func (*TransactionArgs) ToTransaction ¶
func (args *TransactionArgs) ToTransaction() *types.Transaction
ToTransaction converts the arguments to a transaction. This assumes that setDefaults has been called.