Documentation ¶
Index ¶
- Variables
- type AccessList
- func (al *AccessList) AddAddress(address ...types.Address)
- func (al *AccessList) AddSlot(address types.Address, slot types.Hash) (addrChange bool, slotChange bool)
- func (al *AccessList) Contains(address types.Address, slot types.Hash) (bool, bool)
- func (al *AccessList) ContainsAddress(address types.Address) bool
- func (al *AccessList) Copy() *AccessList
- type CallType
- type Contract
- func NewContract(depth int, origin types.Address, from types.Address, to types.Address, ...) *Contract
- func NewContractCall(depth int, origin types.Address, from types.Address, to types.Address, ...) *Contract
- func NewContractCreation(depth int, origin types.Address, from types.Address, to types.Address, ...) *Contract
- type ExecutionResult
- type Host
- type Runtime
- type StackOverflowError
- type StackUnderflowError
- type StorageStatus
- type TxContext
- type VMTracer
Constants ¶
This section is empty.
Variables ¶
var ( ErrOutOfGas = errors.New("out of gas") ErrNotEnoughFunds = errors.New("not enough funds") ErrInsufficientBalance = errors.New("insufficient balance for transfer") ErrMaxCodeSizeExceeded = errors.New("max code size exceeded") ErrContractAddressCollision = errors.New("contract address collision") ErrDepth = errors.New("max call depth exceeded") ErrExecutionReverted = errors.New("execution reverted") ErrCodeStoreOutOfGas = errors.New("contract creation code storage out of gas") ErrInvalidInputData = errors.New("invalid input data") ErrNotAuth = errors.New("not in allow list") )
Functions ¶
This section is empty.
Types ¶
type AccessList ¶
func NewAccessList ¶
func NewAccessList() *AccessList
func (*AccessList) AddAddress ¶
func (al *AccessList) AddAddress(address ...types.Address)
AddAddress adds an address to the access list returns 'true' if the operation results in a change (i.e., the address was not already present in the list).
func (*AccessList) AddSlot ¶
func (al *AccessList) AddSlot(address types.Address, slot types.Hash) (addrChange bool, slotChange bool)
This function adds the specified address and slot pair to the access list. The return values indicate whether the address was newly added and whether the slot was newly added.
func (*AccessList) Contains ¶
Contains checks if a slot is present in an account. Returns two boolean flags: `accountPresent` and `slotPresent`.
func (*AccessList) ContainsAddress ¶
func (al *AccessList) ContainsAddress(address types.Address) bool
Checks if address is present within the access list.
func (*AccessList) Copy ¶
func (al *AccessList) Copy() *AccessList
Copy creates an deep copy of provided AccessList.
type Contract ¶
type Contract struct { Code []byte Type CallType CodeAddress types.Address Address types.Address Origin types.Address Caller types.Address Depth int Value *big.Int Input []byte Gas uint64 Static bool AccessList *AccessList }
Contract is the instance being called
func NewContract ¶
func NewContractCall ¶
type ExecutionResult ¶
type ExecutionResult struct { ReturnValue []byte // Returned data from the runtime (function result or data supplied with revert opcode) GasLeft uint64 // Total gas left as result of execution GasUsed uint64 // Total gas used as result of execution Err error // Any error encountered during the execution, listed below Address types.Address // Contract address }
ExecutionResult includes all output after executing given evm message no matter the execution itself is successful or not.
func (*ExecutionResult) Failed ¶
func (r *ExecutionResult) Failed() bool
func (*ExecutionResult) Reverted ¶
func (r *ExecutionResult) Reverted() bool
func (*ExecutionResult) Succeeded ¶
func (r *ExecutionResult) Succeeded() bool
func (*ExecutionResult) UpdateGasUsed ¶
func (r *ExecutionResult) UpdateGasUsed(gasLimit uint64, refund uint64)
type Host ¶
type Host interface { AccountExists(addr types.Address) bool GetStorage(addr types.Address, key types.Hash) types.Hash SetStorage(addr types.Address, key types.Hash, value types.Hash, config *chain.ForksInTime) StorageStatus SetState(addr types.Address, key types.Hash, value types.Hash) GetBalance(addr types.Address) *big.Int GetCodeSize(addr types.Address) int GetCodeHash(addr types.Address) types.Hash GetCode(addr types.Address) []byte Selfdestruct(addr types.Address, beneficiary types.Address) GetTxContext() TxContext GetBlockHash(number int64) types.Hash EmitLog(addr types.Address, topics []types.Hash, data []byte) Callx(*Contract, Host) *ExecutionResult Empty(addr types.Address) bool GetNonce(addr types.Address) uint64 Transfer(from types.Address, to types.Address, amount *big.Int) error GetTracer() VMTracer GetRefund() uint64 }
Host is the execution host
type Runtime ¶
type Runtime interface { Run(c *Contract, host Host, config *chain.ForksInTime) *ExecutionResult CanRun(c *Contract, host Host, config *chain.ForksInTime) bool Name() string }
Runtime can process contracts
type StackOverflowError ¶
StackOverflowError wraps an evm error when the items on the stack exceeds the maximum allowance.
func (*StackOverflowError) Error ¶
func (e *StackOverflowError) Error() string
type StackUnderflowError ¶
StackUnderflowError wraps an evm error when the items on the stack less than the minimal requirement.
func (*StackUnderflowError) Error ¶
func (e *StackUnderflowError) Error() string
type StorageStatus ¶
type StorageStatus int
StorageStatus is the status of the storage access
const ( // StorageUnchanged if the data has not changed StorageUnchanged StorageStatus = iota // StorageModified if the value has been modified StorageModified // StorageModifiedAgain if the value has been modified before in the txn StorageModifiedAgain // StorageAdded if this is a new entry in the storage StorageAdded // StorageDeleted if the storage was deleted StorageDeleted )
func (StorageStatus) String ¶
func (s StorageStatus) String() string
type TxContext ¶
type TxContext struct { GasPrice types.Hash Origin types.Address Coinbase types.Address Number int64 Timestamp int64 GasLimit int64 ChainID int64 Difficulty types.Hash Tracer tracer.Tracer BaseFee *big.Int BurnContract types.Address }
TxContext is the context of the transaction
type VMTracer ¶
type VMTracer interface { CaptureState( memory []byte, stack []*big.Int, opCode int, contractAddress types.Address, sp int, host tracer.RuntimeHost, state tracer.VMState, ) ExecuteState( contractAddress types.Address, ip uint64, opcode string, availableGas uint64, cost uint64, lastReturnData []byte, depth int, err error, host tracer.RuntimeHost, ) }