Crate ergo

source · []
Expand description

C bindings for ergo-lib

Macros

ergo-lib uses a number of collection types that are simple wrappers around Vec. We have a generic type for such a collection in ergo-lib-c-core::collections::Collection. A limitation of cbindgen is that it cannot process generic functions. This macro generates a C-compatible interface for such a collection for any desired type T.

Generates an equality function for FFI

Structs

Address wrapper

Convenience type to allow us to pass Rust bools (with possible error) through FFI to the C side.

Convenience type to allow us to pass Rust enums with u8 representation through FFI to the C side.

Convenience type to allow us to pass Rust Option<_> types through FFI to C side.

Enums

Traits

Functions

Serializes a BatchMerkleProof to json representation

Parse BlockHeader array from JSON (Node API)

Get BlockHeaders id

Add an element to collection

Delete an existing collection

Returns element at position index of an existing collection

Returns length of an existing collection

Create a new empty collection

Add an element to collection

Delete an existing collection

Returns element at position index of an existing collection

Returns length of an existing collection

Create a new empty collection

Parse box id (32 byte digest) from base16-encoded string

Returns byte array (32 bytes) Note: it’s imperative that output points to a valid block of memory of 32 bytes.

Base16 encoded string

Selected boxes to spend as transaction inputs

Selected boxes to use as change

Create a selection to easily inject custom selection algorithms

Get value as signed 64-bit long

Create from i64 with bounds check

Recommended (safe) minimal box value to use in case box size estimation is unavailable. Allows box size upto 2777 bytes with current min box value per byte of 360 nanoERGs

Create a new box value which is the sum of the arguments, with bounds check.

Number of units inside one ERGO (i.e. one ERG using nano ERG representation)

Add an element to collection

Delete an existing collection

Returns element at position index of an existing collection

Returns length of an existing collection

Create a new empty collection

Create new empty ContextExtension instance

Returns all keys (represented as u8 values) in the map

Returns the number of elements in the collection

Compiles a contract from ErgoScript source code

Get the ErgoTree of the contract

Create new contract from ErgoTree

Create new contract that allow spending of the guarded box by a given recipient

Parse box id (32 byte digest)

Add an element to collection

Delete an existing collection

Returns element at position index of an existing collection

Returns length of an existing collection

Create a new empty collection

Add an element to collection

Delete an existing collection

Returns element at position index of an existing collection

Returns length of an existing collection

Create a new empty collection

Add given token id and token amount

Calculate serialized box size(in bytes)

Delete register value(make register empty) for the given register id (R4-R9)

Get minimal value (per byte of the serialized box size)

Mint token, as defined in https://github.com/ergoplatform/eips/blob/master/eip-0004.md token - token id(box id of the first input box in transaction) and token amount, token_name - token name (will be encoded in R4), token_desc - token description (will be encoded in R5), num_decimals - number of decimals (will be encoded in R6)

Create builder with required box parameters: value - amount of money associated with the box contract - guarding contract, which should be evaluated to true in order to open(spend) this box creation_height - height when a transaction containing the box is created. It should not exceed height of the block, containing the transaction with this box.

Returns register value for the given register id (R4-R9), or None if the register is empty

Set minimal value (per byte of the serialized box size)

Set register with a given id (R4-R9) to the given value

Calculate minimal box value for the current box serialized size(in bytes)

Returns value (ErgoTree constant) stored in the register or None if the register is empty

Add an element to collection

Delete an existing collection

Returns element at position index of an existing collection

Returns length of an existing collection

Create a new empty collection

Get box creation height

Get ergo tree for box

Parse from JSON. Supports Ergo Node/Explorer API and box values and token amount encoded as strings

Make a new box with: value - amount of money associated with the box contract - guarding contract, which should be evaluated to true in order to open(spend) this box creation_height - height when a transaction containing the box is created. tx_id - transaction id in which this box was “created” (participated in outputs) index - index (in outputs) in the transaction

Returns value (ErgoTree constant) stored in the register or None if the register is empty

JSON representation as text (compatible with Ergo Node/Explorer API, numbers are encoded as numbers)

Get tokens for box

Get box value in nanoERGs

Add an element to collection

Delete an existing collection

Returns element at position index of an existing collection

Returns length of an existing collection

Create a new empty collection

Create new context from pre-header

Determine number of bytes of the serialized ErgoTree

Get constants number as stored in serialized ErgoTree or error if the parsing of constants is failed

Decode from base16 encoded serialized ErgoTree

Decode from encoded serialized ErgoTree

Returns constant with given index (as stored in serialized ErgoTree) or None if index is out of bounds or error if constants parsing were failed

Serialized proposition expression of SigmaProp type with ConstantPlaceholder nodes instead of Constant nodes. Key assumption: enough memory has been allocated at the address pointed-to by output. Use ergo_lib_ergo_tree_template_bytes_len to determine the length of the byte array.

