IOTA Common Libraries

The common libraries are including Crypto, Helpers, Models, and Trinary components.

Common

typedef enum retcode_t retcode_t

Error codes, see error.h

const char* error_2_string(retcode_t err)

error code to string

Return
string
Parameters
  • err: error code

Crypto

TODO

Helpers

TODO

Models

Unnamed Group

MAX_IOTA_SUPPLY
BUNDLE_FOREACH(txs, tx)

The bundle iterator.

bundle_status_e

bundle validation status.

Values:

0
BUNDLE_VALID
BUNDLE_EMPTY
BUNDLE_INCOMPLETE
BUNDLE_INVALID_TX
BUNDLE_INVALID_INPUT_ADDRESS
BUNDLE_INVALID_VALUE
BUNDLE_INVALID_HASH
BUNDLE_INVALID_SIGNATURE
typedef enum bundle_status_e bundle_status_t

bundle validation status.

typedef UT_array bundle_transactions_t
typedef UT_array bundle_hashes_t
void bundle_transactions_new(bundle_transactions_t **const bundle)

Allocates a bundle object.

Parameters
  • [in] bundle: A bundle object.

void bundle_transactions_free(bundle_transactions_t **const bundle)

Frees a bundle object.

Parameters
  • [in] bundle: A bundle object.

void bundle_transactions_add(bundle_transactions_t *const bundle, iota_transaction_t const *const transaction)

Adds a transaction to the bundle.

Parameters
  • [in] bundle: The bundle object.
  • [in] transaction: A transaction object.

iota_transaction_t* bundle_at(bundle_transactions_t *const bundle, size_t index)

Gets a transaction from the bundle by index.

Return
#iota_transaction_t
Parameters
  • [in] bundle: The bundle object.
  • [in] index: The index of a transaction.

static size_t bundle_transactions_size(bundle_transactions_t const *const bundle)

Gets the number of transactions in the bundle.

Return
An number of transactions.
Parameters
  • [in] bundle: The bundle object.

static flex_trit_t const* bundle_transactions_bundle_hash(bundle_transactions_t const *const bundle)

Get bundle hash from a bundle transaction object.

Return
The bundle hash
Parameters
  • [in] bundle: The bundle transaction object

void bundle_calculate_hash(bundle_transactions_t * bundle, Kerl *const kerl, flex_trit_t * out)

Calculates bundle hash using Kerl.

Parameters
  • [in] bundle: A bundle object.
  • [in] kerl: A Kerl object.
  • [out] out: The bundle hash.

void bundle_finalize(bundle_transactions_t * bundle, Kerl *const kerl)

Finalizes a bundle by calculating the bundle hash.

Parameters
  • [in] bundle: A bundle object.
  • [in] kerl: A Kerl object.

retcode_t bundle_validate(bundle_transactions_t *const bundle, bundle_status_t *const status)

Validates a bundle.

Return
retcode_t
Parameters
  • [in] bundle: A bundle object.
  • [out] status: The status of the bundle.

void bundle_reset_indexes(bundle_transactions_t *const bundle)

Re-calculates the current and last index of the bundle.

Parameters
  • [in] bundle: A bundle object.

void bundle_set_messages(bundle_transactions_t * bundle, signature_fragments_t * messages)

Sets bundle message.

Parameters
  • [in] bundle: A bundle object.
  • [in] messages: A message for the bundle.

retcode_t bundle_sign(bundle_transactions_t *const bundle, flex_trit_t const *const seed, inputs_t const *const inputs, Kerl *const kerl)

Adds signature to transactions in a bundle.

Return
retcode_t
Parameters
  • [in] bundle: A bundle object.
  • [in] seed: The seed of inputs.
  • [in] inputs: The inputs for the bundle.
  • [in] kerl: A Kerl object.

Unnamed Group

INPUTS_FOREACH(inputs, elm)

loop over an input list

typedef UT_array input_array_t
UT_icd const input_array_icd = {sizeof(input_t), NULL, NULL, NULL}
static retcode_t inputs_append(inputs_t * inputs, input_t * input)

append an input object to the input list

Return
retcode_t
Parameters
  • inputs: the input list
  • input: an input object for appending

static void inputs_clear(inputs_t * inputs)

clear all elements

Parameters
  • inputs:

static int64_t inputs_balance(inputs_t * inputs)

total balance in this input list

Return
int64_t
Parameters
  • inputs:

static size_t inputs_len(inputs_t const *const inputs)

size of the input list

Return
size_t
Parameters
  • inputs:

static input_t* inputs_at(inputs_t * inputs, size_t index)

get an input object by index

Return
input_t*
Parameters
  • inputs:
  • index:

struct input_t
#include <inputs.h>

input object

Public Members

int64_t balance
uint64_t key_index
uint8_t security
flex_trit_t input_t::address[FLEX_TRIT_SIZE_243]
struct inputs_t
#include <inputs.h>

a list of input object

Public Members

int64_t total_balance
input_array_t* input_array

