runtime

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 21, 2020 License: Apache-2.0 Imports: 18 Imported by: 54

README

Cadence Runtime

Usage

  • go run ./cmd <filename>

Development

Update the parser
  • antlr -listener -visitor -Dlanguage=Go -package parser parser/Cadence.g4

Documentation

Index

Constants

View Source
const (
	AddressPrefix            = ast.AddressPrefix
	TransactionPrefix string = "T"
	ScriptPrefix      string = "S"
)

Variables

This section is empty.

Functions

func FormatErrorMessage

func FormatErrorMessage(message string, useColor bool) string

func PrettyPrintError

func PrettyPrintError(err error, filename string, code string, useColor bool) string

Types

type Address

type Address = common.Address

type AddressLocation

type AddressLocation = ast.AddressLocation

type BlockValue

type BlockValue struct {
	Number        uint64
	ID            [stdlib.BlockIDSize]byte
	NextBlock     func() *BlockValue
	PreviousBlock func() *BlockValue
}

func (BlockValue) Copy

func (v BlockValue) Copy() interpreter.Value

func (BlockValue) DynamicType

func (BlockValue) GetMember

func (BlockValue) GetOwner

func (BlockValue) GetOwner() *common.Address

func (BlockValue) IsValue

func (BlockValue) IsValue()

func (BlockValue) SetMember

func (BlockValue) SetOwner

func (BlockValue) SetOwner(_ *common.Address)

func (BlockValue) String

func (v BlockValue) String() string

type EmptyRuntimeInterface

type EmptyRuntimeInterface struct{}

func (*EmptyRuntimeInterface) AddAccountKey

func (i *EmptyRuntimeInterface) AddAccountKey(address Address, publicKey []byte) error

func (*EmptyRuntimeInterface) CheckCode

func (i *EmptyRuntimeInterface) CheckCode(address Address, code []byte) error

func (*EmptyRuntimeInterface) CreateAccount

func (i *EmptyRuntimeInterface) CreateAccount(publicKeys [][]byte) (address Address, err error)

func (*EmptyRuntimeInterface) EmitEvent

func (i *EmptyRuntimeInterface) EmitEvent(event Event)

func (*EmptyRuntimeInterface) GenerateUUID

func (i *EmptyRuntimeInterface) GenerateUUID() uint64

func (*EmptyRuntimeInterface) GetSigningAccounts

func (i *EmptyRuntimeInterface) GetSigningAccounts() []Address

func (*EmptyRuntimeInterface) GetValue

func (i *EmptyRuntimeInterface) GetValue(controller, owner, key []byte) (value []byte, err error)

func (*EmptyRuntimeInterface) Log

func (i *EmptyRuntimeInterface) Log(message string)

func (*EmptyRuntimeInterface) RemoveAccountKey

func (i *EmptyRuntimeInterface) RemoveAccountKey(address Address, index int) (publicKey []byte, err error)

func (*EmptyRuntimeInterface) ResolveImport

func (i *EmptyRuntimeInterface) ResolveImport(location Location) ([]byte, error)

func (*EmptyRuntimeInterface) SetValue

func (i *EmptyRuntimeInterface) SetValue(controller, owner, key, value []byte) error

func (*EmptyRuntimeInterface) UpdateAccountCode

func (i *EmptyRuntimeInterface) UpdateAccountCode(address Address, code []byte, checkPermission bool) error

func (*EmptyRuntimeInterface) ValueExists

func (i *EmptyRuntimeInterface) ValueExists(controller, owner, key []byte) (exists bool, err error)

type Error

type Error struct {
	Err error
}

Error is the containing type for all errors produced by the runtime.

func (Error) Error

func (e Error) Error() string

func (Error) Unwrap

func (e Error) Unwrap() error

type Event

type Event struct {
	Type   Type
	Fields []Value
}

type FileLocation

type FileLocation string

func (FileLocation) ID

func (l FileLocation) ID() ast.LocationID

func (FileLocation) String

func (l FileLocation) String() string

type ImportResolver

type ImportResolver = func(location Location) (program *ast.Program, e error)

type Interface

