Skip to content

Commit 6899765

Browse files
committed
Squashed 'depend/bitcoin/' changes from 35fced5df7..fdc9f98cae
fdc9f98cae kernel: Fix bitcoin-chainstate for windows 23d43c4e79 kernel: Add Purpose section to header documentation 7924a86ccf kernel: Allowing reducing exports 98234b1443 kernel: Add pure kernel bitcoin-chainstate bcacaf9f7d kernel: Add functions to get the block hash from a block 69d457909f kernel: Add block index utility functions to C header 15ab14d841 kernel: Add function to read block undo data from disk to C header f156e36930 kernel: Add functions to read block from disk to C header ec46b7d770 kernel: Add function for copying block data to C header 91d9e14286 kernel: Add functions for the block validation state to C header 41b77072d3 kernel: Add validation interface to C header 96bdab979e kernel: Add interrupt function to C header 2989cb0fa4 kernel: Add import blocks function to C header 1063846417 kernel: Add chainstate load options for in-memory dbs in C header 809e0c2441 kernel: Add options for reindexing in C header a1b6632702 kernel: Add block validation to C header 35d1e2dfbf kernel: Add chainstate loading when instantiating a ChainstateManager 824a5d549e kernel: Add chainstate manager option for setting worker threads c3bb19aaf4 kernel: Add chainstate manager object to C header 0d2cbf47d6 kernel: Add notifications context option to C header df43fd0151 kernel: Add chain params context option to C header 02e0874a91 kernel: Add kernel library context object de9bc8e47b kernel: Add logging to kernel library C header a771ea573b kernel: Introduce initial kernel C header API REVERT: 35fced5df7 kernel: Fix bitcoin-chainstate for windows REVERT: c164264fd8 kernel: Add Purpose section to header documentation REVERT: 9096c35c05 kernel: Allowing reducing exports REVERT: 6d0d4b2507 kernel: Add pure kernel bitcoin-chainstate REVERT: ccd85f0333 kernel: Add functions to get the block hash from a block REVERT: 925f21c37b kernel: Add block index utility functions to C header REVERT: b7441841c9 kernel: Add function to read block undo data from disk to C header REVERT: bc0e6f098e kernel: Add functions to read block from disk to C header REVERT: 5120302f96 kernel: Add function for copying block data to C header REVERT: 718ccee732 kernel: Add functions for the block validation state to C header REVERT: eb363ab30e kernel: Add validation interface to C header REVERT: 246886c6ea kernel: Add interrupt function to C header REVERT: f3b34ca457 kernel: Add import blocks function to C header REVERT: fe08857d52 kernel: Add chainstate load options for in-memory dbs in C header REVERT: f93f171e01 kernel: Add options for reindexing in C header REVERT: dca7b4c26e kernel: Add block validation to C header REVERT: f031e9ce03 kernel: Add chainstate loading when instantiating a ChainstateManager REVERT: 3cb99f73ec kernel: Add chainstate manager option for setting worker threads REVERT: 9454ad8512 kernel: Add chainstate manager object to C header REVERT: 3bead9ebdd kernel: Add notifications context option to C header REVERT: dda805dfb6 kernel: Add chain params context option to C header REVERT: ea5334925d kernel: Add kernel library context object REVERT: 36fafbaef9 kernel: Add logging to kernel library C header REVERT: d28eef5cf2 kernel: Introduce initial kernel C header API git-subtree-dir: depend/bitcoin git-subtree-split: fdc9f98caeb9e77f20e55c4446a3c23d2da51011
1 parent 71275a1 commit 6899765

File tree

5 files changed

+498
-498
lines changed

5 files changed

+498
-498
lines changed

src/bitcoin-chainstate.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -55,47 +55,47 @@ class TestValidationInterface : public ValidationInterface<TestValidationInterfa
5555