Trinary

typedef int8_t flex_trit_t
static trit_t flex_trits_at(flex_trit_t const *const flex_trits, size_t const len, size_t index)

Returns the trit at a given index in an array of flex_trits

Return
trit_t - the trit at the given index
Parameters
  • [in] flex_trits: - an array of flex_trits
  • [in] len: - the number of trits encoded in the flex_trit array
  • [in] index: - the index of the trit to access

static uint8_t flex_trits_set_at(flex_trit_t *const flex_trits, size_t const len, size_t index, trit_t trit)

Set the trit at a given index in an array of trits to the given value

Parameters
  • [in] flex_trits: - an array of flex_trits
  • [in] len: - the number of trits encoded in the flex_trit array
  • [in] index: - the index of the trit to access
  • [in] trit: - the trit value to set

static bool flex_trits_are_null(flex_trit_t const *const flex_trits, size_t const len)
size_t flex_trits_slice(flex_trit_t *const to_flex_trits, size_t const to_len, flex_trit_t const *const flex_trits, size_t const len, size_t const start, size_t const num_trits)

Returns a portion of length num_trits of an array into a new array from start. The original array will not be modified.

Return
size_t - the number of trits extracted
Parameters
  • [in] to_flex_trits: - the array that will contain the slice
  • [in] to_len: - the number of trits encoded in the to_flex_trits array
  • [in] flex_trits: - the original array
  • [in] len: - the number of trits the flex_trits array stores
  • [in] start: - the start index in the original array
  • [in] num_trits: - the number of trits to extract

size_t flex_trits_insert(flex_trit_t *const to_flex_trits, size_t const to_len, flex_trit_t const *const flex_trits, size_t const len, size_t const start, size_t const num_trits)

Inserts the contents of an array into another array starting at a given index.

Return
size_t - the number of trits copied over
Parameters
  • [in] to_flex_trits: - the array to insert into
  • [in] to_len: - the number of trits encoded in the to_flex_trits array
  • [in] flex_trits: - the array containing the trits to copy over
  • [in] len: - the number of trits the flex_trits array stores
  • [in] start: - the start index in the destination array
  • [in] num_trits: - the number of trits to copy over

size_t flex_trits_to_trits(trit_t *const trits, size_t const to_len, flex_trit_t const *const flex_trits, size_t const len, size_t const num_trits)

Returns an array of trits regardless of the current memory storage scheme

Return
size_t - the number of trits encoded
Parameters
  • [in] trits: - an array of individual trits
  • [in] to_len: - the number of trits the trits array contains
  • [in] flex_trits: - the array of packed trits
  • [in] len: - the number of trits the flex_trits array stores
  • [in] num_trits: - the number of trits to extract

size_t flex_trits_from_trits(flex_trit_t *const to_flex_trits, size_t const to_len, trit_t const *const trits, size_t const len, size_t const num_trits)

Returns an array of trits packed in the current memory storage scheme

Return
size_t - the number of trits decoded
Parameters
  • [in] to_flex_trits: - an array of flex_trits
  • [in] to_len: - the number of trits encoded in the to_flex_trits array
  • [in] trits: - an array of individual trits
  • [in] len: - the number of trits the trits array contains
  • [in] num_trits: - the number of trits to pack

size_t flex_trits_from_trytes(flex_trit_t * to_flex_trits, size_t to_len, const tryte_t * trytes, size_t len, size_t num_trytes)

Returns an array of flex_trits.

Return
size_t - the number of trytes decoded
Parameters
  • [in] to_flex_trits: - the array of packed trits
  • [in] to_len: - the number of trits in the to_flex_trits array
  • [in] trytes: - an array of trytes
  • [in] len: - the number of trytes in the trytes array
  • [in] num_trytes: - the size of trytes to unpack

size_t flex_trits_to_bytes(byte_t * bytes, size_t to_len, const flex_trit_t * flex_trits, size_t len, size_t num_trits)

Returns an array of bytes.

Return
size_t - the number of trits encoded
Parameters
  • [in] bytes: - an array to store bytes
  • [in] to_len: - the number of trits the bytes array contains
  • [in] flex_trits: - the array of packed trits
  • [in] len: - the number of trits the flex_trits array contains
  • [in] num_trits: - the number of trits to pack

size_t flex_trits_from_bytes(flex_trit_t * to_flex_trits, size_t to_len, const byte_t * bytes, size_t len, size_t num_trits)

Returns an array of flex_trits.

Return
size_t - the number of trits decoded
Parameters
  • [in] to_flex_trits: - the array of packed trits
  • [in] to_len: - the number of trits in the to_flex_trits array
  • [in] bytes: - an array of bytes
  • [in] len: - the number of trits in the bytes array
  • [in] num_trits: - the number of trits to unpack

void flex_trit_print(flex_trit_t const * trits, size_t trits_len)

Print flex trits through stdout.

Parameters
  • trits: A pointer to flex trits
  • trits_len: Number of trit