runtime

package
v0.0.0-...-39cdb81 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 21, 2019 License: GPL-3.0 Imports: 10 Imported by: 0

Documentation

Overview

包运行时提供执行EVM代码的基本执行模型。

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Call

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

调用执行由合同地址给定的代码。它将返回 EVM的返回值或失败时的错误。

与execute不同,call需要config,还需要state字段 被设定。

func Create

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

create使用evm create方法执行代码

func Execute

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

在执行期间,Execute使用输入作为调用数据来执行代码。 它返回EVM的返回值、新状态以及失败时的错误。

执行为执行设置内存中的临时环境 给定的代码。它确保之后它恢复到原来的状态。

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)
	// 输出:
	// [96 96 96 64 82 96 8 86 91 0]
}
Output:

func Fuzz

func Fuzz(input []byte) int

引信是Go-Fuzz工具的基本切入点

对于有效的可分析/不可运行代码,返回1,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        *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是一种基本类型,指定运行的某些配置标志 EVM。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL