interop

package
v0.91.1 Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2020 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Sort added in v0.91.0

func Sort(fs []Function)

Sort sorts interop functions by id.

Types

type Context

type Context struct {
	Chain         blockchainer.Blockchainer
	Container     crypto.Verifiable
	Natives       []Contract
	Trigger       trigger.Type
	Block         *block.Block
	Tx            *transaction.Transaction
	DAO           *dao.Cached
	Notifications []state.NotificationEvent
	Log           *zap.Logger
	Invocations   map[util.Uint160]int
	VM            *vm.VM
	Functions     [][]Function
}

Context represents context in which interops are executed.

func NewContext

func NewContext(trigger trigger.Type, bc blockchainer.Blockchainer, d dao.DAO, natives []Contract, block *block.Block, tx *transaction.Transaction, log *zap.Logger) *Context

NewContext returns new interop context.

func (*Context) GetFunction added in v0.91.0

func (ic *Context) GetFunction(id uint32) *Function

GetFunction returns metadata for interop with the specified id.

func (*Context) SpawnVM added in v0.91.0

func (ic *Context) SpawnVM() *vm.VM

SpawnVM spawns new VM with the specified gas limit and set context.VM field.

func (*Context) SyscallHandler added in v0.91.0

func (ic *Context) SyscallHandler(_ *vm.VM, id uint32) error

SyscallHandler handles syscall with id.

type Contract

type Contract interface {
	Initialize(*Context) error
	Metadata() *ContractMD
}

Contract is an interface for all native contracts.

type ContractMD

type ContractMD struct {
	Manifest   manifest.Manifest
	Name       string
	ContractID int32
	Script     []byte
	Hash       util.Uint160
	Methods    map[string]MethodAndPrice
}

ContractMD represents native contract instance.

func NewContractMD

func NewContractMD(name string) *ContractMD

NewContractMD returns Contract with the specified list of methods.

func (*ContractMD) AddEvent

func (c *ContractMD) AddEvent(name string, ps ...manifest.Parameter)

AddEvent adds new event to a native contract.

func (*ContractMD) AddMethod

func (c *ContractMD) AddMethod(md *MethodAndPrice, desc *manifest.Method, safe bool)

AddMethod adds new method to a native contract.

type Function

type Function struct {
	ID   uint32
	Name string
	Func func(*Context) error
	// DisallowCallback is true iff syscall can't be used in a callback.
	DisallowCallback bool
	// ParamCount is a number of function parameters.
	ParamCount int
	Price      int64
	// RequiredFlags is a set of flags which must be set during script invocations.
	// Default value is NoneFlag i.e. no flags are required.
	RequiredFlags smartcontract.CallFlag
}

Function binds function name, id with the function itself and price, it's supposed to be inited once for all interopContexts, so it doesn't use vm.InteropFuncPrice directly.

type Method

type Method = func(ic *Context, args []stackitem.Item) stackitem.Item

Method is a signature for a native method.

type MethodAndPrice

type MethodAndPrice struct {
	Func          Method
	Price         int64
	RequiredFlags smartcontract.CallFlag
}

MethodAndPrice is a native-contract method descriptor.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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