go-ethereum: github.com/axiomzen/go-ethereum/core/vm/runtime Index | Examples | Files

package runtime

import "github.com/axiomzen/go-ethereum/core/vm/runtime"

Package runtime provides a basic execution model for executing EVM code.

Index

Examples

Package Files

doc.go env.go runtime.go

func Call Uses

func Call(address common.Address, input []byte, cfg *Config) ([]byte, uint64, error)

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 Create Uses

func Create(input []byte, cfg *Config) ([]byte, common.Address, uint64, error)

Create executes the code using the EVM create method

func Execute Uses

func Execute(code, input []byte, cfg *Config) ([]byte, *state.StateDB, error)

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 makes sure that it's restored to it's original state afterwards.

Code:

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]

func NewEnv Uses

func NewEnv(cfg *Config) *vm.EVM

type Config Uses

type Config struct {
    ChainConfig *params.ChainConfig
    Difficulty  *big.Int
    Origin      common.Address
    Coinbase    common.Address
    BlockNumber *big.Int
    Time        *big.Int
    GasLimit    uint64
    GasPrice    *big.Int
    Value       *big.Int
    Debug       bool
    EVMConfig   vm.Config

    State     *state.StateDB
    GetHashFn func(n uint64) common.Hash
}

Config is a basic type specifying certain configuration flags for running the EVM.

Package runtime imports 10 packages (graph). Updated 2019-07-06. Refresh now. Tools for package owners.