runtime

package
v0.20.0-beta10 Latest Latest
Warning

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

Go to latest
Published: Oct 27, 2021 License: Apache-2.0 Imports: 21 Imported by: 54

Documentation

Index

Constants

View Source
const (
	// Supported signing algorithms
	SignatureAlgorithmUnknown         = sema.SignatureAlgorithmUnknown
	SignatureAlgorithmECDSA_P256      = sema.SignatureAlgorithmECDSA_P256
	SignatureAlgorithmECDSA_secp256k1 = sema.SignatureAlgorithmECDSA_secp256k1
	SignatureAlgorithmBLS_BLS12_381   = sema.SignatureAlgorithmBLS_BLS12_381
)
View Source
const (
	// Supported hashing algorithms
	HashAlgorithmUnknown               = sema.HashAlgorithmUnknown
	HashAlgorithmSHA2_256              = sema.HashAlgorithmSHA2_256
	HashAlgorithmSHA2_384              = sema.HashAlgorithmSHA2_384
	HashAlgorithmSHA3_256              = sema.HashAlgorithmSHA3_256
	HashAlgorithmSHA3_384              = sema.HashAlgorithmSHA3_384
	HashAlgorithmKMAC128_BLS_BLS12_381 = sema.HashAlgorithmKMAC128_BLS_BLS12_381
)
View Source
const BlockHashLength = 32

Variables

View Source
var InvalidLiteralError = fmt.Errorf("invalid literal")
View Source
var LiteralExpressionTypeError = fmt.Errorf("input is not a literal")
View Source
var UnsupportedLiteralError = fmt.Errorf("unsupported literal")

Functions

func CodeToHashValue added in v0.2.0

func CodeToHashValue(inter *interpreter.Interpreter, code []byte) *interpreter.ArrayValue

func ExportType added in v0.11.0

func ExportType(t sema.Type, results map[sema.TypeID]cadence.Type) cadence.Type

ExportType converts a runtime type to its corresponding Go representation.

func ExportValue added in v0.12.0

func ExportValue(value interpreter.Value, inter *interpreter.Interpreter) (cadence.Value, error)

ExportValue converts a runtime value to its native Go representation.

func LiteralValue added in v0.12.0

func LiteralValue(expression ast.Expression, ty sema.Type) (cadence.Value, error)

func NewAccountKeyValue added in v0.14.0

func NewAccountKeyValue(
	inter *interpreter.Interpreter,
	getLocationRange func() interpreter.LocationRange,
	accountKey *AccountKey,
	validatePublicKey interpreter.PublicKeyValidationHandlerFunc,
) interpreter.Value

func NewBlockValue added in v0.2.0

func NewBlockValue(inter *interpreter.Interpreter, block Block) interpreter.Value

func NewPublicKeyValue added in v0.14.0

func NewPublicKeyValue(
	inter *interpreter.Interpreter,
	getLocationRange func() interpreter.LocationRange,
	publicKey *PublicKey,
	validatePublicKey interpreter.PublicKeyValidationHandlerFunc,
) *interpreter.CompositeValue

func ParseLiteral added in v0.12.0

func ParseLiteral(literal string, ty sema.Type) (cadence.Value, error)

ParseLiteral parses a single literal string, that should have the given type.

Returns an error if the literal string is not a literal (e.g. it does not have valid syntax, or does not parse to a literal).

func ParseLiteralArgumentList added in v0.12.4

func ParseLiteralArgumentList(argumentList string, parameterTypes []sema.Type) ([]cadence.Value, error)

ParseLiteralArgumentList parses an argument list with literals, that should have the given types.

Returns an error if the code is not a valid argument list, or the arguments are not literals.

func SortAccountStorageEntries added in v0.20.0

func SortAccountStorageEntries(entries []AccountStorageEntry)

Types

type AccountKey added in v0.14.0

type AccountKey struct {
	KeyIndex  int
	PublicKey *PublicKey
	HashAlgo  HashAlgorithm
	Weight    int
	IsRevoked bool
}

type AccountStorageEntry added in v0.20.0

type AccountStorageEntry struct {
	StorageKey       interpreter.StorageKey
	Storable         atree.Storable
	IsContractUpdate bool
}

type Address

type Address = common.Address

type ArgumentNotImportableError added in v0.18.0

type ArgumentNotImportableError struct {
	Type interpreter.DynamicType
}

