runtime

package
v0.31.5 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 2023 License: Apache-2.0 Imports: 25 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
	HashAlgorithmKECCAK_256            = sema.HashAlgorithmKECCAK_256
)
View Source
const StorageDomainContract = "contract"

Variables

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

Functions

func ExportMeteredType added in v0.24.0

func ExportMeteredType(
	gauge common.MemoryGauge,
	t sema.Type,
	results map[sema.TypeID]cadence.Type,
) cadence.Type

ExportMeteredType converts a runtime type to its corresponding Go representation.

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,
	locationRange interpreter.LocationRange,
) (cadence.Value, error)

ExportValue converts a runtime value to its native Go representation.

func ImportType added in v0.24.0

func ImportType(memoryGauge common.MemoryGauge, t cadence.Type) interpreter.StaticType

func ImportValue added in v0.27.0

func ImportValue(
	inter *interpreter.Interpreter,
	locationRange interpreter.LocationRange,
	standardLibraryHandler stdlib.StandardLibraryHandler,
	value cadence.Value,
	expectedType sema.Type,
) (interpreter.Value, error)

ImportValue converts a Cadence value to a runtime value.

func LiteralValue added in v0.12.0

func LiteralValue(inter *interpreter.Interpreter, expression ast.Expression, ty sema.Type) (cadence.Value, error)

func NewBaseInterpreterEnvironment added in v0.26.0

func NewBaseInterpreterEnvironment(config Config) *interpreterEnvironment

func ParseLiteral added in v0.12.0

func ParseLiteral(
	literal string,
	ty sema.Type,
	inter *interpreter.Interpreter,
) (
	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,
	inter *interpreter.Interpreter,
) (
	[]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.

Note: This method is not used directly within Cadence, but used by downstream dependencies such as CLI, playground, etc. Hence, shouldn't be moved to test.

func SortContractUpdates added in v0.23.0

func SortContractUpdates(updates []ContractUpdate)

Types

type AccountKey added in v0.14.0

type AccountKey = stdlib.AccountKey

type Address

type Address = common.Address

type ArgumentDecoder added in v0.30.0

type ArgumentDecoder interface {
	stdlib.StandardLibraryHandler

	// DecodeArgument decodes a transaction/script argument against the given type.
	DecodeArgument(argument []byte, argumentType cadence.Type) (cadence.Value, error)
}

type ArgumentNotImportableError added in v0.18.0

type ArgumentNotImportableError struct {
	Type interpreter.StaticType
}

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

func (*ArgumentNotImportableError) Error added in v0.18.0

func (*ArgumentNotImportableError) IsUserError added in v0.25.0

func (*ArgumentNotImportableError) IsUserError()

type Block added in v0.9.0

type Block = stdlib.Block

type CallStackLimitExceededError added in v0.20.0

type CallStackLimitExceededError struct {
	Limit uint64
}

func (CallStackLimitExceededError) Error added in v0.20.0

func (CallStackLimitExceededError) IsUserError added in v0.25.0

func (CallStackLimitExceededError) IsUserError()

type Config added in v0.26.0

type Config struct {
	Debugger *interpreter.Debugger
	// StackDepthLimit specifies the maximum depth for call stacks
	StackDepthLimit uint64
	// AtreeValidationEnabled configures if atree validation is enabled
	AtreeValidationEnabled bool
	// TracingEnabled configures if tracing is enabled
	TracingEnabled bool
	// ResourceOwnerChangeCallbackEnabled configures if the resource owner change callback is enabled
	ResourceOwnerChangeHandlerEnabled bool
	// CoverageReportingEnabled configures if coverage reporting is enabled
	CoverageReportingEnabled bool
	// AccountLinkingEnabled specifies if account linking is enabled
	AccountLinkingEnabled bool
}

Config is a constant/read-only configuration of an environment.

type Context added in v0.12.0

type Context struct {
	Interface      Interface
	Location       Location
	Environment    Environment
	CoverageReport *CoverageReport
}

type ContractUpdate added in v0.13.2

type ContractUpdate struct {
	ContractValue *interpreter.CompositeValue
	Key           interpreter.StorageKey
}

type CoverageReport added in v0.12.0

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

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 Location, line int)

