Skip to content

ErgoTree Functions#

This page is a WIP. Please see ErgoTree.pdf for full details.

Code Mnemonic Description Description
115 ConstantPlaceholder Int => T Create special ErgoTree node which can be replaced by constant with given id.
116 SubstConstants Coll[Byte], Coll[Int], Coll[T] => Coll[Byte] ...
122 LongToByteArray Long => Coll[Byte] Converts Long value to big-endian bytes representation.
123 ByteArrayToBigInt Coll[Byte] => BigInt Convert big-endian bytes representation (Coll[Byte]) to BigInt value.
124 ByteArrayToLong Coll[Byte] => Long Convert big-endian bytes representation (Coll[Byte]) to Long value.
125 Downcast (T => R) Cast this numeric value to a smaller type (e.g. Long to Int). Throws exception if overflow.
126 Upcast (T => R) Cast this numeric value to a bigger type (e.g. Int to Long)
140 SelectField (T, Byte => R) Select tuple field by its 1-based index. E.g. input._1 is transformed to SelectField(input, 1
143 LT T, T => Boolean Returns true is the left operand is less then the right operand, false otherwise.
144 LE T, T => Boolean Returns true is the left operand is less then or equal to the right operand, false otherwise.
145 GT T, T => Boolean Returns true is the left operand is greater then the right operand, false otherwise.
146 GE T, T => Boolean Returns true is the left operand is greater then or equal to the right operand, false otherwise.
147 EQ T, T => Boolean Compare equality of left and right arguments
148 NEQ T, T => Boolean Compare inequality of left and right arguments
149 If Boolean, T, T => T Compute condition, if true then compute trueBranch else compute falseBranch
150 AND Coll[Boolean] => Boolean Returns true if \emph{all the elements in collection are true.
151 OR Coll[Boolean] => Boolean Returns true if \emph{any the elements in collection are true.
152 AtLeast Int, Coll[SigmaProp] => SigmaProp ...
153 Minus T, T => T Returns a result of subtracting second numeric operand from the first.
154 Plus T, T => T Returns a sum of two numeric operands
155 Xor Coll[Byte], Coll[Byte] => Coll[Byte] Byte-wise XOR of two collections of bytes
156 Multiply T, T => T Returns a multiplication of two numeric operands
157 Division T, T => T Integer division of the first operand by the second operand.
158 Modulo T, T => T Reminder from division of the first operand by the second operand.
161 Min T, T => T Minimum value of two operands.
162 Max T, T => T Maximum value of two operands.
182 CreateAvlTree (Byte, Coll[Byte], Int, Option[Int] => AvlTree Construct a new authenticated dictionary with given parameters and tree root digest.
183 TreeLookup (AvlTree, Coll[Byte], Coll[Byte] => Option[Coll[Byte]]
203 CalcBlake2b256 (Coll[Byte] => Coll[Byte] Calculate Blake2b hash from input bytes.
204 CalcSha256 (Coll[Byte] => Coll[Byte] Calculate Sha256 hash from input bytes.
205 CreateProveDlog GroupElement => SigmaProp ErgoTree operation to create a new SigmaProp value representing public key of discrete logarithm signature protocol.
206 CreateProveDHTuple GroupElement, GroupElement, GroupElement, GroupElement => SigmaProp ErgoTree operation to create a new SigmaProp value representing public key of Diffie Hellman signature protocol. Common input: (g,h,u,v)
209 BoolToSigmaProp (Boolean => SigmaProp) ...
212 DeserializeContext (Byte => T) ...
213 DeserializeRegister (Byte, Option[T] => T ...
218 Apply (T) => R, T => R Apply the function to the arguments.
227 GetVar (Byte => Option[T]) Get context variable with given varId and type.
234 SigmaAnd (Coll[SigmaProp] => SigmaProp) Returns sigma proposition which is proven when \emph{all the elements in collection are proven.
235 SigmaOr (Coll[SigmaProp] => SigmaProp) Returns sigma proposition which is proven when \emph{any of the elements in collection is proven.
236 BinOr (Boolean, Boolean) => Boolean Logical OR of two operands
237 BinAnd (Boolean, Boolean) => Boolean Logical AND of two operands
238 DecodePoint Coll[Byte] => GroupElement Convert Coll[Byte] to GroupElement using GroupElementSerializer
239 LogicalNot Boolean => Boolean Logical NOT operation. Returns true if input is falseand falseif input is true.
240 Negation (T => T) Negates numeric value x by returning -x.
241 BitInversion (T => T) Invert every bit of the numeric value.
242 BitOr (T, T) => T Bitwise OR of two numeric operands.
243 BitAnd (T, T) => T Bitwise AND of two numeric operands.
244 BinXor (Boolean, Boolean => Boolean) Logical XOR of two operands
245 BitXor (T, T) => T Bitwise XOR of two numeric operands.
246 BitShiftRight (T, T) => T Right shift of bits.
247 BitShiftLeft (T, T) => T Left shift of bits.
248 BitShiftRightZeroed (T, T) => T Right shift of bits.
255 XorOf (Coll[Boolean] => Boolean) Similar to allOf, but performing logical XOR operation between all conditions instead of