Bitcoin Kernel
C header for interacting with the Bitcoin Kernel library.
Loading...
Searching...
No Matches
bitcoinkernel.h
Go to the documentation of this file.
1// Copyright (c) 2024-present The Bitcoin Core developers
2// Distributed under the MIT software license, see the accompanying
3// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5#ifndef BITCOIN_KERNEL_BITCOINKERNEL_H
6#define BITCOIN_KERNEL_BITCOINKERNEL_H
7
8#ifndef __cplusplus
9#include <stddef.h>
10#include <stdint.h>
11#else
12#include <cstddef>
13#include <cstdint>
14#endif // __cplusplus
15
16#ifndef BITCOINKERNEL_API
17 #ifdef BITCOINKERNEL_BUILD
18 #if defined(_WIN32)
19 #define BITCOINKERNEL_API __declspec(dllexport)
20 #else
21 #define BITCOINKERNEL_API __attribute__((visibility("default")))
22 #endif
23 #else
24 #if defined(_WIN32) && !defined(BITCOINKERNEL_STATIC)
25 #define BITCOINKERNEL_API __declspec(dllimport)
26 #else
27 #define BITCOINKERNEL_API
28 #endif
29 #endif
30#endif
31
41#if defined(__GNUC__)
42 #define BITCOINKERNEL_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
43#else
44 #define BITCOINKERNEL_WARN_UNUSED_RESULT
45#endif
46
57#if !defined(BITCOINKERNEL_BUILD) && defined(__GNUC__)
58 #define BITCOINKERNEL_ARG_NONNULL(...) __attribute__((__nonnull__(__VA_ARGS__)))
59#else
60 #define BITCOINKERNEL_ARG_NONNULL(...)
61#endif
62
63#ifdef __cplusplus
64extern "C" {
65#endif // __cplusplus
66
135
140
145
158
167
179
195
208
217
228
232typedef struct btck_Block btck_Block;
233
241
246
251typedef struct btck_Chain btck_Chain;
252
260
273
282
289typedef struct btck_Coin btck_Coin;
290
297
304
311
321
327typedef struct btck_Txid btck_Txid;
328
333
336#define btck_SynchronizationState_INIT_REINDEX ((btck_SynchronizationState)(0))
337#define btck_SynchronizationState_INIT_DOWNLOAD ((btck_SynchronizationState)(1))
338#define btck_SynchronizationState_POST_INIT ((btck_SynchronizationState)(2))
339
341typedef uint8_t btck_Warning;
342#define btck_Warning_UNKNOWN_NEW_RULES_ACTIVATED ((btck_Warning)(0))
343#define btck_Warning_LARGE_WORK_INVALID_CHAIN ((btck_Warning)(1))
344
351typedef void (*btck_LogCallback)(void* user_data, const char* message, size_t message_len);
352
356typedef void (*btck_DestroyCallback)(void* user_data);
357
361typedef void (*btck_NotifyBlockTip)(void* user_data, btck_SynchronizationState state, const btck_BlockTreeEntry* entry, double verification_progress);
362typedef void (*btck_NotifyHeaderTip)(void* user_data, btck_SynchronizationState state, int64_t height, int64_t timestamp, int presync);
363typedef void (*btck_NotifyProgress)(void* user_data, const char* title, size_t title_len, int progress_percent, int resume_possible);
364typedef void (*btck_NotifyWarningSet)(void* user_data, btck_Warning warning, const char* message, size_t message_len);
365typedef void (*btck_NotifyWarningUnset)(void* user_data, btck_Warning warning);
366typedef void (*btck_NotifyFlushError)(void* user_data, const char* message, size_t message_len);
367typedef void (*btck_NotifyFatalError)(void* user_data, const char* message, size_t message_len);
368
372typedef void (*btck_ValidationInterfaceBlockChecked)(void* user_data, btck_Block* block, const btck_BlockValidationState* state);
373typedef void (*btck_ValidationInterfacePoWValidBlock)(void* user_data, btck_Block* block, const btck_BlockTreeEntry* entry);
374typedef void (*btck_ValidationInterfaceBlockConnected)(void* user_data, btck_Block* block, const btck_BlockTreeEntry* entry);
375typedef void (*btck_ValidationInterfaceBlockDisconnected)(void* user_data, btck_Block* block, const btck_BlockTreeEntry* entry);
376
382typedef int (*btck_WriteBytes)(const void* bytes, size_t size, void* userdata);
383
388typedef uint8_t btck_ValidationMode;
389#define btck_ValidationMode_VALID ((btck_ValidationMode)(0))
390#define btck_ValidationMode_INVALID ((btck_ValidationMode)(1))
391#define btck_ValidationMode_INTERNAL_ERROR ((btck_ValidationMode)(2))
392
397#define btck_BlockValidationResult_UNSET ((btck_BlockValidationResult)(0))
398#define btck_BlockValidationResult_CONSENSUS ((btck_BlockValidationResult)(1))
399#define btck_BlockValidationResult_CACHED_INVALID ((btck_BlockValidationResult)(2))
400#define btck_BlockValidationResult_INVALID_HEADER ((btck_BlockValidationResult)(3))
401#define btck_BlockValidationResult_MUTATED ((btck_BlockValidationResult)(4))
402#define btck_BlockValidationResult_MISSING_PREV ((btck_BlockValidationResult)(5))
403#define btck_BlockValidationResult_INVALID_PREV ((btck_BlockValidationResult)(6))
404#define btck_BlockValidationResult_TIME_FUTURE ((btck_BlockValidationResult)(7))
405#define btck_BlockValidationResult_HEADER_LOW_WORK ((btck_BlockValidationResult)(8))
406
411typedef uint32_t btck_TxValidationResult;
412#define btck_TxValidationResult_UNSET ((btck_TxValidationResult)(0))
413#define btck_TxValidationResult_CONSENSUS ((btck_TxValidationResult)(1))
414#define btck_TxValidationResult_INPUTS_NOT_STANDARD ((btck_TxValidationResult)(2))
415#define btck_TxValidationResult_NOT_STANDARD ((btck_TxValidationResult)(3))
416#define btck_TxValidationResult_MISSING_INPUTS ((btck_TxValidationResult)(4))
417#define btck_TxValidationResult_PREMATURE_SPEND ((btck_TxValidationResult)(5))
418#define btck_TxValidationResult_WITNESS_MUTATED ((btck_TxValidationResult)(6))
419#define btck_TxValidationResult_WITNESS_STRIPPED ((btck_TxValidationResult)(7))
420#define btck_TxValidationResult_CONFLICT ((btck_TxValidationResult)(8))
421#define btck_TxValidationResult_MEMPOOL_POLICY ((btck_TxValidationResult)(9))
422#define btck_TxValidationResult_NO_MEMPOOL ((btck_TxValidationResult)(10))
423#define btck_TxValidationResult_RECONSIDERABLE ((btck_TxValidationResult)(11))
424#define btck_TxValidationResult_UNKNOWN ((btck_TxValidationResult)(12))
425
444
470
474typedef uint8_t btck_LogCategory;
475#define btck_LogCategory_ALL ((btck_LogCategory)(0))
476#define btck_LogCategory_BENCH ((btck_LogCategory)(1))
477#define btck_LogCategory_BLOCKSTORAGE ((btck_LogCategory)(2))
478#define btck_LogCategory_COINDB ((btck_LogCategory)(3))
479#define btck_LogCategory_LEVELDB ((btck_LogCategory)(4))
480#define btck_LogCategory_MEMPOOL ((btck_LogCategory)(5))
481#define btck_LogCategory_PRUNE ((btck_LogCategory)(6))
482#define btck_LogCategory_RAND ((btck_LogCategory)(7))
483#define btck_LogCategory_REINDEX ((btck_LogCategory)(8))
484#define btck_LogCategory_VALIDATION ((btck_LogCategory)(9))
485#define btck_LogCategory_KERNEL ((btck_LogCategory)(10))
486
490typedef uint8_t btck_LogLevel;
491#define btck_LogLevel_TRACE ((btck_LogLevel)(0))
492#define btck_LogLevel_DEBUG ((btck_LogLevel)(1))
493#define btck_LogLevel_INFO ((btck_LogLevel)(2))
494
507
512#define btck_ScriptVerifyStatus_OK ((btck_ScriptVerifyStatus)(0))
513#define btck_ScriptVerifyStatus_ERROR_INVALID_FLAGS_COMBINATION ((btck_ScriptVerifyStatus)(1))
514#define btck_ScriptVerifyStatus_ERROR_SPENT_OUTPUTS_REQUIRED ((btck_ScriptVerifyStatus)(2))
515
520#define btck_ScriptVerificationFlags_NONE ((btck_ScriptVerificationFlags)(0))
521#define btck_ScriptVerificationFlags_P2SH ((btck_ScriptVerificationFlags)(1U << 0))
522#define btck_ScriptVerificationFlags_DERSIG ((btck_ScriptVerificationFlags)(1U << 2))
523#define btck_ScriptVerificationFlags_NULLDUMMY ((btck_ScriptVerificationFlags)(1U << 4))
524#define btck_ScriptVerificationFlags_CHECKLOCKTIMEVERIFY ((btck_ScriptVerificationFlags)(1U << 9))
525#define btck_ScriptVerificationFlags_CHECKSEQUENCEVERIFY ((btck_ScriptVerificationFlags)(1U << 10))
526#define btck_ScriptVerificationFlags_WITNESS ((btck_ScriptVerificationFlags)(1U << 11))
527#define btck_ScriptVerificationFlags_TAPROOT ((btck_ScriptVerificationFlags)(1U << 17))
528#define btck_ScriptVerificationFlags_ALL ((btck_ScriptVerificationFlags)(btck_ScriptVerificationFlags_P2SH | \
529 btck_ScriptVerificationFlags_DERSIG | \
530 btck_ScriptVerificationFlags_NULLDUMMY | \
531 btck_ScriptVerificationFlags_CHECKLOCKTIMEVERIFY | \
532 btck_ScriptVerificationFlags_CHECKSEQUENCEVERIFY | \
533 btck_ScriptVerificationFlags_WITNESS | \
534 btck_ScriptVerificationFlags_TAPROOT))
535
536typedef uint8_t btck_ChainType;
537#define btck_ChainType_MAINNET ((btck_ChainType)(0))
538#define btck_ChainType_TESTNET ((btck_ChainType)(1))
539#define btck_ChainType_TESTNET_4 ((btck_ChainType)(2))
540#define btck_ChainType_SIGNET ((btck_ChainType)(3))
541#define btck_ChainType_REGTEST ((btck_ChainType)(4))
542
547
552
558
569
574
576
581
590 const void* raw_transaction, size_t raw_transaction_len);
591
600 const btck_Transaction* transaction) BITCOINKERNEL_ARG_NONNULL(1);
601
613 const btck_Transaction* transaction,
614 btck_WriteBytes writer,
615 void* user_data) BITCOINKERNEL_ARG_NONNULL(1, 2);
616
624 const btck_Transaction* transaction) BITCOINKERNEL_ARG_NONNULL(1);
625
636 const btck_Transaction* transaction, size_t output_index) BITCOINKERNEL_ARG_NONNULL(1);
637
648 const btck_Transaction* transaction, size_t input_index) BITCOINKERNEL_ARG_NONNULL(1);
649
657 const btck_Transaction* transaction) BITCOINKERNEL_ARG_NONNULL(1);
658
666 const btck_Transaction* transaction) BITCOINKERNEL_ARG_NONNULL(1);
667
676 const btck_Transaction* transaction) BITCOINKERNEL_ARG_NONNULL(1);
677
695 const btck_Transaction* tx,
696 btck_TxValidationState* validation_state) BITCOINKERNEL_ARG_NONNULL(1, 2);
697
702
704
709
720 const btck_Transaction* tx_to,
721 const btck_TransactionOutput** spent_outputs, size_t spent_outputs_len) BITCOINKERNEL_ARG_NONNULL(1);
722
731
736
738
743
751 const void* script_pubkey, size_t script_pubkey_len);
752
760 const btck_ScriptPubkey* script_pubkey) BITCOINKERNEL_ARG_NONNULL(1);
761
781 const btck_ScriptPubkey* script_pubkey,
782 int64_t amount,
783 const btck_Transaction* tx_to,
784 const btck_PrecomputedTransactionData* precomputed_txdata,
785 unsigned int input_index,
788
799 const btck_ScriptPubkey* script_pubkey,
800 btck_WriteBytes writer,
801 void* user_data) BITCOINKERNEL_ARG_NONNULL(1, 2);
802
807
809
814
823 const btck_ScriptPubkey* script_pubkey,
824 int64_t amount) BITCOINKERNEL_ARG_NONNULL(1);
825
835 const btck_TransactionOutput* transaction_output) BITCOINKERNEL_ARG_NONNULL(1);
836
844 const btck_TransactionOutput* transaction_output) BITCOINKERNEL_ARG_NONNULL(1);
845
853 const btck_TransactionOutput* transaction_output) BITCOINKERNEL_ARG_NONNULL(1);
854
859
861
866
876
885
902
911
920
935 btck_LogCallback log_callback,
936 void* user_data,
937 btck_DestroyCallback user_data_destroy_callback) BITCOINKERNEL_ARG_NONNULL(1);
938
943
945
950
959 btck_ChainType chain_type);
960
965 const btck_ChainParameters* chain_parameters) BITCOINKERNEL_ARG_NONNULL(1);
966
976 const btck_ChainParameters* chain_parameters) BITCOINKERNEL_ARG_NONNULL(1);
977
982
984
989
994
1003 btck_ContextOptions* context_options,
1004 const btck_ChainParameters* chain_parameters) BITCOINKERNEL_ARG_NONNULL(1, 2);
1005
1014 btck_ContextOptions* context_options,
1016
1028 btck_ContextOptions* context_options,
1029 btck_ValidationInterfaceCallbacks validation_interface_callbacks) BITCOINKERNEL_ARG_NONNULL(1);
1030
1035
1037
1042
1053 const btck_ContextOptions* context_options);
1054
1059 const btck_Context* context) BITCOINKERNEL_ARG_NONNULL(1);
1060
1070
1075
1077
1082
1091 const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1);
1092
1100 const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1);
1101
1109 const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1);
1110
1118 const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1);
1119
1129 const btck_BlockTreeEntry* entry1, const btck_BlockTreeEntry* entry2) BITCOINKERNEL_ARG_NONNULL(1, 2);
1130
1139 const btck_BlockTreeEntry* block_tree_entry,
1140 int32_t height) BITCOINKERNEL_ARG_NONNULL(1);
1141
1143
1148
1161 const btck_Context* context,
1162 const char* data_directory,
1163 size_t data_directory_len,
1164 const char* blocks_directory,
1165 size_t blocks_directory_len) BITCOINKERNEL_ARG_NONNULL(1);
1166
1176 btck_ChainstateManagerOptions* chainstate_manager_options,
1177 int worker_threads) BITCOINKERNEL_ARG_NONNULL(1);
1178
1192 btck_ChainstateManagerOptions* chainstate_manager_options,
1193 int wipe_block_tree_db,
1194 int wipe_chainstate_db) BITCOINKERNEL_ARG_NONNULL(1);
1195
1203 btck_ChainstateManagerOptions* chainstate_manager_options,
1204 int block_tree_db_in_memory) BITCOINKERNEL_ARG_NONNULL(1);
1205
1213 btck_ChainstateManagerOptions* chainstate_manager_options,
1214 int chainstate_db_in_memory) BITCOINKERNEL_ARG_NONNULL(1);
1215
1220
1222
1227
1237 const btck_ChainstateManagerOptions* chainstate_manager_options) BITCOINKERNEL_ARG_NONNULL(1);
1238
1247 const btck_ChainstateManager* chainstate_manager) BITCOINKERNEL_ARG_NONNULL(1);
1248
1257 btck_ChainstateManager* chainstate_manager,
1258 const btck_BlockHeader* header) BITCOINKERNEL_ARG_NONNULL(1, 2);
1259
1272 btck_ChainstateManager* chainstate_manager,
1273 const char** block_file_paths_data, size_t* block_file_paths_lens,
1274 size_t block_file_paths_data_len) BITCOINKERNEL_ARG_NONNULL(1);
1275
1294 btck_ChainstateManager* chainstate_manager,
1295 const btck_Block* block,
1296 int* new_block) BITCOINKERNEL_ARG_NONNULL(1, 2, 3);
1297
1313 const btck_ChainstateManager* chainstate_manager) BITCOINKERNEL_ARG_NONNULL(1);
1314
1324 const btck_ChainstateManager* chainstate_manager,
1325 const btck_BlockHash* block_hash) BITCOINKERNEL_ARG_NONNULL(1, 2);
1326
1331
1333
1338
1348 const btck_ChainstateManager* chainstate_manager,
1349 const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1, 2);
1350
1359 const void* raw_block, size_t raw_block_len);
1360
1369 const btck_Block* block) BITCOINKERNEL_ARG_NONNULL(1);
1370
1372typedef uint32_t btck_BlockCheckFlags;
1373#define btck_BlockCheckFlags_BASE ((btck_BlockCheckFlags)0)
1374#define btck_BlockCheckFlags_POW ((btck_BlockCheckFlags)(1U << 0))
1375#define btck_BlockCheckFlags_MERKLE ((btck_BlockCheckFlags)(1U << 1))
1376#define btck_BlockCheckFlags_ALL ((btck_BlockCheckFlags)(btck_BlockCheckFlags_POW | btck_BlockCheckFlags_MERKLE))
1377
1401 const btck_Block* block,
1402 const btck_ConsensusParams* consensus_params,
1404 btck_BlockValidationState* validation_state) BITCOINKERNEL_ARG_NONNULL(1, 2, 4);
1405
1413 const btck_Block* block) BITCOINKERNEL_ARG_NONNULL(1);
1414
1424 const btck_Block* block, size_t transaction_index) BITCOINKERNEL_ARG_NONNULL(1);
1425
1435 const btck_Block* block) BITCOINKERNEL_ARG_NONNULL(1);
1436
1444 const btck_Block* block) BITCOINKERNEL_ARG_NONNULL(1);
1445
1457 const btck_Block* block,
1458 btck_WriteBytes writer,
1459 void* user_data) BITCOINKERNEL_ARG_NONNULL(1, 2);
1460
1465
1467
1472
1477
1482 const btck_BlockValidationState* block_validation_state) BITCOINKERNEL_ARG_NONNULL(1);
1483
1488 const btck_BlockValidationState* block_validation_state) BITCOINKERNEL_ARG_NONNULL(1);
1489
1497 const btck_BlockValidationState* block_validation_state) BITCOINKERNEL_ARG_NONNULL(1);
1498
1503 btck_BlockValidationState* block_validation_state);
1504
1506
1511
1519 const btck_Chain* chain) BITCOINKERNEL_ARG_NONNULL(1);
1520
1531 const btck_Chain* chain,
1532 int32_t block_height) BITCOINKERNEL_ARG_NONNULL(1);
1533
1543 const btck_Chain* chain,
1544 const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1, 2);
1545
1547
1552
1562 const btck_ChainstateManager* chainstate_manager,
1563 const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1, 2);
1564
1572 const btck_BlockSpentOutputs* block_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1);
1573
1582 const btck_BlockSpentOutputs* block_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1);
1583
1594 const btck_BlockSpentOutputs* block_spent_outputs,
1595 size_t transaction_spent_outputs_index) BITCOINKERNEL_ARG_NONNULL(1);
1596
1601
1603
1608
1616 const btck_TransactionSpentOutputs* transaction_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1);
1617
1626 const btck_TransactionSpentOutputs* transaction_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1);
1627
1639 const btck_TransactionSpentOutputs* transaction_spent_outputs,
1640 size_t coin_index) BITCOINKERNEL_ARG_NONNULL(1);
1641
1646
1648
1653
1661 const btck_TransactionInput* transaction_input) BITCOINKERNEL_ARG_NONNULL(1);
1662
1671 const btck_TransactionInput* transaction_input) BITCOINKERNEL_ARG_NONNULL(1);
1672
1680 const btck_TransactionInput* transaction_input) BITCOINKERNEL_ARG_NONNULL(1);
1681
1686
1688
1693
1701 const btck_TransactionOutPoint* transaction_out_point) BITCOINKERNEL_ARG_NONNULL(1);
1702
1710 const btck_TransactionOutPoint* transaction_out_point) BITCOINKERNEL_ARG_NONNULL(1);
1711
1720 const btck_TransactionOutPoint* transaction_out_point) BITCOINKERNEL_ARG_NONNULL(1);
1721
1726
1728
1733
1741 const btck_Txid* txid) BITCOINKERNEL_ARG_NONNULL(1);
1742
1751 const btck_Txid* txid1, const btck_Txid* txid2) BITCOINKERNEL_ARG_NONNULL(1, 2);
1752
1760 const btck_Txid* txid, unsigned char output[32]) BITCOINKERNEL_ARG_NONNULL(1, 2);
1761
1766
1768
1773
1781 const btck_Coin* coin) BITCOINKERNEL_ARG_NONNULL(1);
1782
1791 const btck_Coin* coin) BITCOINKERNEL_ARG_NONNULL(1);
1792
1800 const btck_Coin* coin) BITCOINKERNEL_ARG_NONNULL(1);
1801
1810 const btck_Coin* coin) BITCOINKERNEL_ARG_NONNULL(1);
1811
1816
1818
1823
1828 const unsigned char block_hash[32]) BITCOINKERNEL_ARG_NONNULL(1);
1829
1838 const btck_BlockHash* hash1, const btck_BlockHash* hash2) BITCOINKERNEL_ARG_NONNULL(1, 2);
1839
1847 const btck_BlockHash* block_hash) BITCOINKERNEL_ARG_NONNULL(1);
1848
1856 const btck_BlockHash* block_hash, unsigned char output[32]) BITCOINKERNEL_ARG_NONNULL(1, 2);
1857
1862
1864
1870
1879 const void* raw_block_header, size_t raw_block_header_len) BITCOINKERNEL_ARG_NONNULL(1);
1880
1889
1898
1908
1917
1926
1935
1944
1954 const btck_BlockHeader* header, unsigned char output[80]) BITCOINKERNEL_ARG_NONNULL(1, 2);
1955
1960
1962
1963#ifdef __cplusplus
1964} // extern "C"
1965#endif // __cplusplus
1966
1967#endif // BITCOIN_KERNEL_BITCOINKERNEL_H
BITCOINKERNEL_API const btck_ConsensusParams * btck_chain_parameters_get_consensus_params(const btck_ChainParameters *chain_parameters)
Get btck_ConsensusParams from btck_ChainParameters. The returned btck_ConsensusParams pointer is vali...
#define BITCOINKERNEL_API
Definition bitcoinkernel.h:27
BITCOINKERNEL_API int btck_block_hash_equals(const btck_BlockHash *hash1, const btck_BlockHash *hash2) 2)
Check if two block hashes are equal.
BITCOINKERNEL_API btck_BlockSpentOutputs * btck_block_spent_outputs_copy(const btck_BlockSpentOutputs *block_spent_outputs)
Copy a block's spent outputs.
BITCOINKERNEL_API btck_TransactionOutput * btck_transaction_output_create(const btck_ScriptPubkey *script_pubkey, int64_t amount)
Create a transaction output from a script pubkey and an amount.
uint8_t btck_LogLevel
Definition bitcoinkernel.h:490
BITCOINKERNEL_API uint32_t btck_coin_confirmation_height(const btck_Coin *coin)
Returns the block height where the transaction that created this coin was included in.
BITCOINKERNEL_API btck_ValidationMode btck_tx_validation_state_get_validation_mode(const btck_TxValidationState *state)
BITCOINKERNEL_API const btck_Transaction * btck_block_get_transaction_at(const btck_Block *block, size_t transaction_index)
Get the transaction at the provided index. The returned transaction is not owned and depends on the l...
BITCOINKERNEL_API const btck_BlockTreeEntry * btck_chain_get_by_height(const btck_Chain *chain, int32_t block_height)
Retrieve a block tree entry by its height in the currently active chain. Once retrieved there is no g...
BITCOINKERNEL_API btck_ChainParameters * btck_chain_parameters_create(btck_ChainType chain_type)
Creates a chain parameters struct with default parameters based on the passed in chain type.
BITCOINKERNEL_API btck_TransactionOutPoint * btck_transaction_out_point_copy(const btck_TransactionOutPoint *transaction_out_point)
Copy a transaction out point.
BITCOINKERNEL_API btck_BlockValidationState * btck_chainstate_manager_process_block_header(btck_ChainstateManager *chainstate_manager, const btck_BlockHeader *header) 2)
Processes and validates the provided btck_BlockHeader.
struct btck_ContextOptions btck_ContextOptions
Definition bitcoinkernel.h:178
BITCOINKERNEL_API int btck_transaction_to_bytes(const btck_Transaction *transaction, btck_WriteBytes writer, void *user_data) 2)
Serializes the transaction through the passed in callback to bytes. This is consensus serialization t...
BITCOINKERNEL_API void btck_block_hash_to_bytes(const btck_BlockHash *block_hash, unsigned char output[32]) 2)
Serializes the block hash to bytes.
BITCOINKERNEL_API uint32_t btck_block_header_get_bits(const btck_BlockHeader *header)
Get the nBits difficulty target from btck_BlockHeader.
BITCOINKERNEL_API void btck_logging_connection_destroy(btck_LoggingConnection *logging_connection)
struct btck_Context btck_Context
Definition bitcoinkernel.h:194
BITCOINKERNEL_API int BITCOINKERNEL_API size_t btck_block_count_transactions(const btck_Block *block)
Count the number of transactions contained in a block.
BITCOINKERNEL_API size_t btck_transaction_spent_outputs_count(const btck_TransactionSpentOutputs *transaction_spent_outputs)
Returns the number of previous transaction outputs contained in the transaction spent outputs data.
BITCOINKERNEL_API btck_BlockSpentOutputs * btck_block_spent_outputs_read(const btck_ChainstateManager *chainstate_manager, const btck_BlockTreeEntry *block_tree_entry) 2)
Reads the block spent coins data the passed in block tree entry points to from disk and returns it.
BITCOINKERNEL_API btck_BlockHeader * btck_block_tree_entry_get_block_header(const btck_BlockTreeEntry *block_tree_entry)
Return the btck_BlockHeader associated with this entry.
int(* btck_WriteBytes)(const void *bytes, size_t size, void *userdata)
Definition bitcoinkernel.h:382
struct btck_BlockHash btck_BlockHash
Definition bitcoinkernel.h:296
#define BITCOINKERNEL_WARN_UNUSED_RESULT
Definition bitcoinkernel.h:44
BITCOINKERNEL_API void btck_chainstate_manager_destroy(btck_ChainstateManager *chainstate_manager)
BITCOINKERNEL_API btck_Coin * btck_coin_copy(const btck_Coin *coin)
Copy a coin.
uint32_t btck_TxValidationResult
Definition bitcoinkernel.h:411
BITCOINKERNEL_API void btck_transaction_destroy(btck_Transaction *transaction)
BITCOINKERNEL_API btck_Block * btck_block_copy(const btck_Block *block)
Copy a block. Blocks are reference counted, so this just increments the reference count.
BITCOINKERNEL_API btck_BlockValidationState * btck_block_validation_state_copy(const btck_BlockValidationState *block_validation_state)
Copies the btck_BlockValidationState.
BITCOINKERNEL_API const btck_BlockHash * btck_block_header_get_prev_hash(const btck_BlockHeader *header)
Get the previous btck_BlockHash from btck_BlockHeader. The returned hash is unowned and only valid fo...
BITCOINKERNEL_API const btck_BlockTreeEntry * btck_chainstate_manager_get_best_entry(const btck_ChainstateManager *chainstate_manager)
Get the btck_BlockTreeEntry whose associated btck_BlockHeader has the most known cumulative proof of ...
BITCOINKERNEL_API btck_ScriptPubkey * btck_script_pubkey_copy(const btck_ScriptPubkey *script_pubkey)
Copy a script pubkey.
uint8_t btck_ChainType
Definition bitcoinkernel.h:536
BITCOINKERNEL_API btck_LoggingConnection * btck_logging_connection_create(btck_LogCallback log_callback, void *user_data, btck_DestroyCallback user_data_destroy_callback)
Start logging messages through the provided callback. Log messages produced before this function is f...
BITCOINKERNEL_API void btck_chainstate_manager_options_set_worker_threads_num(btck_ChainstateManagerOptions *chainstate_manager_options, int worker_threads)
Set the number of available worker threads used during validation.
BITCOINKERNEL_API int btck_block_to_bytes(const btck_Block *block, btck_WriteBytes writer, void *user_data) 2)
Serializes the block through the passed in callback to bytes. This is consensus serialization that is...
BITCOINKERNEL_API btck_Context * btck_context_copy(const btck_Context *context)
BITCOINKERNEL_API int btck_chainstate_manager_import_blocks(btck_ChainstateManager *chainstate_manager, const char **block_file_paths_data, size_t *block_file_paths_lens, size_t block_file_paths_data_len)
Triggers the start of a reindex if the wipe options were previously set for the chainstate manager....
void(* btck_LogCallback)(void *user_data, const char *message, size_t message_len)
Definition bitcoinkernel.h:351
void(* btck_ValidationInterfaceBlockChecked)(void *user_data, btck_Block *block, const btck_BlockValidationState *state)
Definition bitcoinkernel.h:372
struct btck_LoggingConnection btck_LoggingConnection
Definition bitcoinkernel.h:157
uint32_t btck_BlockValidationResult
Definition bitcoinkernel.h:396
BITCOINKERNEL_API btck_ValidationMode btck_block_validation_state_get_validation_mode(const btck_BlockValidationState *block_validation_state)
BITCOINKERNEL_API uint32_t btck_transaction_input_get_sequence(const btck_TransactionInput *transaction_input)
Get a transaction input's nSequence value.
BITCOINKERNEL_API int32_t btck_chain_get_height(const btck_Chain *chain)
Return the height of the tip of the chain.
uint8_t btck_ValidationMode
Definition bitcoinkernel.h:388
BITCOINKERNEL_API int btck_txid_equals(const btck_Txid *txid1, const btck_Txid *txid2) 2)
Check if two txids are equal.
BITCOINKERNEL_API void btck_logging_disable_category(btck_LogCategory category)
Disable a specific log category for the global internal logger. This changes a global setting and wil...
void(* btck_ValidationInterfacePoWValidBlock)(void *user_data, btck_Block *block, const btck_BlockTreeEntry *entry)
Definition bitcoinkernel.h:373
BITCOINKERNEL_API btck_BlockValidationState * btck_block_validation_state_create()
BITCOINKERNEL_API btck_BlockHash * btck_block_get_hash(const btck_Block *block)
Calculate and return the hash of a block.
BITCOINKERNEL_API const btck_Txid * btck_transaction_get_txid(const btck_Transaction *transaction)
Get the txid of a transaction. The returned txid is not owned and depends on the lifetime of the tran...
uint8_t btck_SynchronizationState
Definition bitcoinkernel.h:335
BITCOINKERNEL_API void btck_context_options_destroy(btck_ContextOptions *context_options)
void(* btck_NotifyProgress)(void *user_data, const char *title, size_t title_len, int progress_percent, int resume_possible)
Definition bitcoinkernel.h:363
BITCOINKERNEL_API btck_TransactionSpentOutputs * btck_transaction_spent_outputs_copy(const btck_TransactionSpentOutputs *transaction_spent_outputs)
Copy a transaction's spent outputs.
struct btck_BlockTreeEntry btck_BlockTreeEntry
Definition bitcoinkernel.h:207
void(* btck_NotifyWarningUnset)(void *user_data, btck_Warning warning)
Definition bitcoinkernel.h:365
BITCOINKERNEL_API btck_ChainstateManagerOptions * btck_chainstate_manager_options_create(const btck_Context *context, const char *data_directory, size_t data_directory_len, const char *blocks_directory, size_t blocks_directory_len)
Create options for the chainstate manager.
BITCOINKERNEL_API btck_BlockHeader * btck_block_header_copy(const btck_BlockHeader *header)
Copy a btck_BlockHeader.
void(* btck_ValidationInterfaceBlockDisconnected)(void *user_data, btck_Block *block, const btck_BlockTreeEntry *entry)
Definition bitcoinkernel.h:375
BITCOINKERNEL_API btck_TransactionInput * btck_transaction_input_copy(const btck_TransactionInput *transaction_input)
Copy a transaction input.
BITCOINKERNEL_API void btck_chainstate_manager_options_destroy(btck_ChainstateManagerOptions *chainstate_manager_options)
BITCOINKERNEL_API const btck_TransactionSpentOutputs * btck_block_spent_outputs_get_transaction_spent_outputs_at(const btck_BlockSpentOutputs *block_spent_outputs, size_t transaction_spent_outputs_index)
Returns a transaction spent outputs contained in the block spent outputs at a certain index....
BITCOINKERNEL_API const btck_Txid * btck_transaction_out_point_get_txid(const btck_TransactionOutPoint *transaction_out_point)
Get the txid from the transaction out point. The returned txid is not owned and depends on the lifeti...
struct btck_TransactionSpentOutputs btck_TransactionSpentOutputs
Definition bitcoinkernel.h:281
struct btck_BlockSpentOutputs btck_BlockSpentOutputs
Definition bitcoinkernel.h:272
BITCOINKERNEL_API btck_BlockValidationResult btck_block_validation_state_get_block_validation_result(const btck_BlockValidationState *block_validation_state)
struct btck_Chain btck_Chain
Definition bitcoinkernel.h:251
#define BITCOINKERNEL_ARG_NONNULL(...)
Definition bitcoinkernel.h:60
void(* btck_DestroyCallback)(void *user_data)
Definition bitcoinkernel.h:356
BITCOINKERNEL_API void btck_precomputed_transaction_data_destroy(btck_PrecomputedTransactionData *precomputed_txdata)
BITCOINKERNEL_API void btck_chainstate_manager_options_update_chainstate_db_in_memory(btck_ChainstateManagerOptions *chainstate_manager_options, int chainstate_db_in_memory)
Sets chainstate db in memory in the options.
BITCOINKERNEL_API int btck_context_interrupt(btck_Context *context)
Interrupt can be used to halt long-running validation functions like when reindexing,...
BITCOINKERNEL_API const btck_ScriptPubkey * btck_transaction_output_get_script_pubkey(const btck_TransactionOutput *transaction_output)
Get the script pubkey of the output. The returned script pubkey is not owned and depends on the lifet...
uint32_t btck_ScriptVerificationFlags
Definition bitcoinkernel.h:519
BITCOINKERNEL_API void btck_block_hash_destroy(btck_BlockHash *block_hash)
BITCOINKERNEL_API int btck_block_tree_entry_equals(const btck_BlockTreeEntry *entry1, const btck_BlockTreeEntry *entry2) 2)
Check if two block tree entries are equal. Two block tree entries are equal when they point to the sa...
BITCOINKERNEL_API btck_TxValidationResult btck_tx_validation_state_get_tx_validation_result(const btck_TxValidationState *state)
BITCOINKERNEL_API btck_BlockHash * btck_block_hash_copy(const btck_BlockHash *block_hash)
Copy a block hash.
BITCOINKERNEL_API int64_t btck_transaction_output_get_amount(const btck_TransactionOutput *transaction_output)
Get the amount in the output.
BITCOINKERNEL_API const btck_TransactionOutput * btck_transaction_get_output_at(const btck_Transaction *transaction, size_t output_index)
Get the transaction outputs at the provided index. The returned transaction output is not owned and d...
struct btck_ScriptPubkey btck_ScriptPubkey
Definition bitcoinkernel.h:139
BITCOINKERNEL_API int32_t btck_block_header_get_version(const btck_BlockHeader *header)
Get the version from btck_BlockHeader.
BITCOINKERNEL_API size_t btck_block_spent_outputs_count(const btck_BlockSpentOutputs *block_spent_outputs)
Returns the number of transaction spent outputs whose data is contained in block spent outputs.
struct btck_Coin btck_Coin
Definition bitcoinkernel.h:289
BITCOINKERNEL_API const btck_TransactionInput * btck_transaction_get_input_at(const btck_Transaction *transaction, size_t input_index)
Get the transaction input at the provided index. The returned transaction input is not owned and depe...
BITCOINKERNEL_API int btck_chain_contains(const btck_Chain *chain, const btck_BlockTreeEntry *block_tree_entry) 2)
Return true if the passed in chain contains the block tree entry.
BITCOINKERNEL_API int btck_transaction_check(const btck_Transaction *tx, btck_TxValidationState *validation_state) 2)
Run context-free consensus validation on a btck_Transaction.
BITCOINKERNEL_API void btck_block_header_destroy(btck_BlockHeader *header)
BITCOINKERNEL_API btck_Block * btck_block_create(const void *raw_block, size_t raw_block_len)
Parse a serialized raw block into a new block object.
BITCOINKERNEL_API const btck_TransactionOutput * btck_coin_get_output(const btck_Coin *coin)
Return the transaction output of a coin. The returned pointer is unowned and only valid for the lifet...
struct btck_TransactionInput btck_TransactionInput
Definition bitcoinkernel.h:303
BITCOINKERNEL_API void btck_block_validation_state_destroy(btck_BlockValidationState *block_validation_state)
BITCOINKERNEL_API btck_Context * btck_context_create(const btck_ContextOptions *context_options)
Create a new kernel context. If the options have not been previously set, their corresponding fields ...
struct btck_TransactionOutPoint btck_TransactionOutPoint
Definition bitcoinkernel.h:310
BITCOINKERNEL_API btck_Transaction * btck_transaction_create(const void *raw_transaction, size_t raw_transaction_len)
Create a new transaction from the serialized data.
BITCOINKERNEL_API void btck_script_pubkey_destroy(btck_ScriptPubkey *script_pubkey)
BITCOINKERNEL_API void btck_transaction_output_destroy(btck_TransactionOutput *transaction_output)
struct btck_ConsensusParams btck_ConsensusParams
Definition bitcoinkernel.h:245
BITCOINKERNEL_API int btck_block_check(const btck_Block *block, const btck_ConsensusParams *consensus_params, btck_BlockCheckFlags flags, btck_BlockValidationState *validation_state) 2
Perform context-free validation checks on a btck_Block.
BITCOINKERNEL_API btck_Transaction * btck_transaction_copy(const btck_Transaction *transaction)
Copy a transaction. Transactions are reference counted, so this just increments the reference count.
BITCOINKERNEL_API btck_TransactionOutput * btck_transaction_output_copy(const btck_TransactionOutput *transaction_output)
Copy a transaction output.
BITCOINKERNEL_API const btck_BlockHash * btck_block_tree_entry_get_block_hash(const btck_BlockTreeEntry *block_tree_entry)
Return the block hash associated with a block tree entry.
BITCOINKERNEL_API btck_BlockHeader * btck_block_get_header(const btck_Block *block)
Get the btck_BlockHeader from the block.
BITCOINKERNEL_API btck_ScriptPubkey * btck_script_pubkey_create(const void *script_pubkey, size_t script_pubkey_len)
Create a script pubkey from serialized data.
BITCOINKERNEL_API void btck_txid_destroy(btck_Txid *txid)
uint8_t btck_ScriptVerifyStatus
Definition bitcoinkernel.h:511
BITCOINKERNEL_API int btck_script_pubkey_to_bytes(const btck_ScriptPubkey *script_pubkey, btck_WriteBytes writer, void *user_data) 2)
Serializes the script pubkey through the passed in callback to bytes.
BITCOINKERNEL_API const btck_Coin * btck_transaction_spent_outputs_get_coin_at(const btck_TransactionSpentOutputs *transaction_spent_outputs, size_t coin_index)
Returns a coin contained in the transaction spent outputs at a certain index. The returned pointer is...
BITCOINKERNEL_API int32_t btck_block_tree_entry_get_height(const btck_BlockTreeEntry *block_tree_entry)
Return the height of a certain block tree entry.
BITCOINKERNEL_API btck_Txid * btck_txid_copy(const btck_Txid *txid)
Copy a txid.
BITCOINKERNEL_API void btck_transaction_out_point_destroy(btck_TransactionOutPoint *transaction_out_point)
BITCOINKERNEL_API btck_Block * btck_block_read(const btck_ChainstateManager *chainstate_manager, const btck_BlockTreeEntry *block_tree_entry) 2)
Reads the block the passed in block tree entry points to from disk and returns it.
BITCOINKERNEL_API btck_BlockHash * btck_block_hash_create(const unsigned char block_hash[32])
Create a block hash from its raw data.
BITCOINKERNEL_API void btck_tx_validation_state_destroy(btck_TxValidationState *state)
void(* btck_NotifyBlockTip)(void *user_data, btck_SynchronizationState state, const btck_BlockTreeEntry *entry, double verification_progress)
Definition bitcoinkernel.h:361
uint8_t btck_LogCategory
Definition bitcoinkernel.h:474
BITCOINKERNEL_API void btck_context_options_set_validation_interface(btck_ContextOptions *context_options, btck_ValidationInterfaceCallbacks validation_interface_callbacks)
Set the validation interface callbacks for the context options. The context created with the options ...
void(* btck_ValidationInterfaceBlockConnected)(void *user_data, btck_Block *block, const btck_BlockTreeEntry *entry)
Definition bitcoinkernel.h:374
BITCOINKERNEL_API const btck_BlockTreeEntry * btck_block_tree_entry_get_ancestor(const btck_BlockTreeEntry *block_tree_entry, int32_t height)
Return the ancestor of a btck_BlockTreeEntry at the given height.
BITCOINKERNEL_API void btck_transaction_spent_outputs_destroy(btck_TransactionSpentOutputs *transaction_spent_outputs)
BITCOINKERNEL_API void btck_logging_set_options(btck_LoggingOptions options)
Set some options for the global internal logger. This changes global settings and will override setti...
BITCOINKERNEL_API btck_ChainParameters * btck_chain_parameters_copy(const btck_ChainParameters *chain_parameters)
struct btck_ChainstateManager btck_ChainstateManager
Definition bitcoinkernel.h:227
BITCOINKERNEL_API void btck_chain_parameters_destroy(btck_ChainParameters *chain_parameters)
struct btck_TransactionOutput btck_TransactionOutput
Definition bitcoinkernel.h:144
BITCOINKERNEL_API uint32_t btck_transaction_out_point_get_index(const btck_TransactionOutPoint *transaction_out_point)
Get the output position from the transaction out point.
BITCOINKERNEL_API int btck_chainstate_manager_process_block(btck_ChainstateManager *chainstate_manager, const btck_Block *block, int *new_block) 2
Process and validate the passed in block with the chainstate manager. Processing first does checks on...
BITCOINKERNEL_API btck_ChainstateManager * btck_chainstate_manager_create(const btck_ChainstateManagerOptions *chainstate_manager_options)
Create a chainstate manager. This is the main object for many validation tasks as well as for retriev...
uint32_t btck_BlockCheckFlags
Definition bitcoinkernel.h:1372
struct btck_PrecomputedTransactionData btck_PrecomputedTransactionData
Definition bitcoinkernel.h:320
BITCOINKERNEL_API void btck_logging_enable_category(btck_LogCategory category)
Enable a specific log category for the global internal logger. This changes a global setting and will...
struct btck_BlockValidationState btck_BlockValidationState
Definition bitcoinkernel.h:240
BITCOINKERNEL_API const btck_TransactionOutPoint * btck_transaction_input_get_out_point(const btck_TransactionInput *transaction_input)
Get the transaction out point. The returned transaction out point is not owned and depends on the lif...
BITCOINKERNEL_API const btck_BlockTreeEntry * btck_block_tree_entry_get_previous(const btck_BlockTreeEntry *block_tree_entry)
Returns the previous block tree entry in the tree, or null if the current block tree entry is the gen...
BITCOINKERNEL_API void btck_block_destroy(btck_Block *block)
uint8_t btck_Warning
Definition bitcoinkernel.h:341
BITCOINKERNEL_API uint32_t btck_transaction_get_locktime(const btck_Transaction *transaction)
Get a transaction's nLockTime value.
struct btck_ChainstateManagerOptions btck_ChainstateManagerOptions
Definition bitcoinkernel.h:216
BITCOINKERNEL_API void btck_coin_destroy(btck_Coin *coin)
void(* btck_NotifyHeaderTip)(void *user_data, btck_SynchronizationState state, int64_t height, int64_t timestamp, int presync)
Definition bitcoinkernel.h:362
struct btck_TxValidationState btck_TxValidationState
Definition bitcoinkernel.h:259
BITCOINKERNEL_API void btck_chainstate_manager_options_update_block_tree_db_in_memory(btck_ChainstateManagerOptions *chainstate_manager_options, int block_tree_db_in_memory)
Sets block tree db in memory in the options.
BITCOINKERNEL_API btck_PrecomputedTransactionData * btck_precomputed_transaction_data_copy(const btck_PrecomputedTransactionData *precomputed_txdata)
Copy precomputed transaction data.
BITCOINKERNEL_API btck_PrecomputedTransactionData * btck_precomputed_transaction_data_create(const btck_Transaction *tx_to, const btck_TransactionOutput **spent_outputs, size_t spent_outputs_len)
Create precomputed transaction data for script verification.
BITCOINKERNEL_API int btck_script_pubkey_verify(const btck_ScriptPubkey *script_pubkey, int64_t amount, const btck_Transaction *tx_to, const btck_PrecomputedTransactionData *precomputed_txdata, unsigned int input_index, btck_ScriptVerificationFlags flags, btck_ScriptVerifyStatus *status) 3)
Verify if the input at input_index of tx_to spends the script pubkey under the constraints specified ...
BITCOINKERNEL_API btck_BlockHeader * btck_block_header_create(const void *raw_block_header, size_t raw_block_header_len)
Create a btck_BlockHeader from serialized data.
BITCOINKERNEL_API void btck_context_options_set_chainparams(btck_ContextOptions *context_options, const btck_ChainParameters *chain_parameters) 2)
Sets the chain params for the context options. The context created with the options will be configure...
BITCOINKERNEL_API void btck_block_spent_outputs_destroy(btck_BlockSpentOutputs *block_spent_outputs)
BITCOINKERNEL_API int BITCOINKERNEL_API const btck_Chain * btck_chainstate_manager_get_active_chain(const btck_ChainstateManager *chainstate_manager)
Returns the best known currently active chain. Its lifetime is dependent on the chainstate manager....
BITCOINKERNEL_API int btck_chainstate_manager_options_set_wipe_dbs(btck_ChainstateManagerOptions *chainstate_manager_options, int wipe_block_tree_db, int wipe_chainstate_db)
Sets wipe db in the options. In combination with calling btck_chainstate_manager_import_blocks this t...
struct btck_ChainParameters btck_ChainParameters
Definition bitcoinkernel.h:166
struct btck_Block btck_Block
Definition bitcoinkernel.h:232
BITCOINKERNEL_API void btck_logging_set_level_category(btck_LogCategory category, btck_LogLevel level)
Set the log level of the global internal logger. This does not enable the selected categories....
BITCOINKERNEL_API size_t btck_transaction_count_inputs(const btck_Transaction *transaction)
Get the number of inputs of a transaction.
BITCOINKERNEL_API int btck_coin_is_coinbase(const btck_Coin *coin)
Returns whether the containing transaction was a coinbase.
BITCOINKERNEL_API const btck_BlockTreeEntry * btck_chainstate_manager_get_block_tree_entry_by_hash(const btck_ChainstateManager *chainstate_manager, const btck_BlockHash *block_hash) 2)
Retrieve a block tree entry by its block hash.
BITCOINKERNEL_API void btck_logging_disable()
This disables the global internal logger. No log messages will be buffered internally anymore once th...
void(* btck_NotifyWarningSet)(void *user_data, btck_Warning warning, const char *message, size_t message_len)
Definition bitcoinkernel.h:364
BITCOINKERNEL_API void btck_transaction_input_destroy(btck_TransactionInput *transaction_input)
BITCOINKERNEL_API int btck_block_header_to_bytes(const btck_BlockHeader *header, unsigned char output[80]) 2)
Serializes the btck_BlockHeader to bytes. This is consensus serialization that is also used for the P...
BITCOINKERNEL_API void btck_context_options_set_notifications(btck_ContextOptions *context_options, btck_NotificationInterfaceCallbacks notifications)
Set the kernel notifications for the context options. The context created with the options will be co...
BITCOINKERNEL_API void btck_context_destroy(btck_Context *context)
BITCOINKERNEL_API btck_ContextOptions * btck_context_options_create()
BITCOINKERNEL_API uint32_t btck_block_header_get_nonce(const btck_BlockHeader *header)
Get the nonce from btck_BlockHeader.
BITCOINKERNEL_API btck_BlockHash * btck_block_header_get_hash(const btck_BlockHeader *header)
Get the btck_BlockHash.
BITCOINKERNEL_API uint32_t btck_block_header_get_timestamp(const btck_BlockHeader *header)
Get the timestamp from btck_BlockHeader.
void(* btck_NotifyFatalError)(void *user_data, const char *message, size_t message_len)
Definition bitcoinkernel.h:367
BITCOINKERNEL_API btck_TxValidationState * btck_tx_validation_state_create()
void(* btck_NotifyFlushError)(void *user_data, const char *message, size_t message_len)
Definition bitcoinkernel.h:366
struct btck_BlockHeader btck_BlockHeader
Definition bitcoinkernel.h:332
struct btck_Txid btck_Txid
Definition bitcoinkernel.h:327
BITCOINKERNEL_API size_t btck_transaction_count_outputs(const btck_Transaction *transaction)
Get the number of outputs of a transaction.
BITCOINKERNEL_API void btck_txid_to_bytes(const btck_Txid *txid, unsigned char output[32]) 2)
Serializes the txid to bytes.
struct btck_Transaction btck_Transaction
Definition bitcoinkernel.h:134
Definition bitcoinkernel.h:500
int always_print_category_levels
Prepend the log category and level to log messages.
Definition bitcoinkernel.h:505
int log_time_micros
Log timestamps in microsecond precision.
Definition bitcoinkernel.h:502
int log_threadnames
Prepend the name of the thread to log messages.
Definition bitcoinkernel.h:503
int log_sourcelocations
Prepend the source location to log messages.
Definition bitcoinkernel.h:504
int log_timestamps
Prepend a timestamp to log messages.
Definition bitcoinkernel.h:501
Definition bitcoinkernel.h:457
btck_NotifyWarningUnset warning_unset
A previous condition leading to the issuance of a warning is no longer given.
Definition bitcoinkernel.h:466
btck_NotifyBlockTip block_tip
The chain's tip was updated to the provided block entry.
Definition bitcoinkernel.h:462
btck_NotifyWarningSet warning_set
A warning issued by the kernel library during validation.
Definition bitcoinkernel.h:465
btck_NotifyFlushError flush_error
An error encountered when flushing data to disk.
Definition bitcoinkernel.h:467
btck_NotifyProgress progress
Reports on current block synchronization progress.
Definition bitcoinkernel.h:464
btck_NotifyFatalError fatal_error
An unrecoverable system error encountered by the library.
Definition bitcoinkernel.h:468
btck_DestroyCallback user_data_destroy
Frees the provided user data structure.
Definition bitcoinkernel.h:461
void * user_data
Definition bitcoinkernel.h:458
btck_NotifyHeaderTip header_tip
A new best block header was added.
Definition bitcoinkernel.h:463
Definition bitcoinkernel.h:432
btck_DestroyCallback user_data_destroy
Frees the provided user data structure.
Definition bitcoinkernel.h:436
btck_ValidationInterfaceBlockConnected block_connected
Called when a block is valid and has now been connected to the best chain.
Definition bitcoinkernel.h:441
btck_ValidationInterfaceBlockChecked block_checked
Definition bitcoinkernel.h:437
btck_ValidationInterfaceBlockDisconnected block_disconnected
Called during a re-org when a block has been removed from the best chain.
Definition bitcoinkernel.h:442
void * user_data
Definition bitcoinkernel.h:433
btck_ValidationInterfacePoWValidBlock pow_valid_block
Definition bitcoinkernel.h:439