ArgumentNotImportableError is an error that is reported for script arguments that belongs to non-importable types.

func (*ArgumentNotImportableError) Error added in v0.18.0

type Block added in v0.9.0

type Block struct {
	Height    uint64
	View      uint64
	Hash      BlockHash
	Timestamp int64
}

type BlockHash added in v0.3.0

type BlockHash [BlockHashLength]byte

type CallStackLimitExceededError added in v0.20.0

type CallStackLimitExceededError struct {
	Limit uint64
}

func (CallStackLimitExceededError) Error added in v0.20.0

type ComputationLimitExceededError added in v0.2.0

type ComputationLimitExceededError struct {
	Limit uint64
}

func (ComputationLimitExceededError) Error added in v0.2.0

type ConformanceCountMismatchError added in v0.13.0

type ConformanceCountMismatchError struct {
	Expected int
	Found    int
	ast.Range
}

ConformanceCountMismatchError is reported during a contract update, when the conformance count does not match the existing conformance count.

func (*ConformanceCountMismatchError) Error added in v0.13.0

type ConformanceMismatchError added in v0.13.0

type ConformanceMismatchError struct {
	DeclName string
	Err      error
	ast.Range
}

ConformanceMismatchError is reported during a contract update, when the enum conformance of the new program does not match the existing one.

func (*ConformanceMismatchError) Error added in v0.13.0

func (e *ConformanceMismatchError) Error() string

func (*ConformanceMismatchError) SecondaryError added in v0.13.0

func (e *ConformanceMismatchError) SecondaryError() string

type Context added in v0.12.0

type Context struct {
	Interface         Interface
	Location          Location
	PredeclaredValues []ValueDeclaration
	// contains filtered or unexported fields
}

func (*Context) InitializeCodesAndPrograms added in v0.12.3

func (c *Context) InitializeCodesAndPrograms()

func (Context) SetCode added in v0.12.0

func (c Context) SetCode(location common.Location, code string)

func (Context) SetProgram added in v0.12.3

func (c Context) SetProgram(location common.Location, program *ast.Program)

func (Context) WithLocation added in v0.12.0

func (c Context) WithLocation(location common.Location) Context

type ContractNotFoundError added in v0.13.0

type ContractNotFoundError struct {
	ast.Range
}

ContractNotFoundError is reported during a contract update, if no contract can be found in the program.

func (*ContractNotFoundError) Error added in v0.13.0

func (e *ContractNotFoundError) Error() string

type ContractRemovalError added in v0.15.0

type ContractRemovalError struct {
	Name string
	interpreter.LocationRange
}

ContractRemovalError

func (*ContractRemovalError) Error added in v0.15.0

func (e *ContractRemovalError) Error() string

type ContractUpdateError added in v0.13.0

type ContractUpdateError struct {
	ContractName string
	Errors       []error
	Location     common.Location
}

ContractUpdateError is reported upon any invalid update to a contract or contract interface. It contains all the errors reported during the update validation.

func (*ContractUpdateError) ChildErrors added in v0.13.0

func (e *ContractUpdateError) ChildErrors() []error

func (*ContractUpdateError) Error added in v0.13.0

func (e *ContractUpdateError) Error() string

func (*ContractUpdateError) ImportLocation added in v0.13.0

func (e *ContractUpdateError) ImportLocation() common.Location

type ContractUpdateValidator added in v0.13.0

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

func NewContractUpdateValidator added in v0.13.0

func NewContractUpdateValidator(
	location Location,
	contractName string,
	oldProgram *ast.Program,
	newProgram *ast.Program,
) *ContractUpdateValidator

NewContractUpdateValidator initializes and returns a validator, without performing any validation. Invoke the `Validate()` method of the validator returned, to start validating the contract.

func (*ContractUpdateValidator) CheckConstantSizedTypeEquality added in v0.13.0

func (validator *ContractUpdateValidator) CheckConstantSizedTypeEquality(expected *ast.ConstantSizedType, found ast.Type) error

func (*ContractUpdateValidator) CheckDictionaryTypeEquality added in v0.13.0

func (validator *ContractUpdateValidator) CheckDictionaryTypeEquality(expected *ast.DictionaryType, found ast.Type) error

func (*ContractUpdateValidator) CheckFunctionTypeEquality added in v0.13.0

func (validator *ContractUpdateValidator) CheckFunctionTypeEquality(expected *ast.FunctionType, found ast.Type) error

