-
Notifications
You must be signed in to change notification settings - Fork 36.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
3361edd doc: Add NBitcoin to bitcoinconsensus examples (Braydon Fuller) b1bac4e Add description for bitcoinconsensus_ERR_OK (Braydon Fuller) c156ada doc: add documentation for shared library libbitcoinconsensus (Braydon Fuller)
- Loading branch information
Showing
2 changed files
with
43 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
Shared Libraries | ||
================ | ||
|
||
## bitcoinconsensus | ||
|
||
The purpose of this library is to make the verification functionality that is critical to Bitcoin's consensus available to other applications, e.g. to language bindings. | ||
|
||
### API | ||
|
||
The interface is defined in the C header `bitcoinconsensus.h` located in `src/script/bitcoinconsensus.h`. | ||
|
||
#### Version | ||
|
||
`bitcoinconsensus_version` returns an `unsigned int` with the the API version *(currently at an experimental `0`)*. | ||
|
||
#### Script Validation | ||
|
||
`bitcoinconsensus_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)*. | ||
- `bitcoinconsensus_error* err` - Will have the error/success code for the operation *(see below)*. | ||
|
||
##### Script Flags | ||
- `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_NONE` | ||
- `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_P2SH` - Evaluate P2SH ([BIP16](https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki)) subscripts | ||
- `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_DERSIG` - Enforce strict DER ([BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)) compliance | ||
|
||
##### Errors | ||
- `bitcoinconsensus_ERR_OK` - No errors with input parameters *(see the return value of `bitcoinconsensus_verify_script` for the verification status)* | ||
- `bitcoinconsensus_ERR_TX_INDEX` - An invalid index for `txTo` | ||
- `bitcoinconsensus_ERR_TX_SIZE_MISMATCH` - `txToLen` did not match with the size of `txTo` | ||
- `bitcoinconsensus_ERR_DESERIALIZE` - An error deserializing `txTo` | ||
|
||
### Example Implementations | ||
- [NBitcoin](https://github.com/NicolasDorier/NBitcoin/blob/master/NBitcoin/Script.cs#L814) (.NET Bindings) | ||
- [node-libbitcoinconsensus](https://github.com/bitpay/node-libbitcoinconsensus) (Node.js Bindings) |