Documentation ¶
Overview ¶
Package runtime provides a basic execution model for executing EVM code.
Index ¶
- 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) AddStructLog(log vm.StructLog)
- 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) 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) 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) MakeSnapshot() vm.Database
- func (self *Env) Origin() common.Address
- func (self *Env) SetDepth(i int)
- func (self *Env) SetSnapshot(copy vm.Database)
- func (self *Env) StructLogs() []vm.StructLog
- func (self *Env) Time() *big.Int
- func (self *Env) Transfer(from, to vm.Account, amount *big.Int)
- func (self *Env) VmType() vm.Type
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
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 { 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 GetHashFn func(n uint64) common.Hash }
Config is a basic type specifing certain configuration flags for running the EVM.
type Env ¶ added in v1.3.2
type Env struct {
// contains filtered or unexported fields
}
Env is a basic runtime environment required for running the EVM.
func (*Env) AddStructLog ¶ added in v1.3.2
func (*Env) BlockNumber ¶ added in v1.3.2
func (*Env) CanTransfer ¶ added in v1.3.2
func (*Env) Difficulty ¶ added in v1.3.2
func (*Env) MakeSnapshot ¶ added in v1.3.2
func (*Env) SetSnapshot ¶ added in v1.3.2
func (*Env) StructLogs ¶ added in v1.3.2
Click to show internal directories.
Click to hide internal directories.