type Interface interface {
	// ResolveImport resolves an import of a program.
	ResolveImport(Location) ([]byte, error)
	// GetValue gets a value for the given key in the storage, controlled and owned by the given accounts.
	GetValue(owner, controller, key []byte) (value []byte, err error)
	// SetValue sets a value for the given key in the storage, controlled and owned by the given accounts.
	SetValue(owner, controller, key, value []byte) (err error)
	// CreateAccount creates a new account with the given public keys and code.
	CreateAccount(publicKeys [][]byte) (address Address, err error)
	// AddAccountKey appends a key to an account.
	AddAccountKey(address Address, publicKey []byte) error
	// RemoveAccountKey removes a key from an account by index.
	RemoveAccountKey(address Address, index int) (publicKey []byte, err error)
	// CheckCode checks the validity of the code.
	CheckCode(address Address, code []byte) (err error)
	// UpdateAccountCode updates the code associated with an account.
	UpdateAccountCode(address Address, code []byte, checkPermission bool) (err error)
	// GetSigningAccounts returns the signing accounts.
	GetSigningAccounts() []Address
	// Log logs a string.
	Log(string)
	// EmitEvent is called when an event is emitted by the runtime.
	EmitEvent(Event)
}

type InterfaceV2

type InterfaceV2 interface {
	Interface
	// ValueExists returns true if the given key exists in the storage, controlled and owned by the given accounts.
	ValueExists(owner, controller, key []byte) (exists bool, err error)
	// GenerateUUID is called to generate a UUID.
	GenerateUUID() uint64
}

type InvalidTransactionCountError

type InvalidTransactionCountError struct {
	Count int
}

func (InvalidTransactionCountError) Error

type InvalidTransactionParameterCountError

type InvalidTransactionParameterCountError struct {
	Expected int
	Actual   int
}

func (InvalidTransactionParameterCountError) Error

type InvalidTransactionParameterTypeError

type InvalidTransactionParameterTypeError struct {
	Actual sema.Type
}

func (InvalidTransactionParameterTypeError) Error

type Location

type Location = ast.Location

type LocationID

type LocationID = ast.LocationID

type REPL

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

func NewREPL

func NewREPL(onError func(error), onResult func(interpreter.Value)) (*REPL, error)

func (*REPL) Accept

func (r *REPL) Accept(code string) (inputIsComplete bool)

func (*REPL) Suggestions

func (r *REPL) Suggestions() (result []struct{ Name, Description string })

type REPLLocation

type REPLLocation struct{}

func (REPLLocation) ID

func (l REPLLocation) ID() LocationID

func (REPLLocation) String

func (l REPLLocation) String() string

type Runtime

type Runtime interface {
	// ExecuteScript executes the given script.
	//
	// This function returns an error if the program has errors (e.g syntax errors, type errors),
	// or if the execution fails.
	ExecuteScript(script []byte, runtimeInterface Interface, location Location) (Value, error)

	// ExecuteTransaction executes the given transaction.
	//
	// This function returns an error if the program has errors (e.g syntax errors, type errors),
	// or if the execution fails.
	ExecuteTransaction(script []byte, runtimeInterface Interface, location Location) error

	// ParseAndCheckProgram parses and checks the given code without executing the program.
	//
	// This function returns an error if the program contains any syntax or semantic errors.
	ParseAndCheckProgram(code []byte, runtimeInterface Interface, location Location) error
}

Runtime is a runtime capable of executing Cadence.

func NewInterpreterRuntime

func NewInterpreterRuntime() Runtime

NewInterpreterRuntime returns a interpreter-based version of the Flow runtime.

type ScriptLocation

type ScriptLocation []byte

func (ScriptLocation) ID

func (l ScriptLocation) ID() ast.LocationID

func (ScriptLocation) String

func (l ScriptLocation) String() string

type StringLocation

type StringLocation = ast.StringLocation

type TransactionLocation

type TransactionLocation []byte

func (TransactionLocation) ID

func (TransactionLocation) String

func (l TransactionLocation) String() string

type Type

type Type = sema.Type

type Value

type Value struct {
	interpreter.Value
	// contains filtered or unexported fields
}

A Value is a Cadence value emitted by the runtime.

Runtime values can be converted to a simplified representation and then further encoded for transport or use in other languages and environments.

func (Value) Interpreter

func (v Value) Interpreter() *interpreter.Interpreter

Directories

Path Synopsis
cmd
tests

Jump to

Keyboard shortcuts

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