func (*ContractUpdateValidator) CheckInstantiationTypeEquality added in v0.13.0

func (validator *ContractUpdateValidator) CheckInstantiationTypeEquality(expected *ast.InstantiationType, found ast.Type) error

func (*ContractUpdateValidator) CheckNominalTypeEquality added in v0.13.0

func (validator *ContractUpdateValidator) CheckNominalTypeEquality(expected *ast.NominalType, found ast.Type) error

func (*ContractUpdateValidator) CheckOptionalTypeEquality added in v0.13.0

func (validator *ContractUpdateValidator) CheckOptionalTypeEquality(expected *ast.OptionalType, found ast.Type) error

func (*ContractUpdateValidator) CheckReferenceTypeEquality added in v0.13.0

func (validator *ContractUpdateValidator) CheckReferenceTypeEquality(expected *ast.ReferenceType, found ast.Type) error

func (*ContractUpdateValidator) CheckRestrictedTypeEquality added in v0.13.0

func (validator *ContractUpdateValidator) CheckRestrictedTypeEquality(expected *ast.RestrictedType, found ast.Type) error

func (*ContractUpdateValidator) CheckVariableSizedTypeEquality added in v0.13.0

func (validator *ContractUpdateValidator) CheckVariableSizedTypeEquality(expected *ast.VariableSizedType, found ast.Type) error

func (*ContractUpdateValidator) Validate added in v0.13.0

func (validator *ContractUpdateValidator) Validate() error

Validate validates the contract update, and returns an error if it is an invalid update.

type CoverageReport added in v0.12.0

type CoverageReport struct {
	Coverage map[common.LocationID]*LocationCoverage `json:"coverage"`
}

CoverageReport is a collection of coverage per location

func NewCoverageReport added in v0.12.0

func NewCoverageReport() *CoverageReport

func (*CoverageReport) AddLineHit added in v0.12.0

func (r *CoverageReport) AddLineHit(location common.Location, line int)

type EnumCaseMismatchError added in v0.15.0

type EnumCaseMismatchError struct {
	ExpectedName string
	FoundName    string
	ast.Range
}

EnumCaseMismatchError is reported during an enum update, when an updated enum case does not match the existing enum case.

func (*EnumCaseMismatchError) Error added in v0.15.0

func (e *EnumCaseMismatchError) Error() string

type Error

type Error struct {
	Err      error
	Location common.Location
	Codes    map[common.LocationID]string
	Programs map[common.LocationID]*ast.Program
}

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 ExtraneousFieldError added in v0.13.0

type ExtraneousFieldError struct {
	DeclName  string
	FieldName string
	ast.Range
}

ExtraneousFieldError is reported during a contract update, when an updated composite declaration has more fields than the existing declaration.

func (*ExtraneousFieldError) Error added in v0.13.0

func (e *ExtraneousFieldError) Error() string

type FieldMismatchError added in v0.13.0

type FieldMismatchError struct {
	DeclName  string
	FieldName string
	Err       error
	ast.Range
}

FieldMismatchError is reported during a contract update, when a type of a field does not match the existing type of the same field.

func (*FieldMismatchError) Error added in v0.13.0

func (e *FieldMismatchError) Error() string

func (*FieldMismatchError) SecondaryError added in v0.13.0

func (e *FieldMismatchError) SecondaryError() string

type HashAlgorithm added in v0.14.0

type HashAlgorithm = sema.HashAlgorithm

func NewHashAlgorithmFromValue added in v0.14.0

func NewHashAlgorithmFromValue(
	inter *interpreter.Interpreter,
	getLocationRange func() interpreter.LocationRange,
	value interpreter.Value,
) HashAlgorithm

type Identifier added in v0.10.0

type Identifier = ast.Identifier

type ImportResolver

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

type Interface

