Bitcoin Core  31.0.0
P2P Digital Currency
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 
32 /* Warning attributes */
33 #if defined(__GNUC__)
34  #define BITCOINKERNEL_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
35 #else
36  #define BITCOINKERNEL_WARN_UNUSED_RESULT
37 #endif
38 
49 #if !defined(BITCOINKERNEL_BUILD) && defined(__GNUC__)
50  #define BITCOINKERNEL_ARG_NONNULL(...) __attribute__((__nonnull__(__VA_ARGS__)))
51 #else
52  #define BITCOINKERNEL_ARG_NONNULL(...)
53 #endif
54 
55 #ifdef __cplusplus
56 extern "C" {
57 #endif // __cplusplus
58 
121 
126 
131 
144 
153 
165 
180 typedef struct btck_Context btck_Context;
181 
194 
203 
214 
218 typedef struct btck_Block btck_Block;
219 
227 
232 typedef struct btck_Chain btck_Chain;
233 
246 
255 
262 typedef struct btck_Coin btck_Coin;
263 
270 
277 
284 
294 
300 typedef struct btck_Txid btck_Txid;
301 
306 
309 #define btck_SynchronizationState_INIT_REINDEX ((btck_SynchronizationState)(0))
310 #define btck_SynchronizationState_INIT_DOWNLOAD ((btck_SynchronizationState)(1))
311 #define btck_SynchronizationState_POST_INIT ((btck_SynchronizationState)(2))
312 
314 typedef uint8_t btck_Warning;
315 #define btck_Warning_UNKNOWN_NEW_RULES_ACTIVATED ((btck_Warning)(0))
316 #define btck_Warning_LARGE_WORK_INVALID_CHAIN ((btck_Warning)(1))
317 
324 typedef void (*btck_LogCallback)(void* user_data, const char* message, size_t message_len);
325 
329 typedef void (*btck_DestroyCallback)(void* user_data);
330 
334 typedef void (*btck_NotifyBlockTip)(void* user_data, btck_SynchronizationState state, const btck_BlockTreeEntry* entry, double verification_progress);
335 typedef void (*btck_NotifyHeaderTip)(void* user_data, btck_SynchronizationState state, int64_t height, int64_t timestamp, int presync);
336 typedef void (*btck_NotifyProgress)(void* user_data, const char* title, size_t title_len, int progress_percent, int resume_possible);
337 typedef void (*btck_NotifyWarningSet)(void* user_data, btck_Warning warning, const char* message, size_t message_len);
338 typedef void (*btck_NotifyWarningUnset)(void* user_data, btck_Warning warning);
339 typedef void (*btck_NotifyFlushError)(void* user_data, const char* message, size_t message_len);
340 typedef void (*btck_NotifyFatalError)(void* user_data, const char* message, size_t message_len);
341 
345 typedef void (*btck_ValidationInterfaceBlockChecked)(void* user_data, btck_Block* block, const btck_BlockValidationState* state);
346 typedef void (*btck_ValidationInterfacePoWValidBlock)(void* user_data, btck_Block* block, const btck_BlockTreeEntry* entry);
347 typedef void (*btck_ValidationInterfaceBlockConnected)(void* user_data, btck_Block* block, const btck_BlockTreeEntry* entry);
348 typedef void (*btck_ValidationInterfaceBlockDisconnected)(void* user_data, btck_Block* block, const btck_BlockTreeEntry* entry);
349 
353 typedef int (*btck_WriteBytes)(const void* bytes, size_t size, void* userdata);
354 
359 typedef uint8_t btck_ValidationMode;
360 #define btck_ValidationMode_VALID ((btck_ValidationMode)(0))
361 #define btck_ValidationMode_INVALID ((btck_ValidationMode)(1))
362 #define btck_ValidationMode_INTERNAL_ERROR ((btck_ValidationMode)(2))
363 
367 typedef uint32_t btck_BlockValidationResult;
368 #define btck_BlockValidationResult_UNSET ((btck_BlockValidationResult)(0))
369 #define btck_BlockValidationResult_CONSENSUS ((btck_BlockValidationResult)(1))
370 #define btck_BlockValidationResult_CACHED_INVALID ((btck_BlockValidationResult)(2))
371 #define btck_BlockValidationResult_INVALID_HEADER ((btck_BlockValidationResult)(3))
372 #define btck_BlockValidationResult_MUTATED ((btck_BlockValidationResult)(4))
373 #define btck_BlockValidationResult_MISSING_PREV ((btck_BlockValidationResult)(5))
374 #define btck_BlockValidationResult_INVALID_PREV ((btck_BlockValidationResult)(6))
375 #define btck_BlockValidationResult_TIME_FUTURE ((btck_BlockValidationResult)(7))
376 #define btck_BlockValidationResult_HEADER_LOW_WORK ((btck_BlockValidationResult)(8))
377 
378 
384 typedef struct {
385  void* user_data;
386  btck_DestroyCallback user_data_destroy;
390  btck_ValidationInterfacePoWValidBlock pow_valid_block;
396 
409 typedef struct {
410  void* user_data;
411  btck_DestroyCallback user_data_destroy;
422 
426 typedef uint8_t btck_LogCategory;
427 #define btck_LogCategory_ALL ((btck_LogCategory)(0))
428 #define btck_LogCategory_BENCH ((btck_LogCategory)(1))
429 #define btck_LogCategory_BLOCKSTORAGE ((btck_LogCategory)(2))
430 #define btck_LogCategory_COINDB ((btck_LogCategory)(3))
431 #define btck_LogCategory_LEVELDB ((btck_LogCategory)(4))
432 #define btck_LogCategory_MEMPOOL ((btck_LogCategory)(5))
433 #define btck_LogCategory_PRUNE ((btck_LogCategory)(6))
434 #define btck_LogCategory_RAND ((btck_LogCategory)(7))
435 #define btck_LogCategory_REINDEX ((btck_LogCategory)(8))
436 #define btck_LogCategory_VALIDATION ((btck_LogCategory)(9))
437 #define btck_LogCategory_KERNEL ((btck_LogCategory)(10))
438 
442 typedef uint8_t btck_LogLevel;
443 #define btck_LogLevel_TRACE ((btck_LogLevel)(0))
444 #define btck_LogLevel_DEBUG ((btck_LogLevel)(1))
445 #define btck_LogLevel_INFO ((btck_LogLevel)(2))
446 
452 typedef struct {
459 
463 typedef uint8_t btck_ScriptVerifyStatus;
464 #define btck_ScriptVerifyStatus_OK ((btck_ScriptVerifyStatus)(0))
465 #define btck_ScriptVerifyStatus_ERROR_INVALID_FLAGS_COMBINATION ((btck_ScriptVerifyStatus)(1))
466 #define btck_ScriptVerifyStatus_ERROR_SPENT_OUTPUTS_REQUIRED ((btck_ScriptVerifyStatus)(2))
467 
468 
472 #define btck_ScriptVerificationFlags_NONE ((btck_ScriptVerificationFlags)(0))
473 #define btck_ScriptVerificationFlags_P2SH ((btck_ScriptVerificationFlags)(1U << 0))
474 #define btck_ScriptVerificationFlags_DERSIG ((btck_ScriptVerificationFlags)(1U << 2))
475 #define btck_ScriptVerificationFlags_NULLDUMMY ((btck_ScriptVerificationFlags)(1U << 4))
476 #define btck_ScriptVerificationFlags_CHECKLOCKTIMEVERIFY ((btck_ScriptVerificationFlags)(1U << 9))
477 #define btck_ScriptVerificationFlags_CHECKSEQUENCEVERIFY ((btck_ScriptVerificationFlags)(1U << 10))
478 #define btck_ScriptVerificationFlags_WITNESS ((btck_ScriptVerificationFlags)(1U << 11))
479 #define btck_ScriptVerificationFlags_TAPROOT ((btck_ScriptVerificationFlags)(1U << 17))
480 #define btck_ScriptVerificationFlags_ALL ((btck_ScriptVerificationFlags)(btck_ScriptVerificationFlags_P2SH | \
481  btck_ScriptVerificationFlags_DERSIG | \
482  btck_ScriptVerificationFlags_NULLDUMMY | \
483  btck_ScriptVerificationFlags_CHECKLOCKTIMEVERIFY | \
484  btck_ScriptVerificationFlags_CHECKSEQUENCEVERIFY | \
485  btck_ScriptVerificationFlags_WITNESS | \
486  btck_ScriptVerificationFlags_TAPROOT))
487 
488 typedef uint8_t btck_ChainType;
489 #define btck_ChainType_MAINNET ((btck_ChainType)(0))
490 #define btck_ChainType_TESTNET ((btck_ChainType)(1))
491 #define btck_ChainType_TESTNET_4 ((btck_ChainType)(2))
492 #define btck_ChainType_SIGNET ((btck_ChainType)(3))
493 #define btck_ChainType_REGTEST ((btck_ChainType)(4))
494 
498 
508  const void* raw_transaction, size_t raw_transaction_len);
509 
518  const btck_Transaction* transaction) BITCOINKERNEL_ARG_NONNULL(1);
519 
531  const btck_Transaction* transaction,
532  btck_WriteBytes writer,
533  void* user_data) BITCOINKERNEL_ARG_NONNULL(1, 2);
534 
542  const btck_Transaction* transaction) BITCOINKERNEL_ARG_NONNULL(1);
543 
554  const btck_Transaction* transaction, size_t output_index) BITCOINKERNEL_ARG_NONNULL(1);
555 
566  const btck_Transaction* transaction, size_t input_index) BITCOINKERNEL_ARG_NONNULL(1);
567 
575  const btck_Transaction* transaction) BITCOINKERNEL_ARG_NONNULL(1);
576 
585  const btck_Transaction* transaction) BITCOINKERNEL_ARG_NONNULL(1);
586 
591 
593 
597 
609  const btck_Transaction* tx_to,
610  const btck_TransactionOutput** spent_outputs, size_t spent_outputs_len) BITCOINKERNEL_ARG_NONNULL(1);
611 
619  const btck_PrecomputedTransactionData* precomputed_txdata) BITCOINKERNEL_ARG_NONNULL(1);
620 
625 
627 
631 
640  const void* script_pubkey, size_t script_pubkey_len);
641 
649  const btck_ScriptPubkey* script_pubkey) BITCOINKERNEL_ARG_NONNULL(1);
650 
670  const btck_ScriptPubkey* script_pubkey,
671  int64_t amount,
672  const btck_Transaction* tx_to,
673  const btck_PrecomputedTransactionData* precomputed_txdata,
674  unsigned int input_index,
677 
688  const btck_ScriptPubkey* script_pubkey,
689  btck_WriteBytes writer,
690  void* user_data) BITCOINKERNEL_ARG_NONNULL(1, 2);
691 
696 
698 
702 
712  const btck_ScriptPubkey* script_pubkey,
713  int64_t amount) BITCOINKERNEL_ARG_NONNULL(1);
714 
724  const btck_TransactionOutput* transaction_output) BITCOINKERNEL_ARG_NONNULL(1);
725 
733  const btck_TransactionOutput* transaction_output) BITCOINKERNEL_ARG_NONNULL(1);
734 
742  const btck_TransactionOutput* transaction_output) BITCOINKERNEL_ARG_NONNULL(1);
743 
748 
750 
754 
765 
774 
791 
800 
809 
824  btck_LogCallback log_callback,
825  void* user_data,
826  btck_DestroyCallback user_data_destroy_callback) BITCOINKERNEL_ARG_NONNULL(1);
827 
832 
834 
838 
848  btck_ChainType chain_type);
849 
854  const btck_ChainParameters* chain_parameters) BITCOINKERNEL_ARG_NONNULL(1);
855 
860 
862 
866 
872 
881  btck_ContextOptions* context_options,
882  const btck_ChainParameters* chain_parameters) BITCOINKERNEL_ARG_NONNULL(1, 2);
883 
892  btck_ContextOptions* context_options,
894 
906  btck_ContextOptions* context_options,
907  btck_ValidationInterfaceCallbacks validation_interface_callbacks) BITCOINKERNEL_ARG_NONNULL(1);
908 
913 
915 
919 
931  const btck_ContextOptions* context_options);
932 
937  const btck_Context* context) BITCOINKERNEL_ARG_NONNULL(1);
938 
948 
953 
955 
959 
969  const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1);
970 
978  const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1);
979 
987  const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1);
988 
996  const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1);
997 
1007  const btck_BlockTreeEntry* entry1, const btck_BlockTreeEntry* entry2) BITCOINKERNEL_ARG_NONNULL(1, 2);
1008 
1010 
1014 
1029  const btck_Context* context,
1030  const char* data_directory,
1031  size_t data_directory_len,
1032  const char* blocks_directory,
1033  size_t blocks_directory_len) BITCOINKERNEL_ARG_NONNULL(1);
1034 
1044  btck_ChainstateManagerOptions* chainstate_manager_options,
1045  int worker_threads) BITCOINKERNEL_ARG_NONNULL(1);
1046 
1058  btck_ChainstateManagerOptions* chainstate_manager_options,
1059  int wipe_block_tree_db,
1060  int wipe_chainstate_db) BITCOINKERNEL_ARG_NONNULL(1);
1061 
1069  btck_ChainstateManagerOptions* chainstate_manager_options,
1070  int block_tree_db_in_memory) BITCOINKERNEL_ARG_NONNULL(1);
1071 
1079  btck_ChainstateManagerOptions* chainstate_manager_options,
1080  int chainstate_db_in_memory) BITCOINKERNEL_ARG_NONNULL(1);
1081 
1086 
1088 
1092 
1103  const btck_ChainstateManagerOptions* chainstate_manager_options) BITCOINKERNEL_ARG_NONNULL(1);
1104 
1113  const btck_ChainstateManager* chainstate_manager) BITCOINKERNEL_ARG_NONNULL(1);
1114 
1124  btck_ChainstateManager* chainstate_manager,
1125  const btck_BlockHeader* header,
1126  btck_BlockValidationState* block_validation_state) BITCOINKERNEL_ARG_NONNULL(1, 2, 3);
1127 
1140  btck_ChainstateManager* chainstate_manager,
1141  const char** block_file_paths_data, size_t* block_file_paths_lens,
1142  size_t block_file_paths_data_len) BITCOINKERNEL_ARG_NONNULL(1);
1143 
1162  btck_ChainstateManager* chainstate_manager,
1163  const btck_Block* block,
1164  int* new_block) BITCOINKERNEL_ARG_NONNULL(1, 2, 3);
1165 
1181  const btck_ChainstateManager* chainstate_manager) BITCOINKERNEL_ARG_NONNULL(1);
1182 
1192  const btck_ChainstateManager* chainstate_manager,
1193  const btck_BlockHash* block_hash) BITCOINKERNEL_ARG_NONNULL(1, 2);
1194 
1199 
1201 
1205 
1216  const btck_ChainstateManager* chainstate_manager,
1217  const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1, 2);
1218 
1227  const void* raw_block, size_t raw_block_len);
1228 
1237  const btck_Block* block) BITCOINKERNEL_ARG_NONNULL(1);
1238 
1246  const btck_Block* block) BITCOINKERNEL_ARG_NONNULL(1);
1247 
1257  const btck_Block* block, size_t transaction_index) BITCOINKERNEL_ARG_NONNULL(1);
1258 
1268  const btck_Block* block) BITCOINKERNEL_ARG_NONNULL(1);
1269 
1277  const btck_Block* block) BITCOINKERNEL_ARG_NONNULL(1);
1278 
1290  const btck_Block* block,
1291  btck_WriteBytes writer,
1292  void* user_data) BITCOINKERNEL_ARG_NONNULL(1, 2);
1293 
1298 
1300 
1304 
1310 
1315  const btck_BlockValidationState* block_validation_state) BITCOINKERNEL_ARG_NONNULL(1);
1316 
1321  const btck_BlockValidationState* block_validation_state) BITCOINKERNEL_ARG_NONNULL(1);
1322 
1330  const btck_BlockValidationState* block_validation_state) BITCOINKERNEL_ARG_NONNULL(1);
1331 
1336  btck_BlockValidationState* block_validation_state);
1337 
1339 
1343 
1352  const btck_Chain* chain) BITCOINKERNEL_ARG_NONNULL(1);
1353 
1364  const btck_Chain* chain,
1365  int block_height) BITCOINKERNEL_ARG_NONNULL(1);
1366 
1376  const btck_Chain* chain,
1377  const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1, 2);
1378 
1380 
1384 
1395  const btck_ChainstateManager* chainstate_manager,
1396  const btck_BlockTreeEntry* block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1, 2);
1397 
1405  const btck_BlockSpentOutputs* block_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1);
1406 
1415  const btck_BlockSpentOutputs* block_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1);
1416 
1427  const btck_BlockSpentOutputs* block_spent_outputs,
1428  size_t transaction_spent_outputs_index) BITCOINKERNEL_ARG_NONNULL(1);
1429 
1434 
1436 
1440 
1449  const btck_TransactionSpentOutputs* transaction_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1);
1450 
1459  const btck_TransactionSpentOutputs* transaction_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1);
1460 
1472  const btck_TransactionSpentOutputs* transaction_spent_outputs,
1473  size_t coin_index) BITCOINKERNEL_ARG_NONNULL(1);
1474 
1479 
1481 
1485 
1494  const btck_TransactionInput* transaction_input) BITCOINKERNEL_ARG_NONNULL(1);
1495 
1504  const btck_TransactionInput* transaction_input) BITCOINKERNEL_ARG_NONNULL(1);
1505 
1510 
1512 
1516 
1525  const btck_TransactionOutPoint* transaction_out_point) BITCOINKERNEL_ARG_NONNULL(1);
1526 
1534  const btck_TransactionOutPoint* transaction_out_point) BITCOINKERNEL_ARG_NONNULL(1);
1535 
1544  const btck_TransactionOutPoint* transaction_out_point) BITCOINKERNEL_ARG_NONNULL(1);
1545 
1550 
1552 
1556 
1565  const btck_Txid* txid) BITCOINKERNEL_ARG_NONNULL(1);
1566 
1575  const btck_Txid* txid1, const btck_Txid* txid2) BITCOINKERNEL_ARG_NONNULL(1, 2);
1576 
1584  const btck_Txid* txid, unsigned char output[32]) BITCOINKERNEL_ARG_NONNULL(1, 2);
1585 
1590 
1592 
1594 
1598 
1607  const btck_Coin* coin) BITCOINKERNEL_ARG_NONNULL(1);
1608 
1617  const btck_Coin* coin) BITCOINKERNEL_ARG_NONNULL(1);
1618 
1626  const btck_Coin* coin) BITCOINKERNEL_ARG_NONNULL(1);
1627 
1636  const btck_Coin* coin) BITCOINKERNEL_ARG_NONNULL(1);
1637 
1642 
1644 
1648 
1654  const unsigned char block_hash[32]) BITCOINKERNEL_ARG_NONNULL(1);
1655 
1664  const btck_BlockHash* hash1, const btck_BlockHash* hash2) BITCOINKERNEL_ARG_NONNULL(1, 2);
1665 
1673  const btck_BlockHash* block_hash) BITCOINKERNEL_ARG_NONNULL(1);
1674 
1682  const btck_BlockHash* block_hash, unsigned char output[32]) BITCOINKERNEL_ARG_NONNULL(1, 2);
1683 
1688 
1690 
1695 
1705  const void* raw_block_header, size_t raw_block_header_len);
1706 
1714  const btck_BlockHeader* header) BITCOINKERNEL_ARG_NONNULL(1);
1715 
1723  const btck_BlockHeader* header) BITCOINKERNEL_ARG_NONNULL(1);
1724 
1733  const btck_BlockHeader* header) BITCOINKERNEL_ARG_NONNULL(1);
1734 
1742  const btck_BlockHeader* header) BITCOINKERNEL_ARG_NONNULL(1);
1743 
1751  const btck_BlockHeader* header) BITCOINKERNEL_ARG_NONNULL(1);
1752 
1760  const btck_BlockHeader* header) BITCOINKERNEL_ARG_NONNULL(1);
1761 
1769  const btck_BlockHeader* header) BITCOINKERNEL_ARG_NONNULL(1);
1770 
1775 
1777 
1778 #ifdef __cplusplus
1779 } // extern "C"
1780 #endif // __cplusplus
1781 
1782 #endif // BITCOIN_KERNEL_BITCOINKERNEL_H
BITCOINKERNEL_API btck_TransactionInput *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_input_copy(const btck_TransactionInput *transaction_input) BITCOINKERNEL_ARG_NONNULL(1)
Copy a transaction input.
BITCOINKERNEL_API const btck_ScriptPubkey *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_output_get_script_pubkey(const btck_TransactionOutput *transaction_output) BITCOINKERNEL_ARG_NONNULL(1)
Get the script pubkey of the output.
void(* btck_NotifyHeaderTip)(void *user_data, btck_SynchronizationState state, int64_t height, int64_t timestamp, int presync)
BITCOINKERNEL_API void btck_logging_disable()
This disables the global internal logger.
void(* btck_DestroyCallback)(void *user_data)
Function signature for freeing user data.
void(* btck_NotifyWarningSet)(void *user_data, btck_Warning warning, const char *message, size_t message_len)
BITCOINKERNEL_API btck_BlockSpentOutputs *BITCOINKERNEL_WARN_UNUSED_RESULT BITCOINKERNEL_API btck_BlockSpentOutputs *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_spent_outputs_copy(const btck_BlockSpentOutputs *block_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1)
Copy a block&#39;s spent outputs.
int(* btck_WriteBytes)(const void *bytes, size_t size, void *userdata)
Function signature for serializing data.
uint32_t btck_ScriptVerificationFlags
Script verification flags that may be composed with each other.
BITCOINKERNEL_API void btck_chainstate_manager_options_set_worker_threads_num(btck_ChainstateManagerOptions *chainstate_manager_options, int worker_threads) BITCOINKERNEL_ARG_NONNULL(1)
Set the number of available worker threads used during validation.
BITCOINKERNEL_API btck_TransactionSpentOutputs *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_spent_outputs_copy(const btck_TransactionSpentOutputs *transaction_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1)
Copy a transaction&#39;s spent outputs.
BITCOINKERNEL_API size_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_count_inputs(const btck_Transaction *transaction) BITCOINKERNEL_ARG_NONNULL(1)
Get the number of inputs of a transaction.
BITCOINKERNEL_API uint32_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_header_get_bits(const btck_BlockHeader *header) BITCOINKERNEL_ARG_NONNULL(1)
Get the nBits difficulty target from btck_BlockHeader.
BITCOINKERNEL_API const btck_TransactionInput *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_get_input_at(const btck_Transaction *transaction, size_t input_index) BITCOINKERNEL_ARG_NONNULL(1)
Get the transaction input at the provided index.
BITCOINKERNEL_API const btck_TransactionOutput *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_get_output_at(const btck_Transaction *transaction, size_t output_index) BITCOINKERNEL_ARG_NONNULL(1)
Get the transaction outputs at the provided index.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT btck_txid_equals(const btck_Txid *txid1, const btck_Txid *txid2) BITCOINKERNEL_ARG_NONNULL(1
Check if two txids are equal.
BITCOINKERNEL_API const btck_Transaction *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_get_transaction_at(const btck_Block *block, size_t transaction_index) BITCOINKERNEL_ARG_NONNULL(1)
Get the transaction at the provided index.
void * user_data
Holds a user-defined opaque structure that is passed to the validation interface callbacks.
BITCOINKERNEL_API int32_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_tree_entry_get_height(const btck_BlockTreeEntry *block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1)
Return the height of a certain block tree entry.
BITCOINKERNEL_API int32_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_header_get_version(const btck_BlockHeader *header) BITCOINKERNEL_ARG_NONNULL(1)
Get the version from btck_BlockHeader.
#define BITCOINKERNEL_API
Definition: bitcoinkernel.h:27
BITCOINKERNEL_API btck_ChainParameters *BITCOINKERNEL_WARN_UNUSED_RESULT 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 int32_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_chain_get_height(const btck_Chain *chain) BITCOINKERNEL_ARG_NONNULL(1)
Return the height of the tip of the chain.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT btck_context_interrupt(btck_Context *context) BITCOINKERNEL_ARG_NONNULL(1)
Interrupt can be used to halt long-running validation functions like when reindexing, importing or processing blocks.
BITCOINKERNEL_API btck_Transaction *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_copy(const btck_Transaction *transaction) BITCOINKERNEL_ARG_NONNULL(1)
Copy a transaction.
BITCOINKERNEL_API int btck_transaction_to_bytes(const btck_Transaction *transaction, btck_WriteBytes writer, void *user_data) BITCOINKERNEL_ARG_NONNULL(1
Serializes the transaction through the passed in callback to bytes.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT BITCOINKERNEL_API int btck_script_pubkey_to_bytes(const btck_ScriptPubkey *script_pubkey, btck_WriteBytes writer, void *user_data) BITCOINKERNEL_ARG_NONNULL(1
Serializes the script pubkey through the passed in callback to bytes.
void(* btck_ValidationInterfacePoWValidBlock)(void *user_data, btck_Block *block, const btck_BlockTreeEntry *entry)
btck_ValidationInterfaceBlockChecked block_checked
Called when a new block has been fully validated.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT BITCOINKERNEL_API int BITCOINKERNEL_API void btck_script_pubkey_destroy(btck_ScriptPubkey *script_pubkey)
Destroy the script pubkey.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT btck_chainstate_manager_options_set_wipe_dbs(btck_ChainstateManagerOptions *chainstate_manager_options, int wipe_block_tree_db, int wipe_chainstate_db) BITCOINKERNEL_ARG_NONNULL(1)
Sets wipe db in the options.
void(* btck_NotifyProgress)(void *user_data, const char *title, size_t title_len, int progress_percent, int resume_possible)
BITCOINKERNEL_API void btck_block_header_destroy(btck_BlockHeader *header)
Destroy the btck_BlockHeader.
BITCOINKERNEL_API void btck_logging_disable_category(btck_LogCategory category)
Disable a specific log category for the global internal logger.
BITCOINKERNEL_API void btck_logging_set_level_category(btck_LogCategory category, btck_LogLevel level)
Set the log level of the global internal logger.
BITCOINKERNEL_API btck_LoggingConnection *BITCOINKERNEL_WARN_UNUSED_RESULT btck_logging_connection_create(btck_LogCallback log_callback, void *user_data, btck_DestroyCallback user_data_destroy_callback) BITCOINKERNEL_ARG_NONNULL(1)
Start logging messages through the provided callback.
BITCOINKERNEL_API const btck_Coin *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_spent_outputs_get_coin_at(const btck_TransactionSpentOutputs *transaction_spent_outputs, size_t coin_index) BITCOINKERNEL_ARG_NONNULL(1)
Returns a coin contained in the transaction spent outputs at a certain index.
BITCOINKERNEL_API btck_Block *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_read(const btck_ChainstateManager *chainstate_manager, const btck_BlockTreeEntry *block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1
Reads the block the passed in block tree entry points to from disk and returns it.
BITCOINKERNEL_API int btck_block_to_bytes(const btck_Block *block, btck_WriteBytes writer, void *user_data) BITCOINKERNEL_ARG_NONNULL(1
Serializes the block through the passed in callback to bytes.
BITCOINKERNEL_API const btck_BlockTreeEntry *BITCOINKERNEL_WARN_UNUSED_RESULT btck_chainstate_manager_get_best_entry(const btck_ChainstateManager *chainstate_manager) BITCOINKERNEL_ARG_NONNULL(1)
Get the btck_BlockTreeEntry whose associated btck_BlockHeader has the most known cumulative proof of ...
BITCOINKERNEL_API btck_Coin *BITCOINKERNEL_WARN_UNUSED_RESULT btck_coin_copy(const btck_Coin *coin) BITCOINKERNEL_ARG_NONNULL(1)
Copy a coin.
uint8_t btck_Warning
Possible warning types issued by validation.
#define BITCOINKERNEL_WARN_UNUSED_RESULT
Definition: bitcoinkernel.h:36
int log_sourcelocations
Prepend the source location to log messages.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_hash_equals(const btck_BlockHash *hash1, const btck_BlockHash *hash2) BITCOINKERNEL_ARG_NONNULL(1
Check if two block hashes are equal.
BITCOINKERNEL_API const btck_TransactionOutput *BITCOINKERNEL_WARN_UNUSED_RESULT btck_coin_get_output(const btck_Coin *coin) BITCOINKERNEL_ARG_NONNULL(1)
Return the transaction output of a coin.
BITCOINKERNEL_API void btck_chainstate_manager_options_update_chainstate_db_in_memory(btck_ChainstateManagerOptions *chainstate_manager_options, int chainstate_db_in_memory) BITCOINKERNEL_ARG_NONNULL(1)
Sets chainstate db in memory in the options.
uint8_t btck_ChainType
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT 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) BITCOINKERNEL_ARG_NONNULL(1)
Triggers the start of a reindex if the wipe options were previously set for the chainstate manager...
BITCOINKERNEL_API btck_BlockSpentOutputs *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_spent_outputs_read(const btck_ChainstateManager *chainstate_manager, const btck_BlockTreeEntry *block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1
Reads the block spent coins data the passed in block tree entry points to from disk and returns it...
uint8_t btck_LogLevel
The level at which logs should be produced.
#define BITCOINKERNEL_ARG_NONNULL(...)
BITCOINKERNEL_ARG_NONNULL is a compiler attribute used to indicate that certain pointer arguments to ...
Definition: bitcoinkernel.h:52
void * user_data
Holds a user-defined opaque structure that is passed to the notification callbacks.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT btck_chain_contains(const btck_Chain *chain, const btck_BlockTreeEntry *block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1
Return true if the passed in chain contains the block tree entry.
BITCOINKERNEL_API btck_PrecomputedTransactionData *BITCOINKERNEL_WARN_UNUSED_RESULT btck_precomputed_transaction_data_copy(const btck_PrecomputedTransactionData *precomputed_txdata) BITCOINKERNEL_ARG_NONNULL(1)
Copy precomputed transaction data.
BITCOINKERNEL_API const btck_TransactionOutPoint *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_input_get_out_point(const btck_TransactionInput *transaction_input) BITCOINKERNEL_ARG_NONNULL(1)
Get the transaction out point.
int log_time_micros
Log timestamps in microsecond precision.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT BITCOINKERNEL_API void btck_txid_to_bytes(const btck_Txid *txid, unsigned char output[32]) BITCOINKERNEL_ARG_NONNULL(1
Serializes the txid to bytes.
BITCOINKERNEL_API void btck_transaction_out_point_destroy(btck_TransactionOutPoint *transaction_out_point)
Destroy the transaction out point.
BITCOINKERNEL_API btck_ScriptPubkey *BITCOINKERNEL_WARN_UNUSED_RESULT btck_script_pubkey_create(const void *script_pubkey, size_t script_pubkey_len)
Create a script pubkey from serialized data.
BITCOINKERNEL_API btck_BlockValidationState *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_validation_state_create()
Create a new btck_BlockValidationState.
void(* btck_NotifyFatalError)(void *user_data, const char *message, size_t message_len)
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT 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) BITCOINKERNEL_ARG_NONNULL(1
Verify if the input at input_index of tx_to spends the script pubkey under the constraints specified ...
BITCOINKERNEL_API btck_TransactionOutput *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_output_copy(const btck_TransactionOutput *transaction_output) BITCOINKERNEL_ARG_NONNULL(1)
Copy a transaction output.
BITCOINKERNEL_API btck_BlockValidationResult btck_block_validation_state_get_block_validation_result(const btck_BlockValidationState *block_validation_state) BITCOINKERNEL_ARG_NONNULL(1)
Returns the validation result from an opaque btck_BlockValidationState pointer.
int always_print_category_levels
Prepend the log category and level to log messages.
int log_timestamps
Prepend a timestamp to log messages.
BITCOINKERNEL_API void btck_logging_set_options(btck_LoggingOptions options)
Set some options for the global internal logger.
btck_NotifyWarningUnset warning_unset
A previous condition leading to the issuance of a warning is no longer given.
BITCOINKERNEL_API btck_ValidationMode btck_block_validation_state_get_validation_mode(const btck_BlockValidationState *block_validation_state) BITCOINKERNEL_ARG_NONNULL(1)
Returns the validation mode from an opaque btck_BlockValidationState pointer.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT btck_chainstate_manager_process_block_header(btck_ChainstateManager *chainstate_manager, const btck_BlockHeader *header, btck_BlockValidationState *block_validation_state) BITCOINKERNEL_ARG_NONNULL(1
Processes and validates the provided btck_BlockHeader.
BITCOINKERNEL_API const btck_BlockTreeEntry *BITCOINKERNEL_WARN_UNUSED_RESULT BITCOINKERNEL_API void btck_chainstate_manager_destroy(btck_ChainstateManager *chainstate_manager)
Destroy the chainstate manager.
BITCOINKERNEL_API void btck_logging_enable_category(btck_LogCategory category)
Enable a specific log category for the global internal logger.
BITCOINKERNEL_API const btck_BlockHash *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_tree_entry_get_block_hash(const btck_BlockTreeEntry *block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1)
Return the block hash associated with a block tree entry.
BITCOINKERNEL_API btck_BlockHeader *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_tree_entry_get_block_header(const btck_BlockTreeEntry *block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1)
Return the btck_BlockHeader associated with this entry.
BITCOINKERNEL_API btck_ScriptPubkey *BITCOINKERNEL_WARN_UNUSED_RESULT btck_script_pubkey_copy(const btck_ScriptPubkey *script_pubkey) BITCOINKERNEL_ARG_NONNULL(1)
Copy a script pubkey.
BITCOINKERNEL_API const btck_BlockHash *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_header_get_prev_hash(const btck_BlockHeader *header) BITCOINKERNEL_ARG_NONNULL(1)
Get the previous btck_BlockHash from btck_BlockHeader.
BITCOINKERNEL_API size_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_spent_outputs_count(const btck_BlockSpentOutputs *block_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1)
Returns the number of transaction spent outputs whose data is contained in block spent outputs...
BITCOINKERNEL_API btck_ChainstateManagerOptions *BITCOINKERNEL_WARN_UNUSED_RESULT 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) BITCOINKERNEL_ARG_NONNULL(1)
Create options for the chainstate manager.
uint8_t btck_LogCategory
A collection of logging categories that may be encountered by kernel code.
btck_NotifyFatalError fatal_error
An unrecoverable system error encountered by the library.
BITCOINKERNEL_API btck_BlockHash *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_hash_create(const unsigned char block_hash[32]) BITCOINKERNEL_ARG_NONNULL(1)
Create a block hash from its raw data.
BITCOINKERNEL_API void btck_context_options_set_validation_interface(btck_ContextOptions *context_options, btck_ValidationInterfaceCallbacks validation_interface_callbacks) BITCOINKERNEL_ARG_NONNULL(1)
Set the validation interface callbacks for the context options.
BITCOINKERNEL_API void BITCOINKERNEL_API void btck_block_hash_destroy(btck_BlockHash *block_hash)
Destroy the block hash.
BITCOINKERNEL_API void btck_block_spent_outputs_destroy(btck_BlockSpentOutputs *block_spent_outputs)
Destroy the block spent outputs.
uint32_t btck_BlockValidationResult
A granular "reason" why a block was invalid.
BITCOINKERNEL_API btck_Context *BITCOINKERNEL_WARN_UNUSED_RESULT btck_context_create(const btck_ContextOptions *context_options)
Create a new kernel context.
btck_NotifyWarningSet warning_set
A warning issued by the kernel library during validation.
BITCOINKERNEL_API btck_Txid *BITCOINKERNEL_WARN_UNUSED_RESULT btck_txid_copy(const btck_Txid *txid) BITCOINKERNEL_ARG_NONNULL(1)
Copy a txid.
int flags
Definition: bitcoin-tx.cpp:529
btck_NotifyBlockTip block_tip
The chain&#39;s tip was updated to the provided block entry.
BITCOINKERNEL_API void btck_chainstate_manager_options_update_block_tree_db_in_memory(btck_ChainstateManagerOptions *chainstate_manager_options, int block_tree_db_in_memory) BITCOINKERNEL_ARG_NONNULL(1)
Sets block tree db in memory in the options.
BITCOINKERNEL_API void btck_context_options_set_chainparams(btck_ContextOptions *context_options, const btck_ChainParameters *chain_parameters) BITCOINKERNEL_ARG_NONNULL(1
Sets the chain params for the context options.
BITCOINKERNEL_API void btck_block_hash_to_bytes(const btck_BlockHash *block_hash, unsigned char output[32]) BITCOINKERNEL_ARG_NONNULL(1
Serializes the block hash to bytes.
BITCOINKERNEL_API btck_TransactionOutPoint *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_out_point_copy(const btck_TransactionOutPoint *transaction_out_point) BITCOINKERNEL_ARG_NONNULL(1)
Copy a transaction out point.
BITCOINKERNEL_API const btck_Txid *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_out_point_get_txid(const btck_TransactionOutPoint *transaction_out_point) BITCOINKERNEL_ARG_NONNULL(1)
Get the txid from the transaction out point.
uint8_t btck_ValidationMode
Whether a validated data structure is valid, invalid, or an error was encountered during processing...
BITCOINKERNEL_API void btck_precomputed_transaction_data_destroy(btck_PrecomputedTransactionData *precomputed_txdata)
Destroy the precomputed transaction data.
BITCOINKERNEL_API btck_BlockHeader *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_header_create(const void *raw_block_header, size_t raw_block_header_len)
Create a btck_BlockHeader from serialized data.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT btck_coin_is_coinbase(const btck_Coin *coin) BITCOINKERNEL_ARG_NONNULL(1)
Returns whether the containing transaction was a coinbase.
BITCOINKERNEL_API int BITCOINKERNEL_API void btck_block_destroy(btck_Block *block)
Destroy the block.
void(* btck_ValidationInterfaceBlockConnected)(void *user_data, btck_Block *block, const btck_BlockTreeEntry *entry)
BITCOINKERNEL_API void btck_context_destroy(btck_Context *context)
Destroy the context.
BITCOINKERNEL_API btck_Block *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_copy(const btck_Block *block) BITCOINKERNEL_ARG_NONNULL(1)
Copy a block.
BITCOINKERNEL_API void btck_chain_parameters_destroy(btck_ChainParameters *chain_parameters)
Destroy the chain parameters.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT btck_chainstate_manager_process_block(btck_ChainstateManager *chainstate_manager, const btck_Block *block, int *new_block) BITCOINKERNEL_ARG_NONNULL(1
Process and validate the passed in block with the chainstate manager.
btck_NotifyHeaderTip header_tip
A new best block header was added.
uint8_t btck_ScriptVerifyStatus
A collection of status codes that may be issued by the script verify function.
A struct for holding the kernel notification callbacks.
void(* btck_NotifyFlushError)(void *user_data, const char *message, size_t message_len)
void(* btck_ValidationInterfaceBlockChecked)(void *user_data, btck_Block *block, const btck_BlockValidationState *state)
Function signatures for the validation interface.
BITCOINKERNEL_API btck_BlockHash *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_header_get_hash(const btck_BlockHeader *header) BITCOINKERNEL_ARG_NONNULL(1)
Get the btck_BlockHash.
BITCOINKERNEL_API btck_BlockHeader *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_header_copy(const btck_BlockHeader *header) BITCOINKERNEL_ARG_NONNULL(1)
Copy a btck_BlockHeader.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT BITCOINKERNEL_API const btck_Chain *BITCOINKERNEL_WARN_UNUSED_RESULT btck_chainstate_manager_get_active_chain(const btck_ChainstateManager *chainstate_manager) BITCOINKERNEL_ARG_NONNULL(1)
Returns the best known currently active chain.
BITCOINKERNEL_API uint32_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_header_get_timestamp(const btck_BlockHeader *header) BITCOINKERNEL_ARG_NONNULL(1)
Get the timestamp from btck_BlockHeader.
BITCOINKERNEL_API void btck_context_options_destroy(btck_ContextOptions *context_options)
Destroy the context options.
BITCOINKERNEL_API btck_ChainParameters *BITCOINKERNEL_WARN_UNUSED_RESULT btck_chain_parameters_copy(const btck_ChainParameters *chain_parameters) BITCOINKERNEL_ARG_NONNULL(1)
Copy the chain parameters.
BITCOINKERNEL_API btck_Transaction *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_create(const void *raw_transaction, size_t raw_transaction_len)
Create a new transaction from the serialized data.
BITCOINKERNEL_API void btck_chainstate_manager_options_destroy(btck_ChainstateManagerOptions *chainstate_manager_options)
Destroy the chainstate manager options.
BITCOINKERNEL_API btck_Context *BITCOINKERNEL_WARN_UNUSED_RESULT btck_context_copy(const btck_Context *context) BITCOINKERNEL_ARG_NONNULL(1)
Copy the context.
BITCOINKERNEL_API void btck_transaction_input_destroy(btck_TransactionInput *transaction_input)
Destroy the transaction input.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT BITCOINKERNEL_API btck_BlockHash *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_hash_copy(const btck_BlockHash *block_hash) BITCOINKERNEL_ARG_NONNULL(1)
Copy a block hash.
void(* btck_NotifyWarningUnset)(void *user_data, btck_Warning warning)
BITCOINKERNEL_API btck_BlockValidationState *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_validation_state_copy(const btck_BlockValidationState *block_validation_state) BITCOINKERNEL_ARG_NONNULL(1)
Copies the btck_BlockValidationState.
btck_NotifyFlushError flush_error
An error encountered when flushing data to disk.
BITCOINKERNEL_API const btck_BlockTreeEntry *BITCOINKERNEL_WARN_UNUSED_RESULT btck_chain_get_by_height(const btck_Chain *chain, int block_height) BITCOINKERNEL_ARG_NONNULL(1)
Retrieve a block tree entry by its height in the currently active chain.
BITCOINKERNEL_API void btck_block_validation_state_destroy(btck_BlockValidationState *block_validation_state)
Destroy the btck_BlockValidationState.
Holds the validation interface callbacks.
void(* btck_ValidationInterfaceBlockDisconnected)(void *user_data, btck_Block *block, const btck_BlockTreeEntry *entry)
Options controlling the format of log messages.
BITCOINKERNEL_API const btck_TransactionSpentOutputs *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_spent_outputs_get_transaction_spent_outputs_at(const btck_BlockSpentOutputs *block_spent_outputs, size_t transaction_spent_outputs_index) BITCOINKERNEL_ARG_NONNULL(1)
Returns a transaction spent outputs contained in the block spent outputs at a certain index...
btck_NotifyProgress progress
Reports on current block synchronization progress.
BITCOINKERNEL_API btck_BlockHash *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_get_hash(const btck_Block *block) BITCOINKERNEL_ARG_NONNULL(1)
Calculate and return the hash of a block.
BITCOINKERNEL_API const btck_Txid *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_get_txid(const btck_Transaction *transaction) BITCOINKERNEL_ARG_NONNULL(1)
Get the txid of a transaction.
BITCOINKERNEL_API uint32_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_out_point_get_index(const btck_TransactionOutPoint *transaction_out_point) BITCOINKERNEL_ARG_NONNULL(1)
Get the output position from the transaction out point.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT BITCOINKERNEL_API void BITCOINKERNEL_API void btck_txid_destroy(btck_Txid *txid)
Destroy the txid.
BITCOINKERNEL_API const btck_BlockTreeEntry *BITCOINKERNEL_WARN_UNUSED_RESULT btck_chainstate_manager_get_block_tree_entry_by_hash(const btck_ChainstateManager *chainstate_manager, const btck_BlockHash *block_hash) BITCOINKERNEL_ARG_NONNULL(1
Retrieve a block tree entry by its block hash.
BITCOINKERNEL_API void btck_transaction_spent_outputs_destroy(btck_TransactionSpentOutputs *transaction_spent_outputs)
Destroy the transaction spent outputs.
BITCOINKERNEL_API btck_BlockHeader *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_get_header(const btck_Block *block) BITCOINKERNEL_ARG_NONNULL(1)
Get the btck_BlockHeader from the block.
void(* btck_NotifyBlockTip)(void *user_data, btck_SynchronizationState state, const btck_BlockTreeEntry *entry, double verification_progress)
Function signatures for the kernel notifications.
BITCOINKERNEL_API uint32_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_header_get_nonce(const btck_BlockHeader *header) BITCOINKERNEL_ARG_NONNULL(1)
Get the nonce from btck_BlockHeader.
BITCOINKERNEL_API int64_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_output_get_amount(const btck_TransactionOutput *transaction_output) BITCOINKERNEL_ARG_NONNULL(1)
Get the amount in the output.
BITCOINKERNEL_API uint32_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_coin_confirmation_height(const btck_Coin *coin) BITCOINKERNEL_ARG_NONNULL(1)
Returns the block height where the transaction that created this coin was included in...
uint8_t btck_SynchronizationState
Current sync state passed to tip changed callbacks.
BITCOINKERNEL_API int BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_tree_entry_equals(const btck_BlockTreeEntry *entry1, const btck_BlockTreeEntry *entry2) BITCOINKERNEL_ARG_NONNULL(1
Check if two block tree entries are equal.
btck_ValidationInterfaceBlockDisconnected block_disconnected
Called during a re-org when a block has been removed from the best chain.
BITCOINKERNEL_API size_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_spent_outputs_count(const btck_TransactionSpentOutputs *transaction_spent_outputs) BITCOINKERNEL_ARG_NONNULL(1)
Returns the number of previous transaction outputs contained in the transaction spent outputs data...
BITCOINKERNEL_API btck_TransactionOutput *BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_output_create(const btck_ScriptPubkey *script_pubkey, int64_t amount) BITCOINKERNEL_ARG_NONNULL(1)
Create a transaction output from a script pubkey and an amount.
BITCOINKERNEL_API btck_Block *BITCOINKERNEL_WARN_UNUSED_RESULT BITCOINKERNEL_API btck_Block *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_create(const void *raw_block, size_t raw_block_len)
Parse a serialized raw block into a new block object.
BITCOINKERNEL_API int BITCOINKERNEL_API size_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_count_outputs(const btck_Transaction *transaction) BITCOINKERNEL_ARG_NONNULL(1)
Get the number of outputs of a transaction.
BITCOINKERNEL_API btck_ChainstateManager *BITCOINKERNEL_WARN_UNUSED_RESULT btck_chainstate_manager_create(const btck_ChainstateManagerOptions *chainstate_manager_options) BITCOINKERNEL_ARG_NONNULL(1)
Create a chainstate manager.
BITCOINKERNEL_API void BITCOINKERNEL_API void btck_context_options_set_notifications(btck_ContextOptions *context_options, btck_NotificationInterfaceCallbacks notifications) BITCOINKERNEL_ARG_NONNULL(1)
Set the kernel notifications for the context options.
int log_threadnames
Prepend the name of the thread to log messages.
BITCOINKERNEL_API btck_ContextOptions *BITCOINKERNEL_WARN_UNUSED_RESULT btck_context_options_create()
Creates an empty context options.
BITCOINKERNEL_API const btck_BlockTreeEntry *BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_tree_entry_get_previous(const btck_BlockTreeEntry *block_tree_entry) BITCOINKERNEL_ARG_NONNULL(1)
Returns the previous block tree entry in the tree, or null if the current block tree entry is the gen...
void(* btck_LogCallback)(void *user_data, const char *message, size_t message_len)
Callback function types.
BITCOINKERNEL_API btck_PrecomputedTransactionData *BITCOINKERNEL_WARN_UNUSED_RESULT btck_precomputed_transaction_data_create(const btck_Transaction *tx_to, const btck_TransactionOutput **spent_outputs, size_t spent_outputs_len) BITCOINKERNEL_ARG_NONNULL(1)
Create precomputed transaction data for script verification.
BITCOINKERNEL_API void btck_logging_connection_destroy(btck_LoggingConnection *logging_connection)
Stop logging and destroy the logging connection.
BITCOINKERNEL_API void btck_coin_destroy(btck_Coin *coin)
Destroy the coin.
BITCOINKERNEL_API void btck_transaction_output_destroy(btck_TransactionOutput *transaction_output)
Destroy the transaction output.
BITCOINKERNEL_API size_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_block_count_transactions(const btck_Block *block) BITCOINKERNEL_ARG_NONNULL(1)
Count the number of transactions contained in a block.
BITCOINKERNEL_API void btck_transaction_destroy(btck_Transaction *transaction)
Destroy the transaction.