Skip to content

Conversation

mzumsande
Copy link
Contributor

If the mocktime is bumped before the node has successfully disconnected the peer, the requests for both parents could be spread over two GETDATAS: The first time GetRequestsToSend is invoked it would only request one tx from peer2, because the other one would only be available after peer1 was disconnected and its outstanding txrequest cleared.
So two GETDATAs would be sent, which would make the test fail.

Fixes #31700

If we bump the mocktime before the node has successfully disconnected
the peer, the requests for both parents could be spread over
two GETDATAS, which would make the test fail.
@DrahtBot
Copy link
Contributor

DrahtBot commented Mar 13, 2025

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Code Coverage & Benchmarks

For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/32063.

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK maflcko, instagibbs

If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

@maflcko
Copy link
Member

maflcko commented Mar 16, 2025

lgtm ACK 0294205

@instagibbs
Copy link
Member

ACK 0294205

@fanquake fanquake merged commit 70a0ee8 into bitcoin:master Mar 16, 2025
18 checks passed
glozow pushed a commit to glozow/bitcoin that referenced this pull request Mar 17, 2025
If we bump the mocktime before the node has successfully disconnected
the peer, the requests for both parents could be spread over
two GETDATAS, which would make the test fail.

Github-Pull: bitcoin#32063
Rebased-From: 0294205
@glozow
Copy link
Member

glozow commented Mar 17, 2025

Backported in #32062

@mzumsande mzumsande deleted the 202503_test_fix_p2p_orphan branch March 17, 2025 03:21
@tnndbtc
Copy link

tnndbtc commented Mar 17, 2025

Hi @mzumsande , Followed your hint that the node needs to successfully disconnect the peer before bumping mocktime, I added one line of "debugging" code to reproduce the issue 100%: in src/net.cpp:CConnman::DisconnectNodes(), add a one second sleep before calling DeleteNode(pnode);

    {
        // Delete disconnected nodes
        std::list<CNode*> nodes_disconnected_copy = m_nodes_disconnected;
        for (CNode* pnode : nodes_disconnected_copy)
        {
            // Destroy the object only after other threads have stopped using it.
            if (pnode->GetRefCount() <= 0) {
                m_nodes_disconnected.remove(pnode);
                std::this_thread::sleep_for(std::chrono::seconds(1)); // SLEEP for 1 second to 100% reproduce the issue
                DeleteNode(pnode);
            }
        }
    }

So, even I added your fix of waiting until num_test_p2p_connections reduces to 1, the issue is still 100% reproducible on Mac with Apple M1 chipset with OS Sequoia 15.1.1:

        peer1.peer_disconnect()
        self.wait_until(lambda: node.num_test_p2p_connections() == 1)
        node.bumpmocktime(TXREQUEST_TIME_SKIP)

Then, I have moved the sleep 1 second AFTER DeleteNode(pnode); the issue is not reproducible.

I agree with the idea that we should wait until the CConnman::DisconnectNodes is fully completed. However, it seems like this PR needs more work to fully fix the timing issue.

To test with --timeout-factor=40.0:
build/test/functional/test_runner.py test/functional/p2p_orphan_handling.py --tmpdir /tmp --nocleanup --timeout-factor=40.0 --quiet --failfast --v2transport

1/1 - p2p_orphan_handling.py failed, Duration: 406 s

