ergotree-ir 0.9.0

ErgoTree IR, serialization
Documentation

Latest Version Documentation

Features:

  • ErgoTree types, values, IR nodes definition;
  • ErgoTree IR nodes serialization;

ErgoTree IR

ErgoTree Specification

Implemented operations (IR nodes) are denoted with :heavy_check_mark:. Descriptions for the operations can be found in ErgoTree Specification

General

  • :heavy_check_mark: Blocks (BlockValue);
  • :heavy_check_mark: Variable definition (ValDef, ValUse);
  • :heavy_check_mark: Function definition (FuncValue);
  • :heavy_check_mark: Function application(Apply);
  • :heavy_check_mark: Tuplse field access
  • :heavy_check_mark: 'If' conditional

Operations

  • :heavy_check_mark: comparison: >, <, >=, <=, ==, !=;
  • :heavy_check_mark: arithmetic: +, -, *, /, %;
  • :heavy_check_mark: logical: &&, ||;
  • | (bitwise OR);
  • & (bitwise AND);
  • ^ (logical XOR);
  • ^ (bitwise XOR);
  • | (byte-wise XOR of two collections of bytes);
  • :heavy_check_mark: unary !;
  • :heavy_check_mark: unary -;
  • unary ~ (bit inversion);
  • >>, <<, >>> (bit shifts);

Predefined functions

  • groupGenerator
  • xor
  • substConstants
  • longToByteArray
  • byteArrayToBigInt
  • byteArrayToLong
  • downcast
  • :heavy_check_mark: upcast
  • :heavy_check_mark: allOf
  • :heavy_check_mark: anyOf
  • atLeast
  • :heavy_check_mark: min
  • :heavy_check_mark: max
  • avlTree
  • treeLookup
  • :heavy_check_mark: blake2b256
  • sha256
  • :heavy_check_mark: proveDlog
  • proveDHTuple
  • :heavy_check_mark: sigmaProp
  • executeFromVar
  • executeFromSelfReg
  • getVar
  • allZK
  • anyZK
  • :heavy_check_mark: decodePoint
  • xorOf

Object properties and methods

GroupElement

  • getEncoded
  • exp
  • multiply
  • negate

SigmaProp

  • :heavy_check_mark: propBytes
  • isProven

Box

  • :heavy_check_mark: value
  • :heavy_check_mark: propositionBytes
  • bytes
  • bytesWithoutRef
  • :heavy_check_mark: id
  • :heavy_check_mark: creationInfo
  • :heavy_check_mark: getReg
  • :heavy_check_mark: tokens
  • :heavy_check_mark: R0 .. R9

AvlTree

  • digest
  • enabledOperations
  • keyLength
  • valueLengthOpt
  • isInsertAllowed
  • isUpdateAllowed
  • isRemoveAllowed
  • updateOperations
  • contains
  • get
  • getMany
  • insert
  • update
  • remove
  • updateDigest

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

  • :heavy_check_mark: dataInputs
  • headers
  • preHeader
  • :heavy_check_mark: INPUTS
  • :heavy_check_mark: OUTPUTS
  • :heavy_check_mark: HEIGHT
  • :heavy_check_mark: SELF
  • selfBoxIndex
  • LastBlockUtxoRootHash
  • minerPubKey
  • getVar

Collection

  • :heavy_check_mark: size
  • :heavy_check_mark: getOrElse
  • :heavy_check_mark: map
  • :heavy_check_mark: exists
  • :heavy_check_mark: fold
  • :heavy_check_mark: forall
  • slice
  • :heavy_check_mark: filter
  • append
  • :heavy_check_mark: apply
  • indices
  • :heavy_check_mark: flatMap
  • patch
  • updated
  • updateMany
  • :heavy_check_mark: indexOf
  • zip

Option

  • :heavy_check_mark: isDefined
  • :heavy_check_mark: get
  • :heavy_check_mark: getOrElse
  • map
  • filter