func (*CoverageReport) MarshalJSON added in v0.27.0

func (r *CoverageReport) MarshalJSON() ([]byte, error)

type Environment added in v0.26.0

type Environment interface {
	ArgumentDecoder

	Declare(valueDeclaration stdlib.StandardLibraryValue)
	Configure(
		runtimeInterface Interface,
		codesAndPrograms codesAndPrograms,
		storage *Storage,
		coverageReport *CoverageReport,
	)
	ParseAndCheckProgram(
		code []byte,
		location common.Location,
		storeProgram bool,
	) (
		*interpreter.Program,
		error,
	)
	Interpret(
		location common.Location,
		program *interpreter.Program,
		f InterpretFunc,
	) (
		interpreter.Value,
		*interpreter.Interpreter,
		error,
	)
	CommitStorage(inter *interpreter.Interpreter) error
	NewAuthAccountValue(address interpreter.AddressValue) interpreter.Value
	NewPublicAccountValue(address interpreter.AddressValue) interpreter.Value
}

func NewScriptInterpreterEnvironment added in v0.26.0

func NewScriptInterpreterEnvironment(config Config) Environment

type Error

type Error struct {
	Err      error
	Location Location
	Codes    map[Location][]byte
	Programs map[Location]*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 Executor added in v0.25.0

type Executor interface {
	// Preprocess prepares the transaction/script for execution.
	//
	// This function returns an error if the program has errors (e.g., syntax
	// errors, type errors).
	//
	// This method may be called multiple times.  Only the first call will
	// trigger meaningful work; subsequent calls will return the cached return
	// value from the original call (i.e., an Executor implementation must
	// guard this method with sync.Once).
	Preprocess() error

	// Execute executes the transaction/script.
	//
	// This function returns an error if Preprocess failed or if the execution
	// fails.
	//
	// This method may be called multiple times.  Only the first call will
	// trigger meaningful work; subsequent calls will return the cached return
	// value from the original call (i.e., an Executor implementation must
	// guard this method with sync.Once).
	//
	// Note: Execute will invoke Preprocess to ensure Preprocess was called at
	// least once.
	Execute() error

	// Result returns the transaction/scipt's execution result.
	//
	// This function returns an error if Preproces or Execute fails.  The
	// cadence.Value is always nil for transaction.
	//
	// This method may be called multiple times.  Only the first call will
	// trigger meaningful work; subsequent calls will return the cached return
	// value from the original call (i.e., an Executor implementation must
	// guard this method with sync.Once).
	//
	// Note: Result will invoke Execute to ensure Execute was called at least
	// once.
	Result() (cadence.Value, error)
}

Executor is a continuation which represents a full unit of transaction/script execution.

The full unit of execution is divided into stages:

  1. Preprocess() initializes the executor in preparation for the actual transaction execution (e.g., parse / type check the input). Note that the work done by Preprocess() should be embrassingly parallel.
  2. Execute() performs the actual transaction execution (e.g., run the interpreter to produce the transaction result).
  3. Result() returns the result of the full unit of execution.

TODO: maybe add Cleanup/Postprocess in the future

type HashAlgorithm added in v0.14.0

type HashAlgorithm = sema.HashAlgorithm

type Identifier added in v0.10.0

type Identifier = ast.Identifier

type ImportResolver

type ImportResolver = func(location 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 returns the program for the given location, if available.
	//
	// NOTE:
	//
	// For implementations:
	// - 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/nil (!) after SetProgram was called.
	//   Do NOT implement this as a cache!
	//
	// For uses:
	// - ONLY call this function when a program must be parsed and checked,
	//   as an optimization to reuse the result of a potential previous parse and check.
	// - If GetProgram returns nil, Cadence MUST call SetProgram:
	//   There's an informal contract between Cadence and the implementer:
	//   Cadence calls GetProgram to potentially avoid having to parse and check a program.
	//   If the implementer returns nil from GetProgram,
	//   it expects that Cadence sets the resulting parsed and checked program with SetProgram.
	// - The behaviour after GetProgram returning nil or a program must be always deterministic:
	//   As SetProgram is called when GetProgram is nil, then SetProgram MUST also be called when
	//   GetProgram returns a program. This prevents nondeterministic behaviour
	//
	// Deprecated: This function should be refactored to ensure that SetProgram is always called
	//
	GetProgram(Location) (*interpreter.Program, error)
	// SetProgram sets the program for the given location.
	SetProgram(Location, *interpreter.Program) error
	// SetInterpreterSharedState sets the shared state of all interpreters.
	SetInterpreterSharedState(state *interpreter.SharedState)
	// GetInterpreterSharedState gets the shared state of all interpreters.
	// May return nil if none is available or use is not applicable.
	GetInterpreterSharedState() *interpreter.SharedState
	// 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)
	AccountKeysCount(address Address) (uint64, 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)
	// MeterComputation is a callback method for metering computation, it returns error
	// when computation passes the limit (set by the environment)
	MeterComputation(operationType common.ComputationKind, intensity uint) error
	// DecodeArgument decodes a transaction/script 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) error
	// GetAccountContractNames returns the names of all contracts deployed in an account.
	GetAccountContractNames(address Address) ([]string, error)
	// RecordTrace records an opentelemetry trace.
	RecordTrace(operation string, location Location, duration time.Duration, attrs []attribute.KeyValue)
	// BLSVerifyPOP verifies a proof of possession (PoP) for the receiver public key.
	BLSVerifyPOP(publicKey *PublicKey, signature []byte) (bool, error)
	// BLSAggregateSignatures aggregate multiple BLS signatures into one.
	BLSAggregateSignatures(signatures [][]byte) ([]byte, error)
	// BLSAggregatePublicKeys aggregate multiple BLS public keys into one.
	BLSAggregatePublicKeys(publicKeys []*PublicKey) (*PublicKey, error)
	// ResourceOwnerChanged gets called when a resource's owner changed (if enabled)
	ResourceOwnerChanged(
		interpreter *interpreter.Interpreter,
		resource *interpreter.CompositeValue,
		oldOwner common.Address,
		newOwner common.Address,
	)
	// MeterMemory gets called when new memory is allocated or used by the interpreter
	MeterMemory(usage common.MemoryUsage) error
}

type InterpretFunc added in v0.26.0

type InterpretFunc func(inter *interpreter.Interpreter) (interpreter.Value, error)

type InvalidEntryPointArgumentError added in v0.5.0

type InvalidEntryPointArgumentError struct {
	Err   error
	Index int
}

InvalidEntryPointArgumentError

func (*InvalidEntryPointArgumentError) Error added in v0.5.0

func (*InvalidEntryPointArgumentError) IsUserError added in v0.25.0

func (*InvalidEntryPointArgumentError) IsUserError()

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

func (InvalidEntryPointParameterCountError) IsUserError added in v0.25.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.

A type is invalid if it cannot be exported / returned externally.

func (*InvalidScriptReturnTypeError) Error added in v0.11.0

func (*InvalidScriptReturnTypeError) IsUserError added in v0.25.0

func (*InvalidScriptReturnTypeError) IsUserError()

type InvalidTransactionAuthorizerCountError added in v0.2.0

type InvalidTransactionAuthorizerCountError struct {
	Expected int
	Actual   int
}

func (InvalidTransactionAuthorizerCountError) Error added in v0.2.0

func (InvalidTransactionAuthorizerCountError) IsUserError added in v0.25.0

type InvalidTransactionCountError

type InvalidTransactionCountError struct {
	Count int
}

func (InvalidTransactionCountError) Error

func (InvalidTransactionCountError) IsUserError added in v0.25.0

func (InvalidTransactionCountError) IsUserError()

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

func (*InvalidValueTypeError) IsUserError added in v0.25.0

func (*InvalidValueTypeError) IsUserError()

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

func (*MalformedValueError) IsUserError added in v0.25.0

func (*MalformedValueError) IsUserError()

type Metrics added in v0.2.0

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

type ParsingCheckingError added in v0.9.3

type ParsingCheckingError struct {
	Err      error
	Location 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() Location

func (*ParsingCheckingError) IsUserError added in v0.25.0

func (*ParsingCheckingError) IsUserError()

func (*ParsingCheckingError) Unwrap added in v0.9.3

func (e *ParsingCheckingError) Unwrap() error

type PublicKey added in v0.14.0

type PublicKey = stdlib.PublicKey

type REPL

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

func NewREPL

func NewREPL(
	onError func(err error, location Location, codes map[Location][]byte),
	onResult func(interpreter.Value),
) (*REPL, error)

func (*REPL) Accept

func (r *REPL) Accept(code []byte) (inputIsComplete bool, err error)

func (*REPL) ExportValue added in v0.30.0

func (r *REPL) ExportValue(value interpreter.Value) (cadence.Value, error)

func (*REPL) GetGlobal added in v0.30.0

func (r *REPL) GetGlobal(name string) interpreter.Value

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 {
	// NewScriptExecutor returns an executor which executes the given script.
	NewScriptExecutor(Script, Context) Executor

	// 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)

	// NewTransactionExecutor returns an executor which executes the given
	// transaction.
	NewTransactionExecutor(Script, Context) Executor

	// 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

	// NewContractFunctionExecutor returns an executor which invokes a contract
	// function with the given arguments.
	NewContractFunctionExecutor(
		contractLocation common.AddressLocation,
		functionName string,
		arguments []cadence.Value,
		argumentTypes []sema.Type,
		context Context,
	) Executor

	// 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 []cadence.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)

	// 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)

	// Storage returns the storage system and an interpreter which can be used for
	// accessing values in storage.
	//
	// NOTE: only use the interpreter for storage operations,
	// do *NOT* use the interpreter for any other purposes,
	// such as executing a program.
	//
	Storage(context Context) (*Storage, *interpreter.Interpreter, error)

	SetDebugger(debugger *interpreter.Debugger)
}

Runtime is a runtime capable of executing Cadence.

func NewInterpreterRuntime

func NewInterpreterRuntime(defaultConfig Config) 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

func (*ScriptParameterTypeNotImportableError) IsUserError added in v0.25.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

func (*ScriptParameterTypeNotStorableError) IsUserError added in v0.25.0

func (*ScriptParameterTypeNotStorableError) IsUserError()

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, memoryGauge common.MemoryGauge) *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

Commit serializes/saves all values in the readCache in storage (through the runtime interface).

func (*Storage) GetStorageMap added in v0.23.0

func (s *Storage) GetStorageMap(
	address common.Address,
	domain string,
	createIfNotExists bool,
) (
	storageMap *interpreter.StorageMap,
)

type ValueNotExportableError added in v0.30.0

type ValueNotExportableError struct {
	Type interpreter.StaticType
}

ValueNotExportableError is an error that is reported for values that cannot be exported.

func (*ValueNotExportableError) Error added in v0.30.0

func (e *ValueNotExportableError) Error() string

func (*ValueNotExportableError) IsUserError added in v0.30.0

func (*ValueNotExportableError) IsUserError()

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-2022 Dapper Labs, Inc.
* Cadence - The resource-oriented smart contract programming language * * Copyright 2019-2022 Dapper Labs, Inc.
list
Package list implements a doubly linked list.
Package list implements a doubly linked list.
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.
rlp
tests

Jump to

Keyboard shortcuts

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