historical/moneyrocket.git/doc/shared-libraries.md
2024-01-16 11:20:27 -06:00

3.4 KiB

Shared Libraries

moneyrocketconsensus

The purpose of this library is to make the verification functionality that is critical to Moneyrocket's consensus available to other applications, e.g. to language bindings.

API

The interface is defined in the C header moneyrocketconsensus.h located in src/script/moneyrocketconsensus.h.

Version

moneyrocketconsensus_version returns an unsigned int with the API version (currently 1).

Script Validation

moneyrocketconsensus_verify_script returns an int with the status of the verification. It will be 1 if the input script correctly spends the previous output scriptPubKey.

Parameters
  • const unsigned char *scriptPubKey - The previous output script that encumbers spending.
  • unsigned int scriptPubKeyLen - The number of bytes for the scriptPubKey.
  • const unsigned char *txTo - The transaction with the input that is spending the previous output.
  • unsigned int txToLen - The number of bytes for the txTo.
  • unsigned int nIn - The index of the input in txTo that spends the scriptPubKey.
  • unsigned int flags - The script validation flags (see below).
  • moneyrocketconsensus_error* err - Will have the error/success code for the operation (see below).
Script Flags
  • moneyrocketconsensus_SCRIPT_FLAGS_VERIFY_NONE
  • moneyrocketconsensus_SCRIPT_FLAGS_VERIFY_P2SH - Evaluate P2SH (BIP16) subscripts
  • moneyrocketconsensus_SCRIPT_FLAGS_VERIFY_DERSIG - Enforce strict DER (BIP66) compliance
  • moneyrocketconsensus_SCRIPT_FLAGS_VERIFY_NULLDUMMY - Enforce NULLDUMMY (BIP147)
  • moneyrocketconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY - Enable CHECKLOCKTIMEVERIFY (BIP65)
  • moneyrocketconsensus_SCRIPT_FLAGS_VERIFY_CHECKSEQUENCEVERIFY - Enable CHECKSEQUENCEVERIFY (BIP112)
  • moneyrocketconsensus_SCRIPT_FLAGS_VERIFY_WITNESS - Enable WITNESS (BIP141)
Errors
  • moneyrocketconsensus_ERR_OK - No errors with input parameters (see the return value of moneyrocketconsensus_verify_script for the verification status)
  • moneyrocketconsensus_ERR_TX_INDEX - An invalid index for txTo
  • moneyrocketconsensus_ERR_TX_SIZE_MISMATCH - txToLen did not match with the size of txTo
  • moneyrocketconsensus_ERR_DESERIALIZE - An error deserializing txTo
  • moneyrocketconsensus_ERR_AMOUNT_REQUIRED - Input amount is required if WITNESS is used
  • moneyrocketconsensus_ERR_INVALID_FLAGS - Script verification flags are invalid (i.e. not part of the libconsensus interface)

Example Implementations