5656
void BlockChecked(const UnownedBlock block, const BlockValidationState state) override
5757
{
58-
auto mode{state.ValidationMode()};
58+
auto mode{state.GetValidationMode()};
5959
switch (mode) {
60-
case btck_ValidationMode::btck_VALIDATION_STATE_VALID: {
60+
case ValidationMode::VALID: {
6161
std::cout << "Valid block" << std::endl;
6262
return;
6363
}
64-
case btck_ValidationMode::btck_VALIDATION_STATE_INVALID: {
64+
case ValidationMode::INVALID: {
6565
std::cout << "Invalid block: ";
66-
auto result{state.BlockValidationResult()};
66+
auto result{state.GetBlockValidationResult()};
6767
switch (result) {
68-
case btck_BlockValidationResult::btck_BLOCK_RESULT_UNSET:
68+
case BlockValidationResult::UNSET:
6969
std::cout << "initial value. Block has not yet been rejected" << std::endl;
7070
break;
71-
case btck_BlockValidationResult::btck_BLOCK_HEADER_LOW_WORK:
71+
case BlockValidationResult::HEADER_LOW_WORK:
7272
std::cout << "the block header may be on a too-little-work chain" << std::endl;
7373
break;
74-
case btck_BlockValidationResult::btck_BLOCK_CONSENSUS:
74+
case BlockValidationResult::CONSENSUS:
7575
std::cout << "invalid by consensus rules (excluding any below reasons)" << std::endl;
7676
break;
77-
case btck_BlockValidationResult::btck_BLOCK_CACHED_INVALID:
77+
case BlockValidationResult::CACHED_INVALID:
7878
std::cout << "this block was cached as being invalid and we didn't store the reason why" << std::endl;
7979
break;
80-
case btck_BlockValidationResult::btck_BLOCK_INVALID_HEADER:
80+
case BlockValidationResult::INVALID_HEADER:
8181
std::cout << "invalid proof of work or time too old" << std::endl;
8282
break;
83-
case btck_BlockValidationResult::btck_BLOCK_MUTATED:
83+
case BlockValidationResult::MUTATED:
8484
std::cout << "the block's data didn't match the data committed to by the PoW" << std::endl;
8585
break;
86-
case btck_BlockValidationResult::btck_BLOCK_MISSING_PREV:
86+
case BlockValidationResult::MISSING_PREV:
8787
std::cout << "We don't have the previous block the checked one is built on" << std::endl;
8888
break;
89-
case btck_BlockValidationResult::btck_BLOCK_INVALID_PREV:
89+
case BlockValidationResult::INVALID_PREV:
9090
std::cout << "A block this one builds on is invalid" << std::endl;
9191
break;
92-
case btck_BlockValidationResult::btck_BLOCK_TIME_FUTURE:
92+
case BlockValidationResult::TIME_FUTURE:
9393
std::cout << "block timestamp was > 2 hours in the future (or our clock is bad)" << std::endl;
9494
break;
9595
}
9696
return;
9797
}
98-
case btck_ValidationMode::btck_VALIDATION_STATE_ERROR: {
98+
case ValidationMode::INTERNAL_ERROR: {
9999
std::cout << "Internal error" << std::endl;
100100
return;
101101
}
@@ -106,7 +106,7 @@ class TestValidationInterface : public ValidationInterface<TestValidationInterfa
106106
class TestKernelNotifications : public KernelNotifications<TestKernelNotifications>
107107
{
108108
public:
109-
void BlockTipHandler(btck_SynchronizationState, const BlockTreeEntry, double) override
109+
void BlockTipHandler(SynchronizationState, const BlockTreeEntry, double) override
110110
{
111111
std::cout << "Block tip changed" << std::endl;
112112
}
@@ -116,14 +116,14 @@ class TestKernelNotifications : public KernelNotifications<TestKernelNotificatio
116116
std::cout << "Made progress: " << title << " " << progress_percent << "%" << std::endl;
117117
}
118118

119-
void WarningSetHandler(btck_Warning warning, std::string_view message) override
119+
void WarningSetHandler(Warning warning, std::string_view message) override
120120
{
121121
std::cout << message << std::endl;
122122
}
123123

124-
void WarningUnsetHandler(btck_Warning warning) override
124+
void WarningUnsetHandler(Warning warning) override
125125
{
126-
std::cout << "Warning unset: " << warning << std::endl;
126+
std::cout << "Warning unset: " << static_cast<std::underlying_type_t<Warning>>(warning) << std::endl;
127127
}
128128

129129
void FlushErrorHandler(std::string_view error) override
@@ -179,7 +179,7 @@ int main(int argc, char* argv[])
179179
Logger logger{std::make_unique<KernelLog>(KernelLog{}), logging_options};
180180

181181
ContextOptions options{};
182-
ChainParams params{btck_ChainType::btck_CHAIN_TYPE_MAINNET};
182+
ChainParams params{ChainType::MAINNET};
183183
options.SetChainParams(params);
184184

185185
TestKernelNotifications notifications{};

src/kernel/bitcoinkernel.cpp

Lines changed: 52 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,6 @@ struct btck_BlockTreeEntry {
6464

6565
namespace {
6666

67-
/** Check that all specified flags are part of the libbitcoinkernel interface. */
68-
bool verify_flags(unsigned int flags)
69-
{
70-
return (flags & ~(btck_SCRIPT_FLAGS_VERIFY_ALL)) == 0;
71-
}
72-
7367
bool is_valid_flag_combination(unsigned int flags)
7468
{
7569
if (flags & SCRIPT_VERIFY_CLEANSTACK && ~flags & (SCRIPT_VERIFY_P2SH | SCRIPT_VERIFY_WITNESS)) return false;
@@ -105,71 +99,71 @@ class WriterStream
10599
}
106100
};
107101

108-
BCLog::Level get_bclog_level(const btck_LogLevel level)
102+
BCLog::Level get_bclog_level(btck_LogLevel level)
109103
{
110104
switch (level) {
111-
case btck_LogLevel::btck_LOG_INFO: {
105+
case btck_LogLevel_INFO: {
112106
return BCLog::Level::Info;
113107
}
114-
case btck_LogLevel::btck_LOG_DEBUG: {
108+
case btck_LogLevel_DEBUG: {
115109
return BCLog::Level::Debug;
116110
}
117-
case btck_LogLevel::btck_LOG_TRACE: {
111+
case btck_LogLevel_TRACE: {
118112
return BCLog::Level::Trace;
119113
}
120-
} // no default case, so the compiler can warn about missing cases
114+
}
121115
assert(false);
122116
}
123117

124-
BCLog::LogFlags get_bclog_flag(const btck_LogCategory category)
118+
BCLog::LogFlags get_bclog_flag(btck_LogCategory category)
125119
{
126120
switch (category) {
127-
case btck_LogCategory::btck_LOG_BENCH: {
121+
case btck_LogCategory_BENCH: {
128122
return BCLog::LogFlags::BENCH;
129123
}
130-
case btck_LogCategory::btck_LOG_BLOCKSTORAGE: {
124+
case btck_LogCategory_BLOCKSTORAGE: {
131125
return BCLog::LogFlags::BLOCKSTORAGE;
132126
}
133-
case btck_LogCategory::btck_LOG_COINDB: {
127+
case btck_LogCategory_COINDB: {
134128
return BCLog::LogFlags::COINDB;
135129
}
136-
case btck_LogCategory::btck_LOG_LEVELDB: {
130+
case btck_LogCategory_LEVELDB: {
137131
return BCLog::LogFlags::LEVELDB;
138132
}
139-
case btck_LogCategory::btck_LOG_MEMPOOL: {
133+
case btck_LogCategory_MEMPOOL: {
140134
return BCLog::LogFlags::MEMPOOL;
141135
}
142-
case btck_LogCategory::btck_LOG_PRUNE: {
136+
case btck_LogCategory_PRUNE: {
143137
return BCLog::LogFlags::PRUNE;
144138
}
145-
case btck_LogCategory::btck_LOG_RAND: {
139+
case btck_LogCategory_RAND: {
146140
return BCLog::LogFlags::RAND;
147141
}
148-
case btck_LogCategory::btck_LOG_REINDEX: {
142+
case btck_LogCategory_REINDEX: {
149143
return BCLog::LogFlags::REINDEX;
150144
}
151-
case btck_LogCategory::btck_LOG_VALIDATION: {
145+
case btck_LogCategory_VALIDATION: {
152146
return BCLog::LogFlags::VALIDATION;
153147
}
154-
case btck_LogCategory::btck_LOG_KERNEL: {
148+
case btck_LogCategory_KERNEL: {
155149
return BCLog::LogFlags::KERNEL;
156150
}
157-
case btck_LogCategory::btck_LOG_ALL: {
151+
case btck_LogCategory_ALL: {
158152
return BCLog::LogFlags::ALL;
159153
}
160-
} // no default case, so the compiler can warn about missing cases
154+
}
161155
assert(false);
162156
}
163157

164158
btck_SynchronizationState cast_state(SynchronizationState state)
165159
{
166160
switch (state) {
167161
case SynchronizationState::INIT_REINDEX:
168-
return btck_SynchronizationState::btck_INIT_REINDEX;
162+
return btck_SynchronizationState_INIT_REINDEX;
169163
case SynchronizationState::INIT_DOWNLOAD:
170-
return btck_SynchronizationState::btck_INIT_DOWNLOAD;
164+
return btck_SynchronizationState_INIT_DOWNLOAD;
171165
case SynchronizationState::POST_INIT:
172-
return btck_SynchronizationState::btck_POST_INIT;
166+
return btck_SynchronizationState_POST_INIT;
173167
} // no default case, so the compiler can warn about missing cases
174168
assert(false);
175169
}
@@ -178,9 +172,9 @@ btck_Warning cast_btck_warning(kernel::Warning warning)
178172
{
179173
switch (warning) {
180174
case kernel::Warning::UNKNOWN_NEW_RULES_ACTIVATED:
181-
return btck_Warning::btck_UNKNOWN_NEW_RULES_ACTIVATED;
175+
return btck_Warning_UNKNOWN_NEW_RULES_ACTIVATED;
182176
case kernel::Warning::LARGE_WORK_INVALID_CHAIN:
183-
return btck_Warning::btck_LARGE_WORK_INVALID_CHAIN;
177+
return btck_Warning_LARGE_WORK_INVALID_CHAIN;
184178
} // no default case, so the compiler can warn about missing cases
185179
assert(false);
186180
}
@@ -521,23 +515,21 @@ int btck_script_pubkey_verify(const btck_ScriptPubkey* script_pubkey,
521515
const btck_Transaction* tx_to,
522516
const btck_TransactionOutput** spent_outputs_, size_t spent_outputs_len,
523517
const unsigned int input_index,
524-
const unsigned int flags,
518+
const btck_ScriptVerificationFlags flags,
525519
btck_ScriptVerifyStatus* status)
526520
{
527521
const CAmount amount{amount_};
528522

529-
if (!verify_flags(flags)) {
530-
if (status) *status = btck_SCRIPT_VERIFY_ERROR_INVALID_FLAGS;
531-
return 0;
532-
}
523+
// Assert that all specified flags are part of the interface before continuing
524+
assert((flags & ~btck_ScriptVerificationFlags_ALL) == 0);
533525

534526
if (!is_valid_flag_combination(flags)) {
535-
if (status) *status = btck_SCRIPT_VERIFY_ERROR_INVALID_FLAGS_COMBINATION;
527+
if (status) *status = btck_ScriptVerifyStatus_ERROR_INVALID_FLAGS_COMBINATION;
536528
return 0;
537529
}
538530

539-
if (flags & btck_SCRIPT_FLAGS_VERIFY_TAPROOT && spent_outputs_ == nullptr) {
540-
if (status) *status = btck_SCRIPT_VERIFY_ERROR_SPENT_OUTPUTS_REQUIRED;
531+
if (flags & btck_ScriptVerificationFlags_TAPROOT && spent_outputs_ == nullptr) {
532+
if (status) *status = btck_ScriptVerifyStatus_ERROR_SPENT_OUTPUTS_REQUIRED;
541533
return 0;
542534
}
543535

@@ -555,7 +547,7 @@ int btck_script_pubkey_verify(const btck_ScriptPubkey* script_pubkey,
555547
assert(input_index < tx.vin.size());
556548
PrecomputedTransactionData txdata{tx};
557549

558-
if (spent_outputs_ != nullptr && flags & btck_SCRIPT_FLAGS_VERIFY_TAPROOT) {
550+
if (spent_outputs_ != nullptr && flags & btck_ScriptVerificationFlags_TAPROOT) {
559551
txdata.Init(tx, std::move(spent_outputs));
560552
}
561553

@@ -568,21 +560,21 @@ int btck_script_pubkey_verify(const btck_ScriptPubkey* script_pubkey,
568560
return result ? 1 : 0;
569561
}
570562

571-
void btck_logging_set_level_category(const btck_LogCategory category, const btck_LogLevel level)
563+
void btck_logging_set_level_category(btck_LogCategory category, btck_LogLevel level)
572564
{
573-
if (category == btck_LogCategory::btck_LOG_ALL) {
565+
if (category == btck_LogCategory_ALL) {
574566
LogInstance().SetLogLevel(get_bclog_level(level));
575567
}
576568

577569
LogInstance().AddCategoryLogLevel(get_bclog_flag(category), get_bclog_level(level));
578570
}
579571

580-
void btck_logging_enable_category(const btck_LogCategory category)
572+
void btck_logging_enable_category(btck_LogCategory category)
581573
{
582574
LogInstance().EnableCategory(get_bclog_flag(category));
583575
}
584576

585-
void btck_logging_disable_category(const btck_LogCategory category)
577+
void btck_logging_disable_category(btck_LogCategory category)
586578
{
587579
LogInstance().DisableCategory(get_bclog_flag(category));
588580
}
@@ -643,22 +635,22 @@ void btck_logging_connection_destroy(btck_LoggingConnection* connection)
643635
btck_ChainParameters* btck_chain_parameters_create(const btck_ChainType chain_type)
644636
{
645637
switch (chain_type) {
646-
case btck_ChainType::btck_CHAIN_TYPE_MAINNET: {
638+
case btck_ChainType_MAINNET: {
647639
return new btck_ChainParameters{CChainParams::Main()};
648640
}
649-
case btck_ChainType::btck_CHAIN_TYPE_TESTNET: {
641+
case btck_ChainType_TESTNET: {
650642
return new btck_ChainParameters{CChainParams::TestNet()};
651643
}
652-
case btck_ChainType::btck_CHAIN_TYPE_TESTNET_4: {
644+
case btck_ChainType_TESTNET_4: {
653645
return new btck_ChainParameters{CChainParams::TestNet4()};
654646
}
655-
case btck_ChainType::btck_CHAIN_TYPE_SIGNET: {
647+
case btck_ChainType_SIGNET: {
656648
return new btck_ChainParameters{CChainParams::SigNet({})};
657649
}
658-
case btck_ChainType::btck_CHAIN_TYPE_REGTEST: {
650+
case btck_ChainType_REGTEST: {
659651
return new btck_ChainParameters{CChainParams::RegTest({})};
660652
}
661-
} // no default case, so the compiler can warn about missing cases
653+
}
662654
assert(false);
663655
}
664656

@@ -744,33 +736,33 @@ void btck_block_tree_entry_destroy(btck_BlockTreeEntry* block_tree_entry)
744736
btck_ValidationMode btck_block_validation_state_get_validation_mode(const btck_BlockValidationState* block_validation_state_)
745737
{
746738
auto& block_validation_state = *cast_block_validation_state(block_validation_state_);
747-
if (block_validation_state.IsValid()) return btck_ValidationMode::btck_VALIDATION_STATE_VALID;
748-
if (block_validation_state.IsInvalid()) return btck_ValidationMode::btck_VALIDATION_STATE_INVALID;
749-
return btck_ValidationMode::btck_VALIDATION_STATE_ERROR;
739+
if (block_validation_state.IsValid()) return btck_ValidationMode_VALID;
740+
if (block_validation_state.IsInvalid()) return btck_ValidationMode_INVALID;
741+
return btck_ValidationMode_INTERNAL_ERROR;
750742
}
751743

752744
btck_BlockValidationResult btck_block_validation_state_get_block_validation_result(const btck_BlockValidationState* block_validation_state_)
753745
{
754746
auto& block_validation_state = *cast_block_validation_state(block_validation_state_);
755747
switch (block_validation_state.GetResult()) {
756748
case BlockValidationResult::BLOCK_RESULT_UNSET:
757-
return btck_BlockValidationResult::btck_BLOCK_RESULT_UNSET;
749+
return btck_BlockValidationResult_UNSET;
758750
case BlockValidationResult::BLOCK_CONSENSUS:
759-
return btck_BlockValidationResult::btck_BLOCK_CONSENSUS;
751+
return btck_BlockValidationResult_CONSENSUS;
760752
case BlockValidationResult::BLOCK_CACHED_INVALID:
761-
return btck_BlockValidationResult::btck_BLOCK_CACHED_INVALID;
753+
return btck_BlockValidationResult_CACHED_INVALID;
762754
case BlockValidationResult::BLOCK_INVALID_HEADER:
763-
return btck_BlockValidationResult::btck_BLOCK_INVALID_HEADER;
755+
return btck_BlockValidationResult_INVALID_HEADER;
764756
case BlockValidationResult::BLOCK_MUTATED:
765-
return btck_BlockValidationResult::btck_BLOCK_MUTATED;
757+
return btck_BlockValidationResult_MUTATED;
766758
case BlockValidationResult::BLOCK_MISSING_PREV:
767-
return btck_BlockValidationResult::btck_BLOCK_MISSING_PREV;
759+
return btck_BlockValidationResult_MISSING_PREV;
768760
case BlockValidationResult::BLOCK_INVALID_PREV:
769-
return btck_BlockValidationResult::btck_BLOCK_INVALID_PREV;
761+
return btck_BlockValidationResult_INVALID_PREV;
770762
case BlockValidationResult::BLOCK_TIME_FUTURE:
771-
return btck_BlockValidationResult::btck_BLOCK_TIME_FUTURE;
763+
return btck_BlockValidationResult_TIME_FUTURE;
772764
case BlockValidationResult::BLOCK_HEADER_LOW_WORK:
773-
return btck_BlockValidationResult::btck_BLOCK_HEADER_LOW_WORK;
765+
return btck_BlockValidationResult_HEADER_LOW_WORK;
774766
} // no default case, so the compiler can warn about missing cases
775767
assert(false);
776768
}

0 commit comments

Comments
 (0)