Documentation ¶
Index ¶
- Constants
- Variables
- func ExportMeteredType(gauge common.MemoryGauge, t sema.Type, results map[sema.TypeID]cadence.Type) cadence.Type
- func ExportType(t sema.Type, results map[sema.TypeID]cadence.Type) cadence.Type
- func ExportValue(value interpreter.Value, inter *interpreter.Interpreter, ...) (cadence.Value, error)
- func ImportType(memoryGauge common.MemoryGauge, t cadence.Type) interpreter.StaticType
- func ImportValue(inter *interpreter.Interpreter, locationRange interpreter.LocationRange, ...) (interpreter.Value, error)
- func LiteralValue(inter *interpreter.Interpreter, expression ast.Expression, ty sema.Type) (cadence.Value, error)
- func NewBaseInterpreterEnvironment(config Config) *interpreterEnvironment
- func ParseLiteral(literal string, ty sema.Type, inter *interpreter.Interpreter) (cadence.Value, error)
- func ParseLiteralArgumentList(argumentList string, parameterTypes []sema.Type, ...) ([]cadence.Value, error)
- func SortContractUpdates(updates []ContractUpdate)
- func UserPanicToError(f func()) (returnedError error)
- type AccountKey
- type Address
- type ArgumentDecoder
- type ArgumentNotImportableError
- type Block
- type CallStackLimitExceededError
- type CodesAndPrograms
- type Config
- type Context
- type ContractUpdate
- type CoverageReport
- func (r *CoverageReport) AddLineHit(location Location, line int)
- func (r *CoverageReport) Diff(other CoverageReport) CoverageReportSummary
- func (r *CoverageReport) ExcludeLocation(location Location)
- func (r *CoverageReport) ExcludedLocationIDs() []string
- func (r *CoverageReport) Hits() int
- func (r *CoverageReport) InspectProgram(location Location, program *ast.Program)
- func (r *CoverageReport) IsLocationExcluded(location Location) bool
- func (r *CoverageReport) IsLocationInspected(location Location) bool
- func (r *CoverageReport) MarshalJSON() ([]byte, error)
- func (r *CoverageReport) MarshalLCOV() ([]byte, error)
- func (r *CoverageReport) Merge(other CoverageReport)
- func (r *CoverageReport) Misses() int
- func (r *CoverageReport) Percentage() string
- func (r *CoverageReport) Reset()
- func (r *CoverageReport) Statements() int
- func (r *CoverageReport) String() string
- func (r *CoverageReport) Summary() CoverageReportSummary
- func (r *CoverageReport) TotalLocations() int
- func (r *CoverageReport) UnmarshalJSON(data []byte) error
- func (r *CoverageReport) WithLocationFilter(locationFilter LocationFilter)
- func (r *CoverageReport) WithLocationMappings(locationMappings map[string]string)
- type CoverageReportSummary
- type Environment
- type Error
- type Executor
- type HashAlgorithm
- type Identifier
- type ImportResolver
- type Interface
- type InterpretFunc
- type InvalidEntryPointArgumentError
- type InvalidEntryPointParameterCountError
- type InvalidScriptReturnTypeError
- type InvalidTransactionAuthorizerCountError
- type InvalidTransactionCountError
- type InvalidValueTypeError
- type Location
- type LocationCoverage
- type LocationFilter
- type MalformedValueError
- type MeterInterface
- type Metrics
- type ParsingCheckingError
- type PublicKey
- type REPL
- type REPLSuggestion
- type ResolvedLocation
- type Runtime
- type Script
- type ScriptParameterTypeNotImportableError
- type ScriptParameterTypeNotStorableError
- type SignatureAlgorithm
- type Storage
- func (s *Storage) CheckHealth() error
- func (s *Storage) Commit(inter *interpreter.Interpreter, commitContractUpdates bool) error
- func (s *Storage) GetStorageMap(address common.Address, domain string, createIfNotExists bool) (storageMap *interpreter.StorageMap)
- func (s *Storage) NondeterministicCommit(inter *interpreter.Interpreter, commitContractUpdates bool) error
- func (s *Storage) StoreNewStorageMap(address atree.Address, domain string) *interpreter.StorageMap
- type UnreferencedRootSlabsError
- type ValueNotExportableError
Constants ¶
const ( // Supported signing algorithms SignatureAlgorithmUnknown = sema.SignatureAlgorithmUnknown SignatureAlgorithmECDSA_P256 = sema.SignatureAlgorithmECDSA_P256 SignatureAlgorithmECDSA_secp256k1 = sema.SignatureAlgorithmECDSA_secp256k1 SignatureAlgorithmBLS_BLS12_381 = sema.SignatureAlgorithmBLS_BLS12_381 )
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 )
const StorageDomainContract = "contract"
Variables ¶
var InvalidLiteralError = parser.NewSyntaxError( ast.Position{Line: 1}, "invalid literal", )
var LiteralExpressionTypeError = parser.NewSyntaxError( ast.Position{Line: 1}, "input is not a literal", )
var UnsupportedLiteralError = parser.NewSyntaxError( ast.Position{Line: 1}, "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
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)
func UserPanicToError ¶ added in v1.0.0
func UserPanicToError(f func()) (returnedError error)
UserPanicToError Executes `f` and gracefully handle `UserError` panics. All on-user panics (including `InternalError` and `ExternalError`) are propagated up.
Types ¶
type AccountKey ¶ added in v0.14.0
type AccountKey = stdlib.AccountKey
type ArgumentDecoder ¶ added in v0.30.0
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 (e *ArgumentNotImportableError) Error() string
func (*ArgumentNotImportableError) IsUserError ¶ added in v0.25.0
func (*ArgumentNotImportableError) IsUserError()
type CallStackLimitExceededError ¶ added in v0.20.0
type CallStackLimitExceededError struct {
Limit uint64
}
func (CallStackLimitExceededError) Error ¶ added in v0.20.0
func (e CallStackLimitExceededError) Error() string
func (CallStackLimitExceededError) IsUserError ¶ added in v0.25.0
func (CallStackLimitExceededError) IsUserError()
type CodesAndPrograms ¶ added in v0.41.0
type CodesAndPrograms struct {
// contains filtered or unexported fields
}
CodesAndPrograms collects the source code and AST for each location. It is purely used for debugging: Both the codes and the programs are provided in runtime errors.
func NewCodesAndPrograms ¶ added in v0.41.0
func NewCodesAndPrograms() CodesAndPrograms
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 // CoverageReport enables and collects coverage reporting metrics CoverageReport *CoverageReport // AttachmentsEnabled specifies if attachments are enabled AttachmentsEnabled bool // LegacyContractUpgradeEnabled enabled specifies whether to use the old parser when parsing an old contract LegacyContractUpgradeEnabled 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 { // Contains a *LocationCoverage per location. Coverage map[common.Location]*LocationCoverage // Contains locations whose programs are already inspected. Locations map[common.Location]struct{} // Contains locations excluded from coverage collection. ExcludedLocations map[common.Location]struct{} // contains filtered or unexported fields }
CoverageReport collects coverage information per location. It keeps track of inspected locations, and can also exclude locations from coverage collection.
func NewCoverageReport ¶ added in v0.12.0
func NewCoverageReport() *CoverageReport
NewCoverageReport creates and returns a *CoverageReport.
func (*CoverageReport) AddLineHit ¶ added in v0.12.0
func (r *CoverageReport) AddLineHit(location Location, line int)
AddLineHit increments the hit count for the given line, on the given location. The method call is a NO-OP in two cases: - If the location is excluded from coverage collection - If the location has not been inspected for its statements
func (*CoverageReport) Diff ¶ added in v0.38.0
func (r *CoverageReport) Diff(other CoverageReport) CoverageReportSummary
Diff computes the incremental diff between the calling object and a new CoverageReport. The returned result is a CoverageReportSummary object.
CoverageReportSummary{ Locations: 0, Statements: 0, Hits: 2, Misses: -2, Coverage: "100.0%", }
The above diff is interpreted as follows: - No diff in locations, - No diff in statements, - Hits increased by 2, - Misses decreased by 2, - Coverage Δ increased by 100.0%.
func (*CoverageReport) ExcludeLocation ¶ added in v0.33.1
func (r *CoverageReport) ExcludeLocation(location Location)
ExcludeLocation adds the given location to the map of excluded locations.
func (*CoverageReport) ExcludedLocationIDs ¶ added in v0.38.0
func (r *CoverageReport) ExcludedLocationIDs() []string
ExcludedLocationIDs returns the ID of each excluded location. This is helpful in order to marshal/unmarshal a CoverageReport, without losing any valuable information.
func (*CoverageReport) Hits ¶ added in v0.38.0
func (r *CoverageReport) Hits() int
Hits returns the total count of covered lines, for all the locations included in the CoverageReport.
func (*CoverageReport) InspectProgram ¶ added in v0.33.1
func (r *CoverageReport) InspectProgram(location Location, program *ast.Program)
InspectProgram inspects the elements of the given *ast.Program, and counts its statements. If inspection is successful, the location is marked as inspected. If the given location is excluded from coverage collection, the method call results in a NO-OP. If the CoverageReport.LocationFilter is present, and calling it with the given location results to false, the method call also results in a NO-OP.
func (*CoverageReport) IsLocationExcluded ¶ added in v0.33.1
func (r *CoverageReport) IsLocationExcluded(location Location) bool
IsLocationExcluded checks whether the given location is excluded or not, from coverage collection.
func (*CoverageReport) IsLocationInspected ¶ added in v0.38.0
func (r *CoverageReport) IsLocationInspected(location Location) bool
IsLocationInspected checks whether the given location, has been inspected or not.
func (*CoverageReport) MarshalJSON ¶ added in v0.27.0
func (r *CoverageReport) MarshalJSON() ([]byte, error)
MarshalJSON serializes each common.Location/*LocationCoverage key/value pair on the *CoverageReport.Coverage map, as well as the IDs on the *CoverageReport.ExcludedLocations map.
func (*CoverageReport) MarshalLCOV ¶ added in v0.39.10
func (r *CoverageReport) MarshalLCOV() ([]byte, error)
MarshalLCOV serializes each common.Location/*LocationCoverage key/value pair on the *CoverageReport.Coverage map, to the LCOV format. Currently supports only line coverage, function and branch coverage are not yet available. Description for the LCOV file format, can be found here https://github.com/linux-test-project/lcov/blob/master/man/geninfo.1#L948.
func (*CoverageReport) Merge ¶ added in v0.38.0
func (r *CoverageReport) Merge(other CoverageReport)
Merge adds all the collected coverage information to the calling object. Excluded locations are also taken into account.
func (*CoverageReport) Misses ¶ added in v0.38.0
func (r *CoverageReport) Misses() int
Misses returns the total count of non-covered lines, for all the locations included in the CoverageReport.
func (*CoverageReport) Percentage ¶ added in v0.38.0
func (r *CoverageReport) Percentage() string
Percentage returns a string representation of the covered statements percentage. It is defined as the ratio of total covered lines over total statements, for all locations.
func (*CoverageReport) Reset ¶ added in v0.37.0
func (r *CoverageReport) Reset()
Reset flushes the collected coverage information for all locations and inspected locations. Excluded locations remain intact.
func (*CoverageReport) Statements ¶ added in v0.38.0
func (r *CoverageReport) Statements() int
Statements returns the total count of statements, for all the locations included in the CoverageReport.
func (*CoverageReport) String ¶ added in v0.38.0
func (r *CoverageReport) String() string
String returns a human-friendly message for the covered statements percentage.
func (*CoverageReport) Summary ¶ added in v0.38.0
func (r *CoverageReport) Summary() CoverageReportSummary
Summary returns a CoverageReportSummary object, containing key metrics for a CoverageReport, such as: - Total Locations, - Total Statements, - Total Hits, - Total Misses, - Overall Coverage Percentage.
func (*CoverageReport) TotalLocations ¶ added in v0.38.0
func (r *CoverageReport) TotalLocations() int
TotalLocations returns the count of locations included in the CoverageReport. This implies that these locations are: - inspected, - not marked as exlucded.
func (*CoverageReport) UnmarshalJSON ¶ added in v0.38.0
func (r *CoverageReport) UnmarshalJSON(data []byte) error
UnmarshalJSON deserializes a JSON structure and populates the calling object with the respective *CoverageReport.Coverage & *CoverageReport.ExcludedLocations maps.
func (*CoverageReport) WithLocationFilter ¶ added in v0.39.0
func (r *CoverageReport) WithLocationFilter( locationFilter LocationFilter, )
WithLocationFilter sets the LocationFilter for the current CoverageReport.
func (*CoverageReport) WithLocationMappings ¶ added in v0.42.1
func (r *CoverageReport) WithLocationMappings( locationMappings map[string]string, )
WithLocationMappings sets the LocationMappings for the current CoverageReport.
type CoverageReportSummary ¶ added in v0.38.0
type CoverageReportSummary struct { Locations int `json:"locations"` Statements int `json:"statements"` Hits int `json:"hits"` Misses int `json:"misses"` Coverage string `json:"coverage"` }
CoverageReportSummary contains key metrics that are derived from a CoverageReport object, such as: - Total Locations, - Total Statements, - Total Hits, - Total Misses, - Overall Coverage Percentage. This metrics can be utilized in various ways, such as a CI plugin/app.
type Environment ¶ added in v0.26.0
type Environment interface { ArgumentDecoder SetCompositeValueFunctionsHandler( typeID common.TypeID, handler stdlib.CompositeValueFunctionsHandler, ) DeclareValue( valueDeclaration stdlib.StandardLibraryValue, location common.Location, ) DeclareType( typeDeclaration stdlib.StandardLibraryType, location common.Location, ) Configure( runtimeInterface Interface, codesAndPrograms CodesAndPrograms, storage *Storage, coverageReport *CoverageReport, ) ParseAndCheckProgram( code []byte, location common.Location, getAndSetProgram bool, ) ( *interpreter.Program, error, ) Interpret( location common.Location, program *interpreter.Program, f InterpretFunc, ) ( interpreter.Value, *interpreter.Interpreter, error, ) CommitStorage(inter *interpreter.Interpreter) error NewAccountValue(inter *interpreter.Interpreter, 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.
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:
- 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.
- Execute() performs the actual transaction execution (e.g., run the interpreter to produce the transaction result).
- 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 Interface ¶
type Interface interface { MeterInterface // 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) // GetOrLoadProgram returns the program for the given location, if available, // or sets the program by calling the given load function. // // For implementations: // - Perform a lookup for the location and return the program if it exists. // - If the program does not exist, call load, and store the result, // *EVEN IF loading failed* (program is nil / error is non-nil)! // - During execution of a high-level program (e.g. script, transaction, etc.), // 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 exactly what was previously returned from load, // *EVEN IF loading failed* (program is nil / error is non-nil), // and it may NOT return something different // - Do NOT implement this as a cache! GetOrLoadProgram( location Location, load func() (*interpreter.Program, error), ) (*interpreter.Program, error) SetInterpreterSharedState(state *interpreter.SharedState) // 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) // 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(location common.AddressLocation, code []byte) (err error) // GetAccountContractCode returns the code associated with an account contract. GetAccountContractCode(location common.AddressLocation) (code []byte, err error) // RemoveAccountContractCode removes the code associated with an account contract. RemoveAccountContractCode(location common.AddressLocation) (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) // 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) // ReadRandom reads pseudo-random bytes into the input slice, using distributed randomness. ReadRandom([]byte) 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, ) // GenerateAccountID generates a new, *non-zero*, unique ID for the given account. GenerateAccountID(address common.Address) (uint64, error) }
type InterpretFunc ¶ added in v0.26.0
type InterpretFunc func(inter *interpreter.Interpreter) (interpreter.Value, error)
type InvalidEntryPointArgumentError ¶ added in v0.5.0
InvalidEntryPointArgumentError
func (*InvalidEntryPointArgumentError) Error ¶ added in v0.5.0
func (e *InvalidEntryPointArgumentError) Error() string
func (*InvalidEntryPointArgumentError) IsUserError ¶ added in v0.25.0
func (*InvalidEntryPointArgumentError) IsUserError()
func (*InvalidEntryPointArgumentError) Unwrap ¶ added in v0.5.0
func (e *InvalidEntryPointArgumentError) Unwrap() error
type InvalidEntryPointParameterCountError ¶ added in v0.5.0
func (InvalidEntryPointParameterCountError) Error ¶ added in v0.5.0
func (e InvalidEntryPointParameterCountError) Error() string
func (InvalidEntryPointParameterCountError) IsUserError ¶ added in v0.25.0
func (InvalidEntryPointParameterCountError) IsUserError()
type InvalidScriptReturnTypeError ¶ added in v0.11.0
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 (e *InvalidScriptReturnTypeError) Error() string
func (*InvalidScriptReturnTypeError) IsUserError ¶ added in v0.25.0
func (*InvalidScriptReturnTypeError) IsUserError()
type InvalidTransactionAuthorizerCountError ¶ added in v0.2.0
func (InvalidTransactionAuthorizerCountError) Error ¶ added in v0.2.0
func (e InvalidTransactionAuthorizerCountError) Error() string
func (InvalidTransactionAuthorizerCountError) IsUserError ¶ added in v0.25.0
func (InvalidTransactionAuthorizerCountError) IsUserError()
type InvalidTransactionCountError ¶
type InvalidTransactionCountError struct {
Count int
}
func (InvalidTransactionCountError) Error ¶
func (e InvalidTransactionCountError) Error() string
func (InvalidTransactionCountError) IsUserError ¶ added in v0.25.0
func (InvalidTransactionCountError) IsUserError()
type InvalidValueTypeError ¶ added in v0.15.0
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 LocationCoverage ¶ added in v0.12.0
type LocationCoverage struct { // Contains hit count for each line on a given location. // A hit count of 0 means the line was not covered. LineHits map[int]int // Total number of statements on a given location. Statements int }
LocationCoverage records coverage information for a location.
func NewLocationCoverage ¶ added in v0.12.0
func NewLocationCoverage(lineHits map[int]int) *LocationCoverage
NewLocationCoverage creates and returns a *LocationCoverage with the given lineHits map.
func (*LocationCoverage) AddLineHit ¶ added in v0.12.0
func (c *LocationCoverage) AddLineHit(line int)
AddLineHit increments the hit count for the given line.
func (*LocationCoverage) CoveredLines ¶ added in v0.33.1
func (c *LocationCoverage) CoveredLines() int
CoveredLines returns the count of covered lines for a given location. This is the number of lines with a hit count > 0.
func (*LocationCoverage) MissedLines ¶ added in v0.33.1
func (c *LocationCoverage) MissedLines() []int
MissedLines returns an array with the missed lines for a given location. These are all the lines with a hit count == 0. The resulting array is sorted in ascending order.
func (*LocationCoverage) Percentage ¶ added in v0.33.1
func (c *LocationCoverage) Percentage() string
Percentage returns a string representation of the covered statements percentage. It is defined as the ratio of covered lines over the total statements for a given location.
type LocationFilter ¶ added in v0.39.0
type MalformedValueError ¶ added in v0.15.0
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 MeterInterface ¶ added in v0.32.0
type MeterInterface interface { // MeterMemory gets called when new memory is allocated or used by the interpreter MeterMemory(usage common.MemoryUsage) 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 // ComputationUsed returns the total computation used in the current runtime. ComputationUsed() (uint64, error) // MemoryUsed returns the total memory (estimate) used in the current runtime. MemoryUsed() (uint64, error) // InteractionUsed returns the total storage interaction used in the current runtime. InteractionUsed() (uint64, error) }
type ParsingCheckingError ¶ added in v0.9.3
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 REPL ¶
type REPL struct { OnError func(err error, location Location, codes map[Location][]byte) OnExpressionType func(sema.Type) OnResult func(interpreter.Value) // contains filtered or unexported fields }
func (*REPL) ExportValue ¶ added in v0.30.0
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 { // Config returns the runtime.Config this Runtime was instantiated with. Config() Config // 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 &Account 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) // 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 ¶
NewInterpreterRuntime returns an interpreter-based version of the Flow runtime.
type ScriptParameterTypeNotImportableError ¶ added in v0.17.0
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 (e *ScriptParameterTypeNotImportableError) Error() string
func (*ScriptParameterTypeNotImportableError) IsUserError ¶ added in v0.25.0
func (*ScriptParameterTypeNotImportableError) IsUserError()
type ScriptParameterTypeNotStorableError ¶ added in v0.8.0
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 (e *ScriptParameterTypeNotStorableError) Error() string
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 NewStorageMaps *orderedmap.OrderedMap[interpreter.StorageKey, atree.StorageIndex] 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 (*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, )
func (*Storage) NondeterministicCommit ¶ added in v1.0.0
func (s *Storage) NondeterministicCommit(inter *interpreter.Interpreter, commitContractUpdates bool) error
NondeterministicCommit serializes and commits all values in the deltas storage in nondeterministic order. This function is used when commit ordering isn't required (e.g. migration programs).
func (*Storage) StoreNewStorageMap ¶ added in v1.0.0
func (s *Storage) StoreNewStorageMap(address atree.Address, domain string) *interpreter.StorageMap
type UnreferencedRootSlabsError ¶ added in v0.42.10
func (UnreferencedRootSlabsError) Error ¶ added in v0.42.10
func (e UnreferencedRootSlabsError) Error() string
func (UnreferencedRootSlabsError) IsInternalError ¶ added in v0.42.10
func (UnreferencedRootSlabsError) IsInternalError()
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()
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package ast contains all AST nodes for Cadence.
|
Package ast contains all AST nodes for Cadence. |
minifier
* Cadence - The resource-oriented smart contract programming language * * Copyright Dapper Labs, Inc.
|
* Cadence - The resource-oriented smart contract programming language * * Copyright Dapper Labs, Inc. |
uses the provided function `f` to generate a slice with no duplicates.
|
uses the provided function `f` to generate a slice with no duplicates. |
list
Package list implements a doubly linked list.
|
Package list implements a doubly linked list. |
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
|
|