ErgoTree node which represents application of function func
to the given arguments.
ErgoTree node which represents application of function func
to the given arguments.
expression which evaluates to a function
arguments of the function application
Apply types for type parameters of input value.
Frontend representation of a block of Val definitions.
Frontend representation of a block of Val definitions. { val x = ...; val y = ... } This node is not part of ErgoTree and hence have Undefined opCode.
Frontend node to represent variable names parsed in a source code.
Frontend node to represent variable names parsed in a source code. Should be resolved during compilation to lambda argument, Val definition or compilation environment value.
Frontend implementation of lambdas.
Frontend implementation of lambdas. Should be transformed to FuncValue.
Represents in ErgoTree an invocation of method of the object obj
with arguments args
.
Represents in ErgoTree an invocation of method of the object obj
with arguments args
.
The SMethod instances in STypeCompanions may have type STypeIdent in methods types,
but valid ErgoTree should have SMethod instances specialized for specific types of
obj and args using specializeFor
.
This means, if we save typeId, methodId, and we save all the arguments,
we can restore the specialized SMethod instance.
This work by induction, if we assume all arguments are monomorphic,
then we can make MethodCall monomorphic.
Thus, all ErgoTree instances are monomorphic by construction.
object on which method will be invoked
method to be invoked
arguments passed to the method on invocation
a map of concrete type for each generic type parameter
Frontend node to represent potential method call in a source code.
Frontend node to represent potential method call in a source code. Should be resolved during compilation to MethodCall. Cannot be serialized to ErgoTree.
Operation identity descriptor used in AOT costing (see usages in RuntimeCosting and CostTable)
Frontend node to select a field from an object.
Frontend node to select a field from an object. Should be transformed to SelectField
IR node to represent explicit Zero Knowledge scope in ErgoTree.
IR node to represent explicit Zero Knowledge scope in ErgoTree. Compiler checks Zero Knowledge properties and issue error message is case of violations. ZK-scoping is optional, it can be used when the user want to ensure Zero Knowledge of specific set of operations. Usually it will require simple restructuring of the code to make the scope body explicit. Invariants checked by the compiler:
For motivation and details see https://github.com/ScorexFoundation/sigmastate-interpreter/issues/236