Shared Libraries ================
The purpose of this library is to make the verification functionality that is critical to Limenka's consensus available to other applications, e.g. to language bindings.
The interface is defined in the C header limenkaconsensus.h located in src/script/limenkaconsensus.h.
limenkaconsensus_version returns an unsigned int with the API version (currently `2`).
limenkaconsensus_verify_script, limenkaconsensus_verify_script_with_amount and limenkaconsensus_verify_script_with_spent_outputs return an int with the status of the verification. It will be 1 if the input script correctly spends the previous output scriptPubKey.
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).limenkaconsensus_error* err - Will have the error/success code for the operation (see below).const unsigned char *scriptPubKey - The previous output script that encumbers spending.unsigned int scriptPubKeyLen - The number of bytes for the scriptPubKey.int64_t amount - The amount spent in the inputconst 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).limenkaconsensus_error* err - Will have the error/success code for the operation (see below).const unsigned char *scriptPubKey - The previous output script that encumbers spending.unsigned int scriptPubKeyLen - The number of bytes for the scriptPubKey.int64_t amount - The amount spent in the inputconst unsigned char *txTo - The transaction with the input that is spending the previous output.unsigned int txToLen - The number of bytes for the txTo.UTXO *spentOutputs - Previous outputs spent in the transaction. UTXO is a struct composed by const unsigned char *scriptPubKey, unsigned int scriptPubKeySize (the number of bytes for the scriptPubKey) and unsigned int value.unsigned int spentOutputsLen - The number of bytes for the spentOutputs.unsigned int nIn - The index of the input in txTo that spends the scriptPubKey.unsigned int flags - The script validation flags (see below).limenkaconsensus_error* err - Will have the error/success code for the operation (see below).limenkaconsensus_SCRIPT_FLAGS_VERIFY_NONElimenkaconsensus_SCRIPT_FLAGS_VERIFY_P2SH - Evaluate P2SH (BIP16) subscriptslimenkaconsensus_SCRIPT_FLAGS_VERIFY_DERSIG - Enforce strict DER (BIP66) compliancelimenkaconsensus_SCRIPT_FLAGS_VERIFY_NULLDUMMY - Enforce NULLDUMMY (BIP147)limenkaconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY - Enable CHECKLOCKTIMEVERIFY (BIP65)limenkaconsensus_SCRIPT_FLAGS_VERIFY_CHECKSEQUENCEVERIFY - Enable CHECKSEQUENCEVERIFY (BIP112)limenkaconsensus_SCRIPT_FLAGS_VERIFY_WITNESS - Enable WITNESS (BIP141)limenkaconsensus_SCRIPT_FLAGS_VERIFY_TAPROOT - Enable TAPROOT (BIP340, BIP341, BIP342)limenkaconsensus_ERR_OK - No errors with input parameters (see the return value of `limenkaconsensus_verify_script` for the verification status)limenkaconsensus_ERR_TX_INDEX - An invalid index for txTolimenkaconsensus_ERR_TX_SIZE_MISMATCH - txToLen did not match with the size of txTolimenkaconsensus_ERR_DESERIALIZE - An error deserializing txTolimenkaconsensus_ERR_AMOUNT_REQUIRED - Input amount is required if WITNESS is usedlimenkaconsensus_ERR_INVALID_FLAGS - Script verification flags are invalid (i.e. not part of the libconsensus interface)limenkaconsensus_ERR_SPENT_OUTPUTS_REQUIRED - Spent outputs are required if TAPROOT is usedlimenkaconsensus_ERR_SPENT_OUTPUTS_MISMATCH - Spent outputs size doesn't match tx inputs size