type Interface interface {
	// ResolveLocation resolves an import location.
	ResolveLocation(identifiers []Identifier, location Location) ([]ResolvedLocation, error)
	// GetCode returns the code at a given location
	GetCode(location Location) ([]byte, error)
	// GetProgram attempts gets the program for the given location, if available.
	//
	// NOTE: During execution, this function must always return the *same* program,
	// i.e. it may NOT return a different program,
	// an elaboration in the program that is not annotating the AST in the program;
	// or a program/elaboration and then nothing in a subsequent call.
	//
	// This function must also return what was set using SetProgram,
	// it may NOT return something different or nothing (!) after SetProgram was called.
	//
	// This is not a caching function!
	//
	GetProgram(Location) (*interpreter.Program, error)
	// SetProgram sets the program for the given location.
	SetProgram(Location, *interpreter.Program) error
	// GetValue gets a value for the given key in the storage, owned by the given account.
	GetValue(owner, key []byte) (value []byte, err error)
	// SetValue sets a value for the given key in the storage, owned by the given account.
	SetValue(owner, key, value []byte) (err error)
	// ValueExists returns true if the given key exists in the storage, owned by the given account.
	ValueExists(owner, key []byte) (exists bool, err error)
	// AllocateStorageIndex allocates a new storage index under the given account.
	AllocateStorageIndex(owner []byte) (atree.StorageIndex, error)
	// CreateAccount creates a new account.
	CreateAccount(payer Address) (address Address, err error)
	// AddEncodedAccountKey appends an encoded key to an account.
	AddEncodedAccountKey(address Address, publicKey []byte) error
	// RevokeEncodedAccountKey removes a key from an account by index, add returns the encoded key.
	RevokeEncodedAccountKey(address Address, index int) (publicKey []byte, err error)
	// AddAccountKey appends a key to an account.
	AddAccountKey(address Address, publicKey *PublicKey, hashAlgo HashAlgorithm, weight int) (*AccountKey, error)
	// GetAccountKey retrieves a key from an account by index.
	GetAccountKey(address Address, index int) (*AccountKey, error)
	// RevokeAccountKey removes a key from an account by index.
	RevokeAccountKey(address Address, index int) (*AccountKey, error)
	// UpdateAccountContractCode updates the code associated with an account contract.
	UpdateAccountContractCode(address Address, name string, code []byte) (err error)
	// GetAccountContractCode returns the code associated with an account contract.
	GetAccountContractCode(address Address, name string) (code []byte, err error)
	// RemoveAccountContractCode removes the code associated with an account contract.
	RemoveAccountContractCode(address Address, name string) (err error)
	// GetSigningAccounts returns the signing accounts.
	GetSigningAccounts() ([]Address, error)
	// ProgramLog logs program logs.
	ProgramLog(string) error
	// EmitEvent is called when an event is emitted by the runtime.
	EmitEvent(cadence.Event) error
	// GenerateUUID is called to generate a UUID.
	GenerateUUID() (uint64, error)
	// GetComputationLimit returns the computation limit. A value <= 0 means there is no limit
	GetComputationLimit() uint64
	// SetComputationUsed reports the amount of computation used.
	SetComputationUsed(used uint64) error
	// DecodeArgument decodes a transaction argument against the given type.
	DecodeArgument(argument []byte, argumentType cadence.Type) (cadence.Value, error)
	// GetCurrentBlockHeight returns the current block height.
	GetCurrentBlockHeight() (uint64, error)
	// GetBlockAtHeight returns the block at the given height.
	GetBlockAtHeight(height uint64) (block Block, exists bool, err error)
	// UnsafeRandom returns a random uint64, where the process of random number derivation is not cryptographically
	// secure.
	UnsafeRandom() (uint64, error)
	// VerifySignature returns true if the given signature was produced by signing the given tag + data
	// using the given public key, signature algorithm, and hash algorithm.
	VerifySignature(
		signature []byte,
		tag string,
		signedData []byte,
		publicKey []byte,
		signatureAlgorithm SignatureAlgorithm,
		hashAlgorithm HashAlgorithm,
	) (bool, error)
	// Hash returns the digest of hashing the given data with using the given hash algorithm
	Hash(data []byte, tag string, hashAlgorithm HashAlgorithm) ([]byte, error)
	// GetAccountBalance gets accounts default flow token balance.
	GetAccountBalance(address common.Address) (value uint64, err error)
	// GetAccountAvailableBalance gets accounts default flow token balance - balance that is reserved for storage.
	GetAccountAvailableBalance(address common.Address) (value uint64, err error)
	// GetStorageUsed gets storage used in bytes by the address at the moment of the function call.
	GetStorageUsed(address Address) (value uint64, err error)
	// GetStorageCapacity gets storage capacity in bytes on the address.
	GetStorageCapacity(address Address) (value uint64, err error)
	// ImplementationDebugLog logs implementation log statements on a debug-level
	ImplementationDebugLog(message string) error
	// ValidatePublicKey verifies the validity of a public key.
	ValidatePublicKey(key *PublicKey) (bool, error)
	// GetAccountContractNames returns the names of all contracts deployed in an account.
	GetAccountContractNames(address Address) ([]string, error)
}

