Documentation
¶
Overview ¶
Package runtime provides a basic execution model for executing EVM code.
Index ¶
- func Call(address common.Address, input []byte, cfg *Config) ([]byte, error)
- func Execute(code, input []byte, cfg *Config) ([]byte, *state.StateDB, error)
- func NewEnv(cfg *Config, state *state.StateDB) vm.Environment
- type Config
- type Env
- func (self *Env) AddLog(log *vm.Log)
- func (self *Env) BlockNumber() *big.Int
- func (self *Env) Call(caller vm.ContractRef, addr common.Address, data []byte, ...) ([]byte, error)
- func (self *Env) CallCode(caller vm.ContractRef, addr common.Address, data []byte, ...) ([]byte, error)
- func (self *Env) CanTransfer(from common.Address, balance *big.Int) bool
- func (self *Env) ChainConfig() *params.ChainConfig
- func (self *Env) Coinbase() common.Address
- func (self *Env) Create(caller vm.ContractRef, data []byte, gas, price, value *big.Int) ([]byte, common.Address, error)
- func (self *Env) Db() vm.Database
- func (self *Env) DelegateCall(me vm.ContractRef, addr common.Address, data []byte, gas, price *big.Int) ([]byte, error)
- func (self *Env) Depth() int
- func (self *Env) Difficulty() *big.Int
- func (self *Env) GasLimit() *big.Int
- func (self *Env) GetHash(n uint64) common.Hash
- func (self *Env) Origin() common.Address
- func (self *Env) RevertToSnapshot(snapshot int)
- func (self *Env) SetDepth(i int)
- func (self *Env) SnapshotDatabase() int
- func (self *Env) Time() *big.Int
- func (self *Env) Transfer(from, to vm.Account, amount *big.Int)
- func (self *Env) Vm() vm.Vm
- func (self *Env) VmType() vm.Type
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Call ¶ added in v1.4.0
Call executes the code given by the contract's address. It will return the EVM's return value or an error if it failed.
Call, unlike Execute, requires a config and also requires the State field to be set.
func Execute ¶
Execute executes the code using the input as call data during the execution. It returns the EVM's return value, the new state and an error if it failed.
Executes sets up a in memory, temporarily, environment for the execution of the given code. It enabled the JIT by default and make sure that it's restored to it's original state afterwards.
Example ¶
package main
import (
"fmt"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/vm/runtime"
)
func main() {
ret, _, err := runtime.Execute(common.Hex2Bytes("6060604052600a8060106000396000f360606040526008565b00"), nil, nil)
if err != nil {
fmt.Println(err)
}
fmt.Println(ret)
}
Output: [96 96 96 64 82 96 8 86 91 0]
Types ¶
type Config ¶
type Config struct {
ChainConfig *params.ChainConfig
Difficulty *big.Int
Origin common.Address
Coinbase common.Address
BlockNumber *big.Int
Time *big.Int
GasLimit *big.Int
GasPrice *big.Int
Value *big.Int
DisableJit bool // "disable" so it's enabled by default
Debug bool
State *state.StateDB
GetHashFn func(n uint64) common.Hash
}
Config is a basic type specifying certain configuration flags for running the EVM.
type Env ¶
type Env struct {
// contains filtered or unexported fields
}
Env is a basic runtime environment required for running the EVM.
func (*Env) BlockNumber ¶
func (*Env) ChainConfig ¶ added in v1.4.19
func (self *Env) ChainConfig() *params.ChainConfig