package runtime

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

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

Index

Examples

Functions

func Call

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

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

Create executes the code using the EVM create method

func Execute

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.

Execute sets up an in-memory, temporary, environment for the execution of the given code. It makes sure that it's restored to its original state afterwards.

Example

Code:play 

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]

func NewEnv

func NewEnv(cfg *Config) *vm.EVM

Types

type Config

type Config struct {
	ChainConfig *params.ChainConfig
	Difficulty  *big.Int
	Origin      common.Address
	Coinbase    common.Address
	BlockNumber *big.Int
	Time        uint64
	GasLimit    uint64
	GasPrice    *big.Int
	Value       *big.Int
	Debug       bool
	EVMConfig   vm.Config
	BaseFee     *big.Int
	BlobBaseFee *big.Int
	BlobHashes  []common.Hash
	BlobFeeCap  *big.Int
	Random      *common.Hash

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

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

Source Files

doc.go env.go runtime.go

Version
v1.15.11 (latest)
Published
May 5, 2025
Platform
linux/amd64
Imports
10 packages
Last checked
1 day ago

Tools for package owners.