type InvalidContractDeploymentError added in v0.12.1

type InvalidContractDeploymentError struct {
	Err error
	interpreter.LocationRange
}

InvalidContractDeploymentError

func (*InvalidContractDeploymentError) ChildErrors added in v0.12.1

func (e *InvalidContractDeploymentError) ChildErrors() []error

func (*InvalidContractDeploymentError) Error added in v0.12.1

func (*InvalidContractDeploymentError) Unwrap added in v0.12.1

type InvalidContractDeploymentOriginError added in v0.12.1

type InvalidContractDeploymentOriginError struct {
	interpreter.LocationRange
}

InvalidContractDeploymentOriginError

func (*InvalidContractDeploymentOriginError) Error added in v0.12.1

type InvalidDeclarationKindChangeError added in v0.13.0

type InvalidDeclarationKindChangeError struct {
	Name    string
	OldKind common.DeclarationKind
	NewKind common.DeclarationKind
	ast.Range
}

InvalidDeclarationKindChangeError is reported during a contract update, when an attempt is made to convert an existing contract to a contract interface, or vise versa.

func (*InvalidDeclarationKindChangeError) Error added in v0.13.0

type InvalidEntryPointArgumentError added in v0.5.0

type InvalidEntryPointArgumentError struct {
	Index int
	Err   error
}

InvalidEntryPointArgumentError

func (*InvalidEntryPointArgumentError) Error added in v0.5.0

func (*InvalidEntryPointArgumentError) Unwrap added in v0.5.0

type InvalidEntryPointParameterCountError added in v0.5.0

type InvalidEntryPointParameterCountError struct {
	Expected int
	Actual   int
}

func (InvalidEntryPointParameterCountError) Error added in v0.5.0

type InvalidScriptReturnTypeError added in v0.11.0

type InvalidScriptReturnTypeError struct {
	Type sema.Type
}

InvalidScriptReturnTypeError is an error that is reported for invalid script return types.

For example, the type `Int` is valid, whereas a function type is not, because it cannot be exported/serialized.

func (*InvalidScriptReturnTypeError) Error added in v0.11.0

type InvalidTransactionAuthorizerCountError added in v0.2.0

type InvalidTransactionAuthorizerCountError struct {
	Expected int
	Actual   int
}

func (InvalidTransactionAuthorizerCountError) Error added in v0.2.0

type InvalidTransactionCountError

type InvalidTransactionCountError struct {
	Count int
}

func (InvalidTransactionCountError) Error

type InvalidValueTypeError added in v0.15.0

type InvalidValueTypeError struct {
	ExpectedType sema.Type
}

InvalidValueTypeError

func (*InvalidValueTypeError) Error added in v0.15.0

func (e *InvalidValueTypeError) Error() string

type Location

type Location = common.Location

type LocationCoverage added in v0.12.0

type LocationCoverage struct {
	LineHits map[int]int `json:"line_hits"`
}

LocationCoverage records coverage information for a location

func NewLocationCoverage added in v0.12.0

func NewLocationCoverage() *LocationCoverage

func (*LocationCoverage) AddLineHit added in v0.12.0

func (c *LocationCoverage) AddLineHit(line int)

type MalformedValueError added in v0.15.0

type MalformedValueError struct {
	ExpectedType sema.Type
}

func (*MalformedValueError) Error added in v0.15.0

func (e *MalformedValueError) Error() string

type Metrics added in v0.2.0

type Metrics interface {
	ProgramParsed(location common.Location, duration time.Duration)
	ProgramChecked(location common.Location, duration time.Duration)
	ProgramInterpreted(location common.Location, duration time.Duration)
	ValueEncoded(duration time.Duration)
	ValueDecoded(duration time.Duration)
}

type MissingCompositeDeclarationError added in v0.15.0

type MissingCompositeDeclarationError struct {
	Name string
	ast.Range
}

MissingCompositeDeclarationError is reported during an contract update, if an existing composite declaration (struct or struct interface) is removed.

func (*MissingCompositeDeclarationError) Error added in v0.15.0

type MissingEnumCasesError added in v0.15.0

type MissingEnumCasesError struct {
	DeclName string
	Expected int
	Found    int
	ast.Range
}

MissingEnumCasesError is reported during an enum update, if any enum cases are removed from an existing enum.

