mirror of
https://github.com/dogecoin/dogecoin.git
synced 2026-01-31 18:40:58 +00:00
3.1 KiB
3.1 KiB
Shared Libraries
dogecoinconsensus
The purpose of this library is to make the verification functionality that is critical to Dogecoin's consensus available to other applications, e.g. to language bindings.
API
The interface is defined in the C header dogecoinconsensus.h located in src/script/dogecoinconsensus.h.
Version
dogecoinconsensus_version returns an unsigned int with the API version (currently at an experimental 0).
Script Validation
dogecoinconsensus_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 thescriptPubKey.const unsigned char *txTo- The transaction with the input that is spending the previous output.unsigned int txToLen- The number of bytes for thetxTo.unsigned int nIn- The index of the input intxTothat spends thescriptPubKey.unsigned int flags- The script validation flags (see below).dogecoinconsensus_error* err- Will have the error/success code for the operation (see below).
Script Flags
dogecoinconsensus_SCRIPT_FLAGS_VERIFY_NONEdogecoinconsensus_SCRIPT_FLAGS_VERIFY_P2SH- Evaluate P2SH (BIP16) subscriptsdogecoinconsensus_SCRIPT_FLAGS_VERIFY_DERSIG- Enforce strict DER (BIP66) compliancedogecoinconsensus_SCRIPT_FLAGS_VERIFY_NULLDUMMY- Enforce NULLDUMMY (BIP147)dogecoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY- Enable CHECKLOCKTIMEVERIFY (BIP65)dogecoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKSEQUENCEVERIFY- Enable CHECKSEQUENCEVERIFY (BIP112)dogecoinconsensus_SCRIPT_FLAGS_VERIFY_WITNESS- Enable WITNESS (BIP141)
Errors
dogecoinconsensus_ERR_OK- No errors with input parameters (see the return value ofdogecoinconsensus_verify_scriptfor the verification status)dogecoinconsensus_ERR_TX_INDEX- An invalid index fortxTodogecoinconsensus_ERR_TX_SIZE_MISMATCH-txToLendid not match with the size oftxTodogecoinconsensus_ERR_DESERIALIZE- An error deserializingtxTodogecoinconsensus_ERR_AMOUNT_REQUIRED- Input amount is required if WITNESS is used
Example Implementations
- NBitcoin (.NET Bindings)
- node-libdogecoinconsensus (Node.js Bindings)
- java-libdogecoinconsensus (Java Bindings)
- dogecoinconsensus-php (PHP Bindings)