Features:
- ErgoTree types, values, IR nodes definition;
- ErgoTree IR nodes serialization;
ErgoTree IR
ErgoTree Specification
Descriptions for the operations can be found in ErgoTree Specification
Not yet implemented operations:
Object properties and methods
SigmaProp
Implemented operations (IR nodes):
General
- Blocks (
BlockValue
);
- Variable definition (
ValDef
, ValUse
);
- Function definition (
FuncValue
);
- Function application(
Apply
);
- Tuplse field access
- 'If' conditional
Operations
- comparison:
>, <, >=, <=, ==, !=
;
- arithmetic:
+, -, *, /, %
;
- logical:
&&, ||
;
- | (bitwise OR);
- & (bitwise AND);
- ^ (bitwise XOR);
|
(byte-wise XOR of two collections of bytes) #296;
- unary
!
;
- unary
-
;
- ^ (logical XOR);
- unary
~
(bit inversion);
Predefined functions
- longToByteArray
- byteArrayToBigInt
- byteArrayToLong
- upcast
- allOf
- anyOf
- min
- max
- blake2b256
- sha256
- proveDlog
- proveDHTuple
- sigmaProp
- substConstants
- executeFromVar
- executeFromSelfReg
- getVar
- allZK
- anyZK
- decodePoint
- groupGenerator #332
- xorOf #356
- downcast
- avlTree
- treeLookup
- atLeast
Object properties and methods
GroupElement
SigmaProp
Box
- value
- propositionBytes
- id
- creationInfo
- getReg
- tokens
- R0 .. R9
- bytes
- bytesWithoutRef
Header
- id
- version
- parentId
- ADProofsRoot
- stateRoot
- transactionsRoot
- timestamp
- nBits
- height
- extensionRoot
- minerPk
- powOnetimePk
- powNonce
- powDistance
- votes
PreHeader
- version
- parentId
- timestamp
- nBits
- height
- minerPk
- votes
Context
- dataInputs
- INPUTS
- OUTPUTS
- HEIGHT
- SELF
- minerPubKey
- getVar
- selfBoxIndex
- headers
- preHeader
- LastBlockUtxoRootHash
AvlTree
- digest
- enabledOperations
- keyLength
- valueLengthOpt
- isInsertAllowed
- isUpdateAllowed
- isRemoveAllowed
- updateOperations
- insert
- updateDigest
- contains
- get
- getMany
- update
- remove
Collection
- size
- getOrElse
- map
- exists
- fold
- forall
- slice #300
- filter
- append #301
- apply
- flatMap
- indexOf
- zip #329
- indices #314
- patch #357
- updated #358
- updateMany #359
Option
- isDefined
- get
- getOrElse
- map #360
- filter #360