func (*MissingEnumCasesError) Error added in v0.15.0

func (e *MissingEnumCasesError) Error() string

type Option added in v0.5.0

type Option func(Runtime)

func WithAtreeValidationEnabled added in v0.20.0

func WithAtreeValidationEnabled(enabled bool) Option

WithAtreeValidationEnabled returns a runtime option that configures if atree validation is enabled.

func WithContractUpdateValidationEnabled added in v0.13.2

func WithContractUpdateValidationEnabled(enabled bool) Option

WithContractUpdateValidationEnabled returns a runtime option that configures if contract update validation is enabled.

type ParsingCheckingError added in v0.9.3

type ParsingCheckingError struct {
	Err      error
	Location common.Location
}

ParsingCheckingError is an error wrapper for a parsing or a checking error at a specific location

func (*ParsingCheckingError) ChildErrors added in v0.9.3

func (e *ParsingCheckingError) ChildErrors() []error

func (*ParsingCheckingError) Error added in v0.9.3

func (e *ParsingCheckingError) Error() string

func (*ParsingCheckingError) ImportLocation added in v0.12.1

func (e *ParsingCheckingError) ImportLocation() common.Location

func (*ParsingCheckingError) Unwrap added in v0.9.3

func (e *ParsingCheckingError) Unwrap() error

type PublicKey added in v0.14.0

type PublicKey struct {
	PublicKey []byte
	SignAlgo  SignatureAlgorithm
	IsValid   bool
	Validated bool
}

func NewPublicKeyFromValue added in v0.14.0

func NewPublicKeyFromValue(
	inter *interpreter.Interpreter,
	getLocationRange func() interpreter.LocationRange,
	publicKey interpreter.MemberAccessibleValue,
) (
	*PublicKey,
	error,
)

type REPL

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

func NewREPL

func NewREPL(
	onError func(err error, location common.Location, codes map[common.LocationID]string),
	onResult func(interpreter.Value),
	checkerOptions []sema.Option,
) (*REPL, error)

func (*REPL) Accept

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

func (*REPL) Suggestions

func (r *REPL) Suggestions() (result []REPLSuggestion)

type REPLSuggestion added in v0.2.0

type REPLSuggestion struct {
	Name, Description string
}

type ResolvedLocation added in v0.10.0

type ResolvedLocation = sema.ResolvedLocation

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, Context) (cadence.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, Context) error

	// InvokeContractFunction invokes a contract function with the given arguments.
	//
	// This function returns an error if the execution fails.
	// If the contract function accepts an AuthAccount as a parameter the corresponding argument can be an interpreter.Address.
	// returns a cadence.Value
	InvokeContractFunction(
		contractLocation common.AddressLocation,
		functionName string,
		arguments []interpreter.Value,
		argumentTypes []sema.Type,
		context Context,
	) (cadence.Value, 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(source []byte, context Context) (*interpreter.Program, error)

	// SetCoverageReport activates reporting coverage in the given report.
	// Passing nil disables coverage reporting (default).
	//
	SetCoverageReport(coverageReport *CoverageReport)

	// SetContractUpdateValidationEnabled configures if contract update validation is enabled.
	//
	SetContractUpdateValidationEnabled(enabled bool)

	// SetAtreeValidationEnabled configures if atree validation is enabled.
	SetAtreeValidationEnabled(enabled bool)

	// ReadStored reads the value stored at the given path
	//
	ReadStored(address common.Address, path cadence.Path, context Context) (cadence.Value, error)

	// ReadLinked dereferences the path and returns the value stored at the target
	//
	ReadLinked(address common.Address, path cadence.Path, context Context) (cadence.Value, error)
}

Runtime is a runtime capable of executing Cadence.

func NewInterpreterRuntime

func NewInterpreterRuntime(options ...Option) Runtime

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

type Script added in v0.12.0

type Script struct {
	Source    []byte
	Arguments [][]byte
}

type ScriptParameterTypeNotImportableError added in v0.17.0

type ScriptParameterTypeNotImportableError struct {
	Type sema.Type
}

ScriptParameterTypeNotImportableError is an error that is reported for script parameter types that are not importable.

For example, the type `Int` is an importable type, whereas a function-type is not.

func (*ScriptParameterTypeNotImportableError) Error added in v0.17.0

type ScriptParameterTypeNotStorableError added in v0.8.0

type ScriptParameterTypeNotStorableError struct {
	Type sema.Type
}

