runtime

package
v0.0.0-...-71e40f4 Latest Latest
Warning

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

Go to latest
Published: Sep 22, 2021 License: LGPL-3.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Output

type Output struct {
	Data            []byte
	Events          tx.Events
	Transfers       tx.Transfers
	LeftOverGas     uint64
	RefundGas       uint64
	VMErr           error          // VMErr identify the execution result of the contract function, not evm function's err.
	ContractAddress *meter.Address // if create a new contract, or is nil.
}

Output output of clause execution.

func (*Output) String

func (o *Output) String() string

type ResolvedTransaction

type ResolvedTransaction struct {
	Origin       meter.Address
	IntrinsicGas uint64
	Clauses      []*tx.Clause
	// contains filtered or unexported fields
}

ResolvedTransaction resolve the transaction according to given state.

func ResolveTransaction

func ResolveTransaction(tx *tx.Transaction) (*ResolvedTransaction, error)

ResolveTransaction resolves the transaction and performs basic validation.

func (*ResolvedTransaction) BuyGas

func (r *ResolvedTransaction) BuyGas(state *state.State, blockTime uint64) (
	baseGasPrice *big.Int,
	gasPrice *big.Int,
	payer meter.Address,
	returnGas func(uint64), err error)

BuyGas consumes energy to buy gas, to prepare for execution.

func (*ResolvedTransaction) CommonTo

func (r *ResolvedTransaction) CommonTo() *meter.Address

CommonTo returns common 'To' field of clauses if any. Nil returned if no common 'To'.

func (*ResolvedTransaction) ToContext

func (r *ResolvedTransaction) ToContext(gasPrice *big.Int, blockNumber uint32, getID func(uint32) meter.Bytes32) *xenv.TransactionContext

ToContext create a tx context object.

type Runtime

type Runtime struct {
	// contains filtered or unexported fields
}

Runtime bases on EVM and Meter builtins.

func New

func New(
	seeker *chain.Seeker,
	state *state.State,
	ctx *xenv.BlockContext,
) *Runtime

New create a Runtime object.

func (*Runtime) Context

func (rt *Runtime) Context() *xenv.BlockContext

func (*Runtime) EnforceTelsaFork1_1Corrections

func (rt *Runtime) EnforceTelsaFork1_1Corrections()

func (*Runtime) ExecuteClause

func (rt *Runtime) ExecuteClause(
	clause *tx.Clause,
	clauseIndex uint32,
	gas uint64,
	txCtx *xenv.TransactionContext,
) *Output

ExecuteClause executes single clause.

func (*Runtime) ExecuteTransaction

func (rt *Runtime) ExecuteTransaction(tx *tx.Transaction) (receipt *tx.Receipt, err error)

ExecuteTransaction executes a transaction. If some clause failed, receipt.Outputs will be nil and vmOutputs may shorter than clause count.

func (*Runtime) FromNativeContract

func (rt *Runtime) FromNativeContract(caller meter.Address) bool

func (*Runtime) LoadERC20NativeCotract

func (rt *Runtime) LoadERC20NativeCotract()

func (*Runtime) PrepareClause

func (rt *Runtime) PrepareClause(
	clause *tx.Clause,
	clauseIndex uint32,
	gas uint64,
	txCtx *xenv.TransactionContext,
) (exec func() (output *Output, interrupted bool), interrupt func())

PrepareClause prepare to execute clause. It allows to interrupt execution.

func (*Runtime) PrepareTransaction

func (rt *Runtime) PrepareTransaction(tx *tx.Transaction) (*TransactionExecutor, error)

PrepareTransaction prepare to execute tx.

func (*Runtime) ScriptEngineCheck

func (rt *Runtime) ScriptEngineCheck(d []byte) bool

func (*Runtime) Seeker

func (rt *Runtime) Seeker() *chain.Seeker

func (*Runtime) SetVMConfig

func (rt *Runtime) SetVMConfig(config vm.Config) *Runtime

SetVMConfig config VM. Returns this runtime.

func (*Runtime) State

func (rt *Runtime) State() *state.State

type TransactionExecutor

type TransactionExecutor struct {
	HasNextClause func() bool
	NextClause    func() (gasUsed uint64, output *Output, err error)
	Finalize      func() (*tx.Receipt, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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