stdout:
2025-03-17T21:44:15.055000Z TestFramework (INFO): PRNG seed is: 836743966629972745
2025-03-17T21:44:15.055000Z TestFramework (INFO): Initializing test directory /tmp/test_runner_₿_🏃_20250317_174414/p2p_orphan_handling_0
2025-03-17T21:44:18.271000Z TestFramework (INFO): Test that, if a parent goes missing during orphan reso, it is requested
2025-03-17T21:50:59.940000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
def test_function():
if check_connected:
assert self.is_connected
return test_function_in()
'''
2025-03-17T21:51:01.048000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
File "/Users/masked/data/code/bitcoin/test/functional/test_framework/test_framework.py", line 135, in main
self.run_test()
~~~~~~~~~~~~~^^
File "/Users/masked/data/code/bitcoin/build/test/functional/p2p_orphan_handling.py", line 826, in run_test
self.test_parents_change()
~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/Users/masked/data/code/bitcoin/build/test/functional/p2p_orphan_handling.py", line 55, in wrapper
func(self)
~~~~^^^^^^
File "/Users/masked/data/code/bitcoin/build/test/functional/p2p_orphan_handling.py", line 797, in test_parents_change
peer2.wait_for_parent_requests([int(parent_peekaboo_AB["txid"], 16), int(parent_missing["txid"], 16)])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/masked/data/code/bitcoin/build/test/functional/p2p_orphan_handling.py", line 99, in wait_for_parent_requests
self.wait_until(test_function, timeout=10)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/masked/data/code/bitcoin/test/functional/test_framework/p2p.py", line 594, in wait_until
wait_until_helper_internal(test_function, timeout=timeout, lock=p2p_lock, timeout_factor=self.timeout_factor, check_interval=check_interval)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/masked/data/code/bitcoin/test/functional/test_framework/util.py", line 317, in wait_until_helper_internal
raise AssertionError("Predicate {} not true after {} seconds".format(predicate_source, timeout))
AssertionError: Predicate ''''
def test_function():
if check_connected:
assert self.is_connected
return test_function_in()
''' not true after 400.0 seconds
2025-03-17T21:51:01.106000Z TestFramework (INFO): Not stopping nodes as test failed. The dangling processes will be cleaned up later.
2025-03-17T21:51:01.106000Z TestFramework (WARNING): Not cleaning up dir /tmp/test_runner_₿_🏃_20250317_174414/p2p_orphan_handling_0
2025-03-17T21:51:01.106000Z TestFramework (ERROR): Test failed. Test logging available at /tmp/test_runner_₿_🏃_20250317_174414/p2p_orphan_handling_0/test_framework.log
2025-03-17T21:51:01.106000Z TestFramework (ERROR):
2025-03-17T21:51:01.106000Z TestFramework (ERROR): Hint: Call /Users/masked/data/code/bitcoin/test/functional/combine_logs.py '/tmp/test_runner_₿_🏃_20250317_174414/p2p_orphan_handling_0' to consolidate all logs
2025-03-17T21:51:01.106000Z TestFramework (ERROR):
2025-03-17T21:51:01.106000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-03-17T21:51:01.106000Z TestFramework (ERROR): https://github.com/bitcoin/bitcoin/issues
2025-03-17T21:51:01.106000Z TestFramework (ERROR):

stderr:
[node 0] Cleaning up leftover process

TEST | STATUS | DURATION

p2p_orphan_handling.py | ✖ Failed | 406 s

ALL | ✖ Failed | 406 s (accumulated)
Runtime: 406 s

CC: @glozow

@mzumsande
Copy link
Contributor Author

mzumsande commented Mar 17, 2025

Interesting - wouldn't that mean that disconnect_p2ps (which is used in a lot of places) has the same issue?

@tnndbtc
Copy link

tnndbtc commented Mar 17, 2025

@mzumsande I have another finding, if I move the calling of self.wait_until(lambda: len(node.getorphantxs(verbosity=2)[0]["from"]) == 1) before node.bumpmocktime(TXREQUEST_TIME_SKIP), then this issue is not reproducible even I set a longer sleep before calling DeleteNode(pnode);.

        # Disconnect peer1. peer2 should become the new candidate for orphan resolution.
        peer1.peer_disconnect()
        self.wait_until(lambda: len(node.getorphantxs(verbosity=2)[0]["from"]) == 1) # MOVE this check before bumpmocktime will greatly reduce the chance that DeleteNode(pnode); was called AFTER bumpmocktime.
        node.bumpmocktime(TXREQUEST_TIME_SKIP)

        # self.wait_until(lambda: len(node.getorphantxs(verbosity=2)[0]["from"]) == 1)
        # Both parents should be requested, now that they are both missing.
        peer2.wait_for_parent_requests([int(parent_peekaboo_AB["txid"], 16), int(parent_missing["txid"], 16)])
        peer2.send_and_ping(msg_tx(parent_missing["tx"]))
        peer2.send_and_ping(msg_tx(parent_peekaboo_AB["tx"]))

This code runs fine consistently.

Reason behind it is: DeleteNode(pnode); will actually disconnect the peer for the orphan transaction by calling TxOrphanage::EraseForPeer. When node.getorphantxs(verbosity=2)[0]["from"] shows 1 connection, the node at least is half way through DeleteNode(pnode);, if not completed. Call stack is:

    frame #0: 0x000000010360fb04 bitcoind`TxOrphanage::EraseForPeer(this=0x00006000014fe4a8, peer=0) at txorphanage.cpp:121:5
    frame #1: 0x00000001031f9fa8 bitcoind`node::TxDownloadManagerImpl::DisconnectedPeer(this=0x00006000014fe490, nodeid=0) at txdownloadman_impl.cpp:165:17
    frame #2: 0x00000001031f9f34 bitcoind`node::TxDownloadManager::DisconnectedPeer(this=0x0000000133055168, nodeid=0) at txdownloadman_impl.cpp:40:13
    frame #3: 0x0000000102ebb638 bitcoind`(anonymous namespace)::PeerManagerImpl::FinalizeNode(this=0x0000000133055000, node=0x000000013260b6c0) at net_processing.cpp:1601:25
    frame #4: 0x0000000102dec0bc bitcoind`CConnman::DeleteNode(this=0x0000000133009200, pnode=0x000000013260b6c0) at net.cpp:3494:16
    frame #5: 0x0000000102deb060 bitcoind`CConnman::DisconnectNodes(this=0x0000000133009200) at net.cpp:1969:17

Would you consider this as a potential solution?

CC: @hodlinator @maflcko @glozow

fanquake added a commit that referenced this pull request Mar 18, 2025
74df31c [doc] update example bitcoin.conf with missing options (glozow)
8082f88 [doc] update man pages for 29.0rc2 (glozow)
472d582 [build] bump to 29.0rc2 (glozow)
a4c30bd qt: doc: adapt outdated binary paths to CMake changes (Sebastian Falbesoner)
4e438d3 build: use make < 3.82 syntax for define directive (Sjors Provoost)
7ff0b02 build: Remove manpages when making MacOS app (Ava Chow)
5ebcb59 test: fix intermittent failure in p2p_orphan_handling.py (Martin Zumsande)
458655b fuzz: make sure DecodeBase58(Check) is called with valid values more often (Lőrinc)
15ecae3 fuzz: Always restrict base conversion input lengths (Lőrinc)
80c5d57 contrib: Fix `gen-bitcoin-conf.sh`. (David Gumberg)

Pull request description:

  backports:
  - #32049
  - #32063
  - #32064
  - #32070
  - #31917

ACKs for top commit:
  Sjors:
    ACK 74df31c
  hebasto:
    ACK 74df31c, I have reviewed the code and it looks OK.
  ismaelsadeeq:
    Code review ACK 74df31c

Tree-SHA512: df4ef832a03c9c3f89d30d3f65d81b7c7e4793d2cad8a269f1ff221454a4b0b05e06109f4556926c1c4f7fcbd2537052b4d58b4b3911dfcfc35726c600b587d9
@tnndbtc
Copy link

tnndbtc commented Mar 18, 2025

@mzumsande Regarding to your concerns on disconnect_p2ps, I took a look at the implementation of it in test/functional/test_framework/test_node.py:

    def disconnect_p2ps(self):
        """Close all p2p connections to the node.
        Use only after each p2p has sent a version message to ensure the wait works."""
        for p in self.p2ps:
            p.peer_disconnect()
        del self.p2ps[:]

        self.wait_until(lambda: self.num_test_p2p_connections() == 0)

After wait until self.num_test_p2p_connections() equals to 0, the CConnman::m_nodes becomes empty. However, it doesn't guarantee all underlying nodes have released its resources, or completed DeleteNode(pnode);

I don't know whether this is acceptable. But, I tried to move the erase of pnode from m_nodes AFTER DeleteNode(pnode); , it passes this test: test/functional/p2p_orphan_handling.py, but ran into other test failures.
feature_index_prune.py | ✖ Failed | 107 s
feature_pruning.py | ✖ Failed | 407 s
feature_signet.py | ✖ Failed | 3 s
p2p_ibd_stalling.py --v1transport | ✖ Failed | 86 s
p2p_invalid_messages.py | ✖ Failed | 2 s
rpc_net.py --v1transport | ✖ Failed | 2 s
rpc_net.py --v2transport | ✖ Failed | 4 s

    {           
        LOCK(m_nodes_mutex);
        ...
        ...
        ...
        // Disconnect unused nodes
        std::vector<CNode*> nodes_copy = m_nodes;
        for (CNode* pnode : nodes_copy)
        {
            if (pnode->fDisconnect)
            {
                // remove from m_nodes
                // m_nodes.erase(remove(m_nodes.begin(), m_nodes.end(), pnode), m_nodes.end());
        ...
        ...
        ...
    } 
    {
        // Delete disconnected nodes
        std::list<CNode*> nodes_disconnected_copy = m_nodes_disconnected;
        for (CNode* pnode : nodes_disconnected_copy)
        {
            // Destroy the object only after other threads have stopped using it.
            if (pnode->GetRefCount() <= 0) {
                // m_nodes_disconnected.remove(pnode);
                // std::this_thread::sleep_for(std::chrono::seconds(5));
                DeleteNode(pnode);
            }    
        }    
    } 
    {    
        // MOVE the erase of m_nodes AFTER DeleteNode(pnode);
        LOCK(m_nodes_mutex);

        // Delete disconnected nodes
        std::list<CNode*> nodes_disconnected_copy = m_nodes_disconnected;
        for (CNode* pnode : nodes_disconnected_copy)
        {    
            // Destroy the object only after other threads have stopped using it.
            m_nodes.erase(remove(m_nodes.begin(), m_nodes.end(), pnode), m_nodes.end());
            m_nodes_disconnected.remove(pnode);
        }    
    } 

So, I currently don't see a clean way to check that the p2p connections are fully dropped.

stickies-v added a commit to stickies-v/py-bitcoinkernel that referenced this pull request Mar 21, 2025
29f05b91cf8 kernel: Add pure kernel bitcoin-chainstate
b7733085a90 kernel: Add functions to get the block hash from a block
a4f79616064 kernel: Add block index utility functions to C header
0a0062b85a7 kernel: Add function to read block undo data from disk to C header
e49808a42d3 kernel: Add functions to read block from disk to C header
2f54bd53745 kernel: Add function for copying block data to C header
c34ecbefbd8 kernel: Add functions for the block validation state to C header
0b46337ebe3 kernel: Add validation interface to C header
4c7a81a030e kernel: Add interrupt function to C header
edf1d56fc05 kernel: Add import blocks function to C header
894b9c20447 kernel: Add chainstate load options for in-memory dbs in C header
157de0eccd3 kernel: Add options for reindexing in C header
bdff17958b1 kernel: Add block validation to C header
c52ca9447fc kernel: Add chainstate loading when instantiating a ChainstateManager
031a96dc6b7 kernel: Add chainstate manager option for setting worker threads
c2f03a11251 kernel: Add chainstate manager object to C header
18ec1cc195b kernel: Add notifications context option to C header
e3b03745f93 kernel: Add chain params context option to C header
ef426234c07 kernel: Add kernel library context object
2c5e6b55922 kernel: Add logging to kernel library C header
20f1f67de07 kernel: Introduce initial kernel C header API
998386d4462 Merge bitcoin/bitcoin#31866: test, refactor: Add TestNode.binaries to hold binary paths
aa87e0b4460 Merge bitcoin/bitcoin#31519: refactor: Use std::span over Span
ef525e8b7c1 Merge bitcoin/bitcoin#31457: fuzz: Speed up *_package_eval fuzz targets a bit
7d76c9725ca Merge bitcoin/bitcoin#31766: leveldb: pull upstream C++23 changes
780bcf80b5d Merge bitcoin/bitcoin#32091: test: replace assert with assert_equal and assert_greater_than
e568c1dd134 Merge bitcoin/bitcoin#32088: test: switch wallet_crosschain.py to signet and drop testnet4
e8f6a48e310 Merge bitcoin/bitcoin#32057: test: avoid disk space warning for non-regtest
387385ba1ed test: replace assert with assert_equal and assert_greater_than
d190f0facc8 test, contrib: Fix signer/miner command line escaping
223fc24c4eb Merge bitcoin/bitcoin#31603: descriptor: check whitespace in keys within fragments
0d2eefca8bf test, refactor: Add TestNode.binaries to hold binary paths
d61a847af0b Merge bitcoin/bitcoin#32019: cmake: Check for `makensis` and `zip` tools before using them for optional `deploy` targets
cec14ee47d7 test: switch wallet_crosschain.py to signet
9c2951541c2 test: drop testnet4 from wallet_crosschain.py
14fec6380dd Merge bitcoin/bitcoin#32059: test: Update coverage.cpp to drop linux restriction
ece0b41da6d Merge bitcoin/bitcoin#32087: ci: Drop ENABLE_HARDENING=OFF from clang-tidy
c9b633d1190 Merge bitcoin/bitcoin#31948: ci: [lint] Use Cirrus dockerfile cache
6245c235046 Merge bitcoin/bitcoin#32083: doc: shallow clone `qa-assets`
257fd27e4bb Merge bitcoin/bitcoin#32033: test: Check datadir cleanup after assumeutxo was successful
6f9f415a4fa doc: shallow clone qa-assets
db2c57ae9ee Merge bitcoin-core/gui#858: qt: doc: adapt outdated binary paths to CMake changes
c8fab356171 ci: remove -Wno-error=deprecated-declarations from ASAN
24fd0235e45 Update leveldb subtree to latest upstream
a130bbd154d Squashed 'src/leveldb/' changes from 04b5790928..4188247086
a799415d84d Merge bitcoin/bitcoin#31904: refactor: modernize outdated trait patterns using helper aliases (C++14/C++17)
5f4422d68dc Merge bitcoin/bitcoin#32010: qa: Fix TxIndex race conditions
52482cb2440 test: Check datadir cleanup after assumeutxo was successful
7ebc458a8cb qt: doc: adapt outdated binary paths to CMake changes
cd8089c20ba Merge bitcoin/bitcoin#32069: test: fix intermittent failure in wallet_reorgsrestore.py
70a0ee89c67 Merge bitcoin/bitcoin#32063: test: fix intermittent failure in p2p_orphan_handling.py
54e6eacc1fc test: Enable ResetCoverageCounters beyond Linux
83a9e55ae16 Merge bitcoin/bitcoin#32070: build: use make < 3.82 syntax for define directive
ca05b28710a Merge bitcoin/bitcoin#31859: test: Rename send_message to send_without_ping
ab2df1726ed Merge bitcoin/bitcoin#31917: fuzz: provide more realistic values to the base58(check) decoders
51a20e56c2f Merge bitcoin/bitcoin#31977: test: Use rpc_deprecated only for testing deprecation
fac3d93c2ba fuzz: Speed up *_package_eval fuzz targets a bit
fa40fd043ab fuzz: [refactor] Avoid confusing c-style cast
20fe41e9e83 test: avoid disk space warning for non-regtest
2819c514825 test: Use rpc_deprecated only for testing deprecation
7d34c19853e ci: Drop ENABLE_HARDENING=OFF from clang-tidy
9157d9e4498 build: use make < 3.82 syntax for define directive
36b0713edc4 test: fix intermittent failure in wallet_reorgsrestore.py
fa9cf38ab66 scripted-diff: test: Rename send_message to send_without_ping
fa4356717d6 test: Prefer send_and_ping over send_message+sync_with_ping
02942056fd8 test: fix intermittent failure in p2p_orphan_handling.py
1f9b2e150ce cmake: Require `zip` only for `deploy` target
0aeff299513 cmake: Check for `makensis` tool before using it
fa3b4427158 ci: Use Cirrus dockerfile cache
ffff4a293ad bench: Update span-serialize comment
fa4d6ec97bc refactor: Avoid false-positive gcc warning
fa942332b40 scripted-diff: Bump copyright headers after std::span changes
fa0c6b7179c refactor: Remove unused Span alias
fade0b5e5e6 scripted-diff: Use std::span over Span
fadccc26c03 refactor: Make Span an alias of std::span
fa27e36717e test: Fix broken span_tests
fadf02ef8bf refactor: Return std::span from MakeUCharSpan
fa720b94be1 refactor: Return std::span from MakeByteSpan
3301d2cbe8c qa: Wait for txindex to avoid race condition
9bfb0d75ba1 qa: Remove unnecessary -txindex args
7ac281c19cd qa: Add missing coverage of corrupt indexes
d5537c18a90 fuzz: make sure DecodeBase58(Check) is called with valid values more often
bad1433ef2b fuzz: Always restrict base conversion input lengths
21e9d39a372 docs: add release notes for 31603
a8b548d75d9 test: `getdescriptorinfo`/`importdescriptors` with whitespace in pubkeys
c7afca3d62c test: descriptor: check whitespace into keys
cb722a3cea1 descriptor: check whitespace in ParsePubkeyInner
4cd95a29218 refactor: modernize remaining outdated trait patterns
ab2b67fce20 scripted-diff: modernize outdated trait patterns - values
8327889f358 scripted-diff: modernize outdated trait patterns - types
50856695ef6 test: fix descriptors in `ismine_tests`
REVERT: 2dc27e2860b kernel: Add pure kernel bitcoin-chainstate
REVERT: 338126c048f kernel: Add functions to get the block hash from a block
REVERT: 56345a77968 kernel: Add block index utility functions to C header
REVERT: 9530f65d19b kernel: Add function to read block undo data from disk to C header
REVERT: f63860169fb kernel: Add functions to read block from disk to C header
REVERT: f3aa1f9bf0c kernel: Add function for copying block data to C header
REVERT: a70be77c908 kernel: Add functions for the block validation state to C header
REVERT: e4e3dc585a3 kernel: Add validation interface to C header
REVERT: d3c48b2bdc6 kernel: Add interrupt function to C header
REVERT: 7afbc516054 kernel: Add import blocks function to C header
REVERT: bad89c8b30b kernel: Add chainstate load options for in-memory dbs in C header
REVERT: 1dcedf3da97 kernel: Add options for reindexing in C header
REVERT: aeb68c7f022 kernel: Add block validation to C header
REVERT: 99136eb1656 kernel: Add chainstate loading when instantiating a ChainstateManager
REVERT: 0a2117ed501 kernel: Add chainstate manager option for setting worker threads
REVERT: 599dc235e98 kernel: Add chainstate manager object to C header
REVERT: f280a5f3ab8 kernel: Add notifications context option to C header
REVERT: 6701d12b017 kernel: Add chain params context option to C header
REVERT: f40f037a9cd kernel: Add kernel library context object
REVERT: 7a6c5c7abf2 kernel: Add logging to kernel library C header
REVERT: 4d663446de1 kernel: Introduce initial kernel C header API

git-subtree-dir: depend/bitcoin
git-subtree-split: 29f05b91cf8a479e403b0322afeb5ff1133da221
stickies-v added a commit to stickies-v/py-bitcoinkernel that referenced this pull request Mar 21, 2025
29f05b91cf8 kernel: Add pure kernel bitcoin-chainstate
b7733085a90 kernel: Add functions to get the block hash from a block
a4f79616064 kernel: Add block index utility functions to C header
0a0062b85a7 kernel: Add function to read block undo data from disk to C header
e49808a42d3 kernel: Add functions to read block from disk to C header
2f54bd53745 kernel: Add function for copying block data to C header
c34ecbefbd8 kernel: Add functions for the block validation state to C header
0b46337ebe3 kernel: Add validation interface to C header
4c7a81a030e kernel: Add interrupt function to C header
edf1d56fc05 kernel: Add import blocks function to C header
894b9c20447 kernel: Add chainstate load options for in-memory dbs in C header
157de0eccd3 kernel: Add options for reindexing in C header
bdff17958b1 kernel: Add block validation to C header
c52ca9447fc kernel: Add chainstate loading when instantiating a ChainstateManager
031a96dc6b7 kernel: Add chainstate manager option for setting worker threads
c2f03a11251 kernel: Add chainstate manager object to C header
18ec1cc195b kernel: Add notifications context option to C header
e3b03745f93 kernel: Add chain params context option to C header
ef426234c07 kernel: Add kernel library context object
2c5e6b55922 kernel: Add logging to kernel library C header
20f1f67de07 kernel: Introduce initial kernel C header API
998386d4462 Merge bitcoin/bitcoin#31866: test, refactor: Add TestNode.binaries to hold binary paths
aa87e0b4460 Merge bitcoin/bitcoin#31519: refactor: Use std::span over Span
ef525e8b7c1 Merge bitcoin/bitcoin#31457: fuzz: Speed up *_package_eval fuzz targets a bit
7d76c9725ca Merge bitcoin/bitcoin#31766: leveldb: pull upstream C++23 changes
780bcf80b5d Merge bitcoin/bitcoin#32091: test: replace assert with assert_equal and assert_greater_than
e568c1dd134 Merge bitcoin/bitcoin#32088: test: switch wallet_crosschain.py to signet and drop testnet4
e8f6a48e310 Merge bitcoin/bitcoin#32057: test: avoid disk space warning for non-regtest
387385ba1ed test: replace assert with assert_equal and assert_greater_than
d190f0facc8 test, contrib: Fix signer/miner command line escaping
223fc24c4eb Merge bitcoin/bitcoin#31603: descriptor: check whitespace in keys within fragments
0d2eefca8bf test, refactor: Add TestNode.binaries to hold binary paths
d61a847af0b Merge bitcoin/bitcoin#32019: cmake: Check for `makensis` and `zip` tools before using them for optional `deploy` targets
cec14ee47d7 test: switch wallet_crosschain.py to signet
9c2951541c2 test: drop testnet4 from wallet_crosschain.py
14fec6380dd Merge bitcoin/bitcoin#32059: test: Update coverage.cpp to drop linux restriction
ece0b41da6d Merge bitcoin/bitcoin#32087: ci: Drop ENABLE_HARDENING=OFF from clang-tidy
c9b633d1190 Merge bitcoin/bitcoin#31948: ci: [lint] Use Cirrus dockerfile cache
6245c235046 Merge bitcoin/bitcoin#32083: doc: shallow clone `qa-assets`
257fd27e4bb Merge bitcoin/bitcoin#32033: test: Check datadir cleanup after assumeutxo was successful
6f9f415a4fa doc: shallow clone qa-assets
db2c57ae9ee Merge bitcoin-core/gui#858: qt: doc: adapt outdated binary paths to CMake changes
c8fab356171 ci: remove -Wno-error=deprecated-declarations from ASAN
24fd0235e45 Update leveldb subtree to latest upstream
a130bbd154d Squashed 'src/leveldb/' changes from 04b5790928..4188247086
a799415d84d Merge bitcoin/bitcoin#31904: refactor: modernize outdated trait patterns using helper aliases (C++14/C++17)
5f4422d68dc Merge bitcoin/bitcoin#32010: qa: Fix TxIndex race conditions
52482cb2440 test: Check datadir cleanup after assumeutxo was successful
7ebc458a8cb qt: doc: adapt outdated binary paths to CMake changes
cd8089c20ba Merge bitcoin/bitcoin#32069: test: fix intermittent failure in wallet_reorgsrestore.py
70a0ee89c67 Merge bitcoin/bitcoin#32063: test: fix intermittent failure in p2p_orphan_handling.py
54e6eacc1fc test: Enable ResetCoverageCounters beyond Linux
83a9e55ae16 Merge bitcoin/bitcoin#32070: build: use make < 3.82 syntax for define directive
ca05b28710a Merge bitcoin/bitcoin#31859: test: Rename send_message to send_without_ping
ab2df1726ed Merge bitcoin/bitcoin#31917: fuzz: provide more realistic values to the base58(check) decoders
51a20e56c2f Merge bitcoin/bitcoin#31977: test: Use rpc_deprecated only for testing deprecation
fac3d93c2ba fuzz: Speed up *_package_eval fuzz targets a bit
fa40fd043ab fuzz: [refactor] Avoid confusing c-style cast
20fe41e9e83 test: avoid disk space warning for non-regtest
2819c514825 test: Use rpc_deprecated only for testing deprecation
7d34c19853e ci: Drop ENABLE_HARDENING=OFF from clang-tidy
9157d9e4498 build: use make < 3.82 syntax for define directive
36b0713edc4 test: fix intermittent failure in wallet_reorgsrestore.py
fa9cf38ab66 scripted-diff: test: Rename send_message to send_without_ping
fa4356717d6 test: Prefer send_and_ping over send_message+sync_with_ping
02942056fd8 test: fix intermittent failure in p2p_orphan_handling.py
1f9b2e150ce cmake: Require `zip` only for `deploy` target
0aeff299513 cmake: Check for `makensis` tool before using it
fa3b4427158 ci: Use Cirrus dockerfile cache
ffff4a293ad bench: Update span-serialize comment
fa4d6ec97bc refactor: Avoid false-positive gcc warning
fa942332b40 scripted-diff: Bump copyright headers after std::span changes
fa0c6b7179c refactor: Remove unused Span alias
fade0b5e5e6 scripted-diff: Use std::span over Span
fadccc26c03 refactor: Make Span an alias of std::span
fa27e36717e test: Fix broken span_tests
fadf02ef8bf refactor: Return std::span from MakeUCharSpan
fa720b94be1 refactor: Return std::span from MakeByteSpan
3301d2cbe8c qa: Wait for txindex to avoid race condition
9bfb0d75ba1 qa: Remove unnecessary -txindex args
7ac281c19cd qa: Add missing coverage of corrupt indexes
d5537c18a90 fuzz: make sure DecodeBase58(Check) is called with valid values more often
bad1433ef2b fuzz: Always restrict base conversion input lengths
21e9d39a372 docs: add release notes for 31603
a8b548d75d9 test: `getdescriptorinfo`/`importdescriptors` with whitespace in pubkeys
c7afca3d62c test: descriptor: check whitespace into keys
cb722a3cea1 descriptor: check whitespace in ParsePubkeyInner
4cd95a29218 refactor: modernize remaining outdated trait patterns
ab2b67fce20 scripted-diff: modernize outdated trait patterns - values
8327889f358 scripted-diff: modernize outdated trait patterns - types
50856695ef6 test: fix descriptors in `ismine_tests`
REVERT: 2dc27e2860b kernel: Add pure kernel bitcoin-chainstate
REVERT: 338126c048f kernel: Add functions to get the block hash from a block
REVERT: 56345a77968 kernel: Add block index utility functions to C header
REVERT: 9530f65d19b kernel: Add function to read block undo data from disk to C header
REVERT: f63860169fb kernel: Add functions to read block from disk to C header
REVERT: f3aa1f9bf0c kernel: Add function for copying block data to C header
REVERT: a70be77c908 kernel: Add functions for the block validation state to C header
REVERT: e4e3dc585a3 kernel: Add validation interface to C header
REVERT: d3c48b2bdc6 kernel: Add interrupt function to C header
REVERT: 7afbc516054 kernel: Add import blocks function to C header
REVERT: bad89c8b30b kernel: Add chainstate load options for in-memory dbs in C header
REVERT: 1dcedf3da97 kernel: Add options for reindexing in C header
REVERT: aeb68c7f022 kernel: Add block validation to C header
REVERT: 99136eb1656 kernel: Add chainstate loading when instantiating a ChainstateManager
REVERT: 0a2117ed501 kernel: Add chainstate manager option for setting worker threads
REVERT: 599dc235e98 kernel: Add chainstate manager object to C header
REVERT: f280a5f3ab8 kernel: Add notifications context option to C header
REVERT: 6701d12b017 kernel: Add chain params context option to C header
REVERT: f40f037a9cd kernel: Add kernel library context object
REVERT: 7a6c5c7abf2 kernel: Add logging to kernel library C header
REVERT: 4d663446de1 kernel: Introduce initial kernel C header API

git-subtree-dir: depend/bitcoin
git-subtree-split: 29f05b91cf8a479e403b0322afeb5ff1133da221
stickies-v added a commit to stickies-v/py-bitcoinkernel that referenced this pull request Mar 21, 2025
29f05b91cf8 kernel: Add pure kernel bitcoin-chainstate
b7733085a90 kernel: Add functions to get the block hash from a block
a4f79616064 kernel: Add block index utility functions to C header
0a0062b85a7 kernel: Add function to read block undo data from disk to C header
e49808a42d3 kernel: Add functions to read block from disk to C header
2f54bd53745 kernel: Add function for copying block data to C header
c34ecbefbd8 kernel: Add functions for the block validation state to C header
0b46337ebe3 kernel: Add validation interface to C header
4c7a81a030e kernel: Add interrupt function to C header
edf1d56fc05 kernel: Add import blocks function to C header
894b9c20447 kernel: Add chainstate load options for in-memory dbs in C header
157de0eccd3 kernel: Add options for reindexing in C header
bdff17958b1 kernel: Add block validation to C header
c52ca9447fc kernel: Add chainstate loading when instantiating a ChainstateManager
031a96dc6b7 kernel: Add chainstate manager option for setting worker threads
c2f03a11251 kernel: Add chainstate manager object to C header
18ec1cc195b kernel: Add notifications context option to C header
e3b03745f93 kernel: Add chain params context option to C header
ef426234c07 kernel: Add kernel library context object
2c5e6b55922 kernel: Add logging to kernel library C header
20f1f67de07 kernel: Introduce initial kernel C header API
998386d4462 Merge bitcoin/bitcoin#31866: test, refactor: Add TestNode.binaries to hold binary paths
aa87e0b4460 Merge bitcoin/bitcoin#31519: refactor: Use std::span over Span
ef525e8b7c1 Merge bitcoin/bitcoin#31457: fuzz: Speed up *_package_eval fuzz targets a bit
7d76c9725ca Merge bitcoin/bitcoin#31766: leveldb: pull upstream C++23 changes
780bcf80b5d Merge bitcoin/bitcoin#32091: test: replace assert with assert_equal and assert_greater_than
e568c1dd134 Merge bitcoin/bitcoin#32088: test: switch wallet_crosschain.py to signet and drop testnet4
e8f6a48e310 Merge bitcoin/bitcoin#32057: test: avoid disk space warning for non-regtest
387385ba1ed test: replace assert with assert_equal and assert_greater_than
d190f0facc8 test, contrib: Fix signer/miner command line escaping
223fc24c4eb Merge bitcoin/bitcoin#31603: descriptor: check whitespace in keys within fragments
0d2eefca8bf test, refactor: Add TestNode.binaries to hold binary paths
d61a847af0b Merge bitcoin/bitcoin#32019: cmake: Check for `makensis` and `zip` tools before using them for optional `deploy` targets
cec14ee47d7 test: switch wallet_crosschain.py to signet
9c2951541c2 test: drop testnet4 from wallet_crosschain.py
14fec6380dd Merge bitcoin/bitcoin#32059: test: Update coverage.cpp to drop linux restriction
ece0b41da6d Merge bitcoin/bitcoin#32087: ci: Drop ENABLE_HARDENING=OFF from clang-tidy
c9b633d1190 Merge bitcoin/bitcoin#31948: ci: [lint] Use Cirrus dockerfile cache
6245c235046 Merge bitcoin/bitcoin#32083: doc: shallow clone `qa-assets`
257fd27e4bb Merge bitcoin/bitcoin#32033: test: Check datadir cleanup after assumeutxo was successful
6f9f415a4fa doc: shallow clone qa-assets
db2c57ae9ee Merge bitcoin-core/gui#858: qt: doc: adapt outdated binary paths to CMake changes
c8fab356171 ci: remove -Wno-error=deprecated-declarations from ASAN
24fd0235e45 Update leveldb subtree to latest upstream
a130bbd154d Squashed 'src/leveldb/' changes from 04b5790928..4188247086
a799415d84d Merge bitcoin/bitcoin#31904: refactor: modernize outdated trait patterns using helper aliases (C++14/C++17)
5f4422d68dc Merge bitcoin/bitcoin#32010: qa: Fix TxIndex race conditions
52482cb2440 test: Check datadir cleanup after assumeutxo was successful
7ebc458a8cb qt: doc: adapt outdated binary paths to CMake changes
cd8089c20ba Merge bitcoin/bitcoin#32069: test: fix intermittent failure in wallet_reorgsrestore.py
70a0ee89c67 Merge bitcoin/bitcoin#32063: test: fix intermittent failure in p2p_orphan_handling.py
54e6eacc1fc test: Enable ResetCoverageCounters beyond Linux
83a9e55ae16 Merge bitcoin/bitcoin#32070: build: use make < 3.82 syntax for define directive
ca05b28710a Merge bitcoin/bitcoin#31859: test: Rename send_message to send_without_ping
ab2df1726ed Merge bitcoin/bitcoin#31917: fuzz: provide more realistic values to the base58(check) decoders
51a20e56c2f Merge bitcoin/bitcoin#31977: test: Use rpc_deprecated only for testing deprecation
fac3d93c2ba fuzz: Speed up *_package_eval fuzz targets a bit
fa40fd043ab fuzz: [refactor] Avoid confusing c-style cast
20fe41e9e83 test: avoid disk space warning for non-regtest
2819c514825 test: Use rpc_deprecated only for testing deprecation
7d34c19853e ci: Drop ENABLE_HARDENING=OFF from clang-tidy
9157d9e4498 build: use make < 3.82 syntax for define directive
36b0713edc4 test: fix intermittent failure in wallet_reorgsrestore.py
fa9cf38ab66 scripted-diff: test: Rename send_message to send_without_ping
fa4356717d6 test: Prefer send_and_ping over send_message+sync_with_ping
02942056fd8 test: fix intermittent failure in p2p_orphan_handling.py
1f9b2e150ce cmake: Require `zip` only for `deploy` target
0aeff299513 cmake: Check for `makensis` tool before using it
fa3b4427158 ci: Use Cirrus dockerfile cache
ffff4a293ad bench: Update span-serialize comment
fa4d6ec97bc refactor: Avoid false-positive gcc warning
fa942332b40 scripted-diff: Bump copyright headers after std::span changes
fa0c6b7179c refactor: Remove unused Span alias
fade0b5e5e6 scripted-diff: Use std::span over Span
fadccc26c03 refactor: Make Span an alias of std::span
fa27e36717e test: Fix broken span_tests
fadf02ef8bf refactor: Return std::span from MakeUCharSpan
fa720b94be1 refactor: Return std::span from MakeByteSpan
3301d2cbe8c qa: Wait for txindex to avoid race condition
9bfb0d75ba1 qa: Remove unnecessary -txindex args
7ac281c19cd qa: Add missing coverage of corrupt indexes
d5537c18a90 fuzz: make sure DecodeBase58(Check) is called with valid values more often
bad1433ef2b fuzz: Always restrict base conversion input lengths
21e9d39a372 docs: add release notes for 31603
a8b548d75d9 test: `getdescriptorinfo`/`importdescriptors` with whitespace in pubkeys
c7afca3d62c test: descriptor: check whitespace into keys
cb722a3cea1 descriptor: check whitespace in ParsePubkeyInner
4cd95a29218 refactor: modernize remaining outdated trait patterns
ab2b67fce20 scripted-diff: modernize outdated trait patterns - values
8327889f358 scripted-diff: modernize outdated trait patterns - types
50856695ef6 test: fix descriptors in `ismine_tests`
REVERT: 2dc27e2860b kernel: Add pure kernel bitcoin-chainstate
REVERT: 338126c048f kernel: Add functions to get the block hash from a block
REVERT: 56345a77968 kernel: Add block index utility functions to C header
REVERT: 9530f65d19b kernel: Add function to read block undo data from disk to C header
REVERT: f63860169fb kernel: Add functions to read block from disk to C header
REVERT: f3aa1f9bf0c kernel: Add function for copying block data to C header
REVERT: a70be77c908 kernel: Add functions for the block validation state to C header
REVERT: e4e3dc585a3 kernel: Add validation interface to C header
REVERT: d3c48b2bdc6 kernel: Add interrupt function to C header
REVERT: 7afbc516054 kernel: Add import blocks function to C header
REVERT: bad89c8b30b kernel: Add chainstate load options for in-memory dbs in C header
REVERT: 1dcedf3da97 kernel: Add options for reindexing in C header
REVERT: aeb68c7f022 kernel: Add block validation to C header
REVERT: 99136eb1656 kernel: Add chainstate loading when instantiating a ChainstateManager
REVERT: 0a2117ed501 kernel: Add chainstate manager option for setting worker threads
REVERT: 599dc235e98 kernel: Add chainstate manager object to C header
REVERT: f280a5f3ab8 kernel: Add notifications context option to C header
REVERT: 6701d12b017 kernel: Add chain params context option to C header
REVERT: f40f037a9cd kernel: Add kernel library context object
REVERT: 7a6c5c7abf2 kernel: Add logging to kernel library C header
REVERT: 4d663446de1 kernel: Introduce initial kernel C header API

git-subtree-dir: depend/bitcoin
git-subtree-split: 29f05b91cf8a479e403b0322afeb5ff1133da221
TheCharlatan added a commit to TheCharlatan/rust-bitcoinkernel that referenced this pull request Mar 24, 2025
…f05b91cf8

29f05b91cf8 kernel: Add pure kernel bitcoin-chainstate
b7733085a90 kernel: Add functions to get the block hash from a block
a4f79616064 kernel: Add block index utility functions to C header
0a0062b85a7 kernel: Add function to read block undo data from disk to C header
e49808a42d3 kernel: Add functions to read block from disk to C header
2f54bd53745 kernel: Add function for copying block data to C header
c34ecbefbd8 kernel: Add functions for the block validation state to C header
0b46337ebe3 kernel: Add validation interface to C header
4c7a81a030e kernel: Add interrupt function to C header
edf1d56fc05 kernel: Add import blocks function to C header
894b9c20447 kernel: Add chainstate load options for in-memory dbs in C header
157de0eccd3 kernel: Add options for reindexing in C header
bdff17958b1 kernel: Add block validation to C header
c52ca9447fc kernel: Add chainstate loading when instantiating a ChainstateManager
031a96dc6b7 kernel: Add chainstate manager option for setting worker threads
c2f03a11251 kernel: Add chainstate manager object to C header
18ec1cc195b kernel: Add notifications context option to C header
e3b03745f93 kernel: Add chain params context option to C header
ef426234c07 kernel: Add kernel library context object
2c5e6b55922 kernel: Add logging to kernel library C header
20f1f67de07 kernel: Introduce initial kernel C header API
998386d4462 Merge bitcoin/bitcoin#31866: test, refactor: Add TestNode.binaries to hold binary paths
aa87e0b4460 Merge bitcoin/bitcoin#31519: refactor: Use std::span over Span
ef525e8b7c1 Merge bitcoin/bitcoin#31457: fuzz: Speed up *_package_eval fuzz targets a bit
7d76c9725ca Merge bitcoin/bitcoin#31766: leveldb: pull upstream C++23 changes
780bcf80b5d Merge bitcoin/bitcoin#32091: test: replace assert with assert_equal and assert_greater_than
e568c1dd134 Merge bitcoin/bitcoin#32088: test: switch wallet_crosschain.py to signet and drop testnet4
e8f6a48e310 Merge bitcoin/bitcoin#32057: test: avoid disk space warning for non-regtest
387385ba1ed test: replace assert with assert_equal and assert_greater_than
d190f0facc8 test, contrib: Fix signer/miner command line escaping
223fc24c4eb Merge bitcoin/bitcoin#31603: descriptor: check whitespace in keys within fragments
0d2eefca8bf test, refactor: Add TestNode.binaries to hold binary paths
d61a847af0b Merge bitcoin/bitcoin#32019: cmake: Check for `makensis` and `zip` tools before using them for optional `deploy` targets
cec14ee47d7 test: switch wallet_crosschain.py to signet
9c2951541c2 test: drop testnet4 from wallet_crosschain.py
14fec6380dd Merge bitcoin/bitcoin#32059: test: Update coverage.cpp to drop linux restriction
ece0b41da6d Merge bitcoin/bitcoin#32087: ci: Drop ENABLE_HARDENING=OFF from clang-tidy
c9b633d1190 Merge bitcoin/bitcoin#31948: ci: [lint] Use Cirrus dockerfile cache
6245c235046 Merge bitcoin/bitcoin#32083: doc: shallow clone `qa-assets`
257fd27e4bb Merge bitcoin/bitcoin#32033: test: Check datadir cleanup after assumeutxo was successful
6f9f415a4fa doc: shallow clone qa-assets
db2c57ae9ee Merge bitcoin-core/gui#858: qt: doc: adapt outdated binary paths to CMake changes
c8fab356171 ci: remove -Wno-error=deprecated-declarations from ASAN
24fd0235e45 Update leveldb subtree to latest upstream
a130bbd154d Squashed 'src/leveldb/' changes from 04b5790928..4188247086
a799415d84d Merge bitcoin/bitcoin#31904: refactor: modernize outdated trait patterns using helper aliases (C++14/C++17)
5f4422d68dc Merge bitcoin/bitcoin#32010: qa: Fix TxIndex race conditions
52482cb2440 test: Check datadir cleanup after assumeutxo was successful
7ebc458a8cb qt: doc: adapt outdated binary paths to CMake changes
cd8089c20ba Merge bitcoin/bitcoin#32069: test: fix intermittent failure in wallet_reorgsrestore.py
70a0ee89c67 Merge bitcoin/bitcoin#32063: test: fix intermittent failure in p2p_orphan_handling.py
54e6eacc1fc test: Enable ResetCoverageCounters beyond Linux
83a9e55ae16 Merge bitcoin/bitcoin#32070: build: use make < 3.82 syntax for define directive
ca05b28710a Merge bitcoin/bitcoin#31859: test: Rename send_message to send_without_ping
ab2df1726ed Merge bitcoin/bitcoin#31917: fuzz: provide more realistic values to the base58(check) decoders
51a20e56c2f Merge bitcoin/bitcoin#31977: test: Use rpc_deprecated only for testing deprecation
fac3d93c2ba fuzz: Speed up *_package_eval fuzz targets a bit
fa40fd043ab fuzz: [refactor] Avoid confusing c-style cast
20fe41e9e83 test: avoid disk space warning for non-regtest
2819c514825 test: Use rpc_deprecated only for testing deprecation
7d34c19853e ci: Drop ENABLE_HARDENING=OFF from clang-tidy
9157d9e4498 build: use make < 3.82 syntax for define directive
36b0713edc4 test: fix intermittent failure in wallet_reorgsrestore.py
fa9cf38ab66 scripted-diff: test: Rename send_message to send_without_ping
fa4356717d6 test: Prefer send_and_ping over send_message+sync_with_ping
02942056fd8 test: fix intermittent failure in p2p_orphan_handling.py
1f9b2e150ce cmake: Require `zip` only for `deploy` target
0aeff299513 cmake: Check for `makensis` tool before using it
fa3b4427158 ci: Use Cirrus dockerfile cache
ffff4a293ad bench: Update span-serialize comment
fa4d6ec97bc refactor: Avoid false-positive gcc warning
fa942332b40 scripted-diff: Bump copyright headers after std::span changes
fa0c6b7179c refactor: Remove unused Span alias
fade0b5e5e6 scripted-diff: Use std::span over Span
fadccc26c03 refactor: Make Span an alias of std::span
fa27e36717e test: Fix broken span_tests
fadf02ef8bf refactor: Return std::span from MakeUCharSpan
fa720b94be1 refactor: Return std::span from MakeByteSpan
3301d2cbe8c qa: Wait for txindex to avoid race condition
9bfb0d75ba1 qa: Remove unnecessary -txindex args
7ac281c19cd qa: Add missing coverage of corrupt indexes
d5537c18a90 fuzz: make sure DecodeBase58(Check) is called with valid values more often
bad1433ef2b fuzz: Always restrict base conversion input lengths
21e9d39a372 docs: add release notes for 31603
a8b548d75d9 test: `getdescriptorinfo`/`importdescriptors` with whitespace in pubkeys
c7afca3d62c test: descriptor: check whitespace into keys
cb722a3cea1 descriptor: check whitespace in ParsePubkeyInner
4cd95a29218 refactor: modernize remaining outdated trait patterns
ab2b67fce20 scripted-diff: modernize outdated trait patterns - values
8327889f358 scripted-diff: modernize outdated trait patterns - types
50856695ef6 test: fix descriptors in `ismine_tests`
REVERT: 5991a69ee00 kernel: Add pure kernel bitcoin-chainstate
REVERT: 05b7d136684 kernel: Add functions to get the block hash from a block
REVERT: f18c792d843 kernel: Add block index utility functions to C header
REVERT: 89f5bf04673 kernel: Add function to read block undo data from disk to C header
REVERT: b4f71fc64e7 kernel: Add functions to read block from disk to C header
REVERT: 41306f081ad kernel: Add function for copying  block data to C header
REVERT: 9385d9fc87e kernel: Add functions for the block validation state to C header
REVERT: 0bd9a710358 kernel: Add validation interface to C header
REVERT: 432710f3fc3 kernel: Add interrupt function to C header
REVERT: cb164ae1eb2 kernel: Add import blocks function to C header
REVERT: abd67fd93d0 kernel: Add chainstate load options for in-memory dbs in C header
REVERT: b98c2748e94 kernel: Add options for reindexing in C header
REVERT: 9d0efe1fc86 kernel: Add block validation to C header
REVERT: 87e364fc1ec kernel: Add chainstate loading when instantiating a ChainstateManager
REVERT: df1599b2d2a kernel: Add chainstate manager option for setting worker threads
REVERT: fb767002e97 kernel: Add chainstate manager object to C header
REVERT: 10b0fad2fd3 kernel: Add notifications context option to C header
REVERT: 39e7ad8d0dc kernel: Add chain params context option to C header
REVERT: 6285c353b89 kernel: Add kernel library context object
REVERT: 98d10160b6a kernel: Add logging to kernel library C header
REVERT: 4d663446de1 kernel: Introduce initial kernel C header API

git-subtree-dir: libbitcoinkernel-sys/bitcoin
git-subtree-split: 29f05b91cf8a479e403b0322afeb5ff1133da221
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

intermittent issue in p2p_orphan_handling.py
7 participants