ScriptParameterTypeNotStorableError is an error that is reported for script parameter types that are not storable.

For example, the type `Int` is a storable type, whereas a function type is not.

func (*ScriptParameterTypeNotStorableError) Error added in v0.8.0

type SignatureAlgorithm added in v0.14.0

type SignatureAlgorithm = sema.SignatureAlgorithm

type Storage added in v0.20.0

type Storage struct {
	*atree.PersistentSlabStorage

	Ledger atree.Ledger
	// contains filtered or unexported fields
}

func NewStorage added in v0.20.0

func NewStorage(
	ledger atree.Ledger,
	reportMetric func(f func(), report func(metrics Metrics, duration time.Duration)),
) *Storage

func (*Storage) CheckHealth added in v0.20.0

func (s *Storage) CheckHealth() error

func (*Storage) Commit added in v0.20.0

func (s *Storage) Commit(inter *interpreter.Interpreter, commitContractUpdates bool) error

TODO: bring back concurrent encoding Commit serializes/saves all values in the readCache in storage (through the runtime interface).

func (*Storage) ReadValue added in v0.20.0

func (s *Storage) ReadValue(
	_ *interpreter.Interpreter,
	address common.Address,
	key string,
) interpreter.OptionalValue

ReadValue returns a value from account storage.

func (*Storage) ValueExists added in v0.20.0

func (s *Storage) ValueExists(
	_ *interpreter.Interpreter,
	address common.Address,
	key string,
) bool

ValueExists returns true if a value exists in account storage.

func (*Storage) WriteValue added in v0.20.0

func (s *Storage) WriteValue(
	inter *interpreter.Interpreter,
	address common.Address,
	key string,
	value interpreter.OptionalValue,
)

type TypeMismatchError added in v0.13.0

type TypeMismatchError struct {
	ExpectedType ast.Type
	FoundType    ast.Type
	ast.Range
}

TypeMismatchError is reported during a contract update, when a type of the new program does not match the existing type.

func (*TypeMismatchError) Error added in v0.13.0

func (e *TypeMismatchError) Error() string

type ValueDeclaration added in v0.12.0

type ValueDeclaration struct {
	Name           string
	Type           sema.Type
	DocString      string
	Kind           common.DeclarationKind
	IsConstant     bool
	ArgumentLabels []string
	Available      func(common.Location) bool
	Value          interpreter.Value
}

func (ValueDeclaration) ValueDeclarationArgumentLabels added in v0.12.0

func (v ValueDeclaration) ValueDeclarationArgumentLabels() []string

func (ValueDeclaration) ValueDeclarationAvailable added in v0.12.0

func (v ValueDeclaration) ValueDeclarationAvailable(location common.Location) bool

func (ValueDeclaration) ValueDeclarationDocString added in v0.17.0

func (v ValueDeclaration) ValueDeclarationDocString() string

func (ValueDeclaration) ValueDeclarationIsConstant added in v0.12.0

func (v ValueDeclaration) ValueDeclarationIsConstant() bool

func (ValueDeclaration) ValueDeclarationKind added in v0.12.0

func (v ValueDeclaration) ValueDeclarationKind() common.DeclarationKind

func (ValueDeclaration) ValueDeclarationName added in v0.12.0

func (v ValueDeclaration) ValueDeclarationName() string

func (ValueDeclaration) ValueDeclarationPosition added in v0.12.0

func (v ValueDeclaration) ValueDeclarationPosition() ast.Position

func (ValueDeclaration) ValueDeclarationType added in v0.12.0

func (v ValueDeclaration) ValueDeclarationType() sema.Type

func (ValueDeclaration) ValueDeclarationValue added in v0.12.0

func (v ValueDeclaration) ValueDeclarationValue(_ *interpreter.Interpreter) interpreter.Value

Directories

Path Synopsis
Package ast contains all AST nodes for Cadence.
Package ast contains all AST nodes for Cadence.
cmd
minifier
* Cadence - The resource-oriented smart contract programming language * * Copyright 2019-2020 Dapper Labs, Inc.
* Cadence - The resource-oriented smart contract programming language * * Copyright 2019-2020 Dapper Labs, Inc.
ir
wasm
WebAssembly (https://webassembly.org/) is an open standard for portable executable programs.
WebAssembly (https://webassembly.org/) is an open standard for portable executable programs.
tests

Jump to

Keyboard shortcuts

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