Returns the number of bytes of the Serialized proposition expression of SigmaProp type with ConstantPlaceholder nodes instead of Constant nodes.

Get Base16-encoded serialized bytes

Convert to serialized bytes. Key assumption: enough memory has been allocated at the address pointed-to by output. Use ergo_lib_ergo_tree_bytes_len to determine the length of the byte array.

Returns new ErgoTree instance with a new constant value for a given index in constants list (as stored in serialized ErgoTree), or an error. Note that the original ErgoTree instance pointed-at by ergo_tree_ptr is untouched.

Add commitment hint to the bag

Length of HintsBag

Add an element to collection

Delete an existing collection

Returns element at position index of an existing collection

Returns length of an existing collection

Create a new empty collection

Implementation of the ≥ algorithm from KMZ17, see Algorithm 4

JSON representation as text

Returns chain of BlockHeaders from the best proof.

Create new NipopowVerifier instance

Create instance using data from block header

Create empty proposition holder

Get proof. Key assumption: enough memory has been allocated at the address pointed-to by output. Use ergo_lib_prover_result_proof_len to determine the length of the byte array.

Return the number of bytes that make up the proof.

JSON representation as text (compatible with Ergo Node/Explorer API, numbers are encoded as numbers)

Drop ReducedTransaction

Returns reduced transaction, i.e. unsigned transaction where each unsigned input is augmented with ReducedInput which contains a script reduction result.

Returns the unsigned transation

Parse dlog secret key from bytes (SEC-1-encoded scalar)

Address (encoded public image)

Encode from a serialized key. Key assumption: 32 bytes must be allocated at the address pointed-to by output.

Add an element to collection

Delete an existing collection

Returns element at position index of an existing collection

Returns length of an existing collection

Create a new empty collection

Naive box selector, collects inputs until target balance is reached

Selects inputs to satisfy target balance and tokens. inputs - available inputs (returns an error, if empty), target_balance - coins (in nanoERGs) needed, target_tokens - amount of tokens needed. Returns selected inputs and box assets(value+tokens) with change.

Get value as signed 64-bit long

Create from i64 with bounds check

Create token id from ergo box id (32 byte digest)

Parse token id (32 byte digest) from base16-encoded string

Base16 encoded string

Create a token with given token id and amount

Add token to the end of the collection. There is a maximum capacity of 255 token, and adding more returns an error.

If token at given index exists, allocate a copy and store in token_out.

Returns length of collection

Create an empty collection

Extract hints from signed transaction

Get HintsBag corresponding to input index

Empty TransactionHintsBag

Build the unsigned transaction

Creates new TxBuilder box_selection - selected input boxes output_candidates - output boxes to be “created” in this transaction, current_height - chain height that will be used in additionally created boxes (change, miner’s fee, etc.), fee_amount - miner’s fee, change_address - change (inputs - outputs) will be sent to this address, min_change_value - minimal value of the change to be sent to change_address, value less than that will be given to miners,

Get outputs EXCLUDING fee and change

Set context extension for a given input

Set transaction’s data inputs

Suggested transaction fee (semi-default value used across wallets and dApps as of Oct 2020)

Drop Transaction

Parse from JSON. Supports Ergo Node/Explorer API and box values and token amount encoded as strings

Create Transaction from UnsignedTransaction and an array of proofs in the same order as UnsignedTransaction.inputs with empty proof indicated with empty byte array

Get id for transaction

Convert a hex string into a TxId

Get the tx id as bytes

JSON representation as text (compatible with Ergo Node/Explorer API, numbers are encoded as numbers)

Add an element to collection

Delete an existing collection

Returns element at position index of an existing collection

Returns length of an existing collection

Create a new empty collection

Data inputs for transaction

Drop UnsignedTransaction

Parse from JSON. Supports Ergo Node/Explorer API and box values and token amount encoded as strings

Get id for transaction

Inputs for transaction

Output candidates for transaction

JSON representation as text (compatible with Ergo Node/Explorer API, numbers are encoded as numbers)

Verify that the signature is presented to satisfy SigmaProp conditions.

Create Wallet instance loading secret key from mnemonic Returns Err if a DlogSecretKey cannot be parsed from the provided phrase

Create Wallet from secrets

Generate Commitments for unsigned tx

Generate Commitments for reduced transaction

Sign an arbitrary message using a P2PK address

Signs a reduced transaction (generating proofs for inputs)

Signs a multi signature reduced transaction

Signs a multi signature transaction

Adds a new node (above the current level). Hash must be exactly 32 bytes. side represents the side node is on in the tree, 0 = Left, 1 = Right

Deserializes a MerkleProof from its json representation (see /blocks/{headerId}/proofFor/{txId} node api)

Creates a new MerkleProof with given leaf data. Use ergo_merkle_proof_add_node to add levelnodes to the proof. leaf_data must be 32 bytes

Serializes a MerkleProof to json representation

Checks the merkleproof against the expected root_hash

Checks the merkleproof against a base16 root_hash

Type Definitions