Documentation
¶
Index ¶
- Variables
- 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 ¶
View Source
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 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
}
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)
SetNonPayable(nonPayable bool)
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 ¶ added in v1.0.0
StackOverflowError wraps an evm error when the items on the stack exceeds the maximum allowance.
func (*StackOverflowError) Error ¶ added in v1.0.0
func (e *StackOverflowError) Error() string
type StackUnderflowError ¶ added in v1.0.0
StackUnderflowError wraps an evm error when the items on the stack less than the minimal requirement.
func (*StackUnderflowError) Error ¶ added in v1.0.0
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
NonPayable bool
BaseFee *big.Int
BurnContract types.Address
}
TxContext is the context of the transaction
type VMTracer ¶ added in v0.6.2
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,
)
}
Click to show internal directories.
Click to hide internal directories.