28 releases (breaking)

0.27.1 Dec 2, 2023
0.26.0 Oct 13, 2023
0.24.0 May 12, 2023
0.23.0 Feb 8, 2023
0.8.0 Mar 22, 2021

#90 in Programming languages

Download history 14/week @ 2023-12-11 39/week @ 2023-12-18 114/week @ 2023-12-25 10/week @ 2024-01-08 11/week @ 2024-01-15 3/week @ 2024-02-05 14/week @ 2024-02-12 33/week @ 2024-02-19 63/week @ 2024-02-26 20/week @ 2024-03-04 31/week @ 2024-03-11 31/week @ 2024-03-18 54/week @ 2024-03-25

145 downloads per month
Used in 13 crates (6 directly)

CC0 license

1MB
20K SLoC

Latest Version Documentation

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

  • isProven

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

  • propBytes

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

Dependencies

~10–14MB
~306K SLoC