Skip to content

Conversation

@maflcko
Copy link
Member

@maflcko maflcko commented Oct 28, 2025

Consensus code should arrive at the same conclusion, regardless of the architecture it runs on. Using architecture-specific types such as size_t can lead to issues, such as the low-severity CVE-2025-46597.

The CVE was already worked around, but it may be good to still fix the underlying issue.

Fixes #33709 with a few refactors to use explicit fixed-sized integer types in serialization-size related code and concluding with a refactor to return uint64_t from GetSerializeSize. The refactors should not change any behavior, because the CVE was already worked around.

MarcoFalke added 3 commits October 28, 2025 16:08
The serialize related methods were removed in commit
30007fd.

If someone wants to see the tested methods, they can just read the test
itself, instead of relying on the wrong comment.
The values are small enough to fit in an int, so the cast is at best
redundant. However, UniValue can handle any integer type, so having to
think about the cast here is also confusing.
Also, move it to the blockstorage module, because it is only used inside
that module.

Can be reviewed with the git option --color-moved=dimmed-zebra
@DrahtBot DrahtBot changed the title refactor: Return uint64_t from GetSerializeSize refactor: Return uint64_t from GetSerializeSize Oct 28, 2025
@DrahtBot
Copy link
Contributor

DrahtBot commented Oct 28, 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/33724.

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK Crypt-iQ, l0rinc, laanwj
Concept ACK darosior, hebasto

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

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #33591 (Cluster mempool followups by sdaftuar)

If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

@darosior
Copy link
Member

Concept ACK.

Copy link
Member

@hebasto hebasto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concept ACK.

@l0rinc
Copy link
Contributor

l0rinc commented Oct 28, 2025

Concept ACK (only reviewed it lightly) - thanks for taking care of this, I will get back and review it more thoroughly!

@@ -13,16 +13,16 @@

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In commit fa128d1488c08d9816f425c73d01db4c1597ee68:

Would the return type of GetTotalSize fit into the criteria for this refactor?

diff --git a/src/blockencodings.cpp b/src/blockencodings.cpp
index cf6da55aa9..9d50dfe949 100644
--- a/src/blockencodings.cpp
+++ b/src/blockencodings.cpp
@@ -195 +195 @@ ReadStatus PartiallyDownloadedBlock::FillBlock(CBlock& block, const std::vector<
-    unsigned int tx_missing_size = 0;
+    uint32_t tx_missing_size = 0;
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index 80902b9e9c..cfb5f80f6a 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -2474 +2474 @@ void PeerManagerImpl::SendBlockTransactions(CNode& pfrom, Peer& peer, const CBlo
-    unsigned int tx_requested_size = 0;
+    uint32_t tx_requested_size = 0;
diff --git a/src/primitives/transaction.cpp b/src/primitives/transaction.cpp
index e80ab60fcd..10c9361850 100644
--- a/src/primitives/transaction.cpp
+++ b/src/primitives/transaction.cpp
@@ -110 +110 @@ CAmount CTransaction::GetValueOut() const
-unsigned int CTransaction::GetTotalSize() const
+uint32_t CTransaction::GetTotalSize() const

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question. I wanted to keep it limited to member fields (and their constructors) only. Otherwise, there'd be way too many function calls to touch. Happy to do those in a follow-up. Also, happy to drop the src/node/blockstorage.cpp changes from this commit, to keep it more focussed on just member fields.

Copy link
Contributor

@l0rinc l0rinc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the focused commits with good explanations.

I would like to suggest to consider something slightly simpler that may fit the data better.
We're storing these serialized sizes as 64 bits to avoid having to cast when we multiply the value. But we're always serializing these sizes as either variable length ints or 32 bit ones, so it's a bit awkward that a method returns 64 bit value and we just have to remember to cast them to 32 at call sites (otherwise they would serialize incorrectly in a few places).
And we're never actually multiplying by literals, so if we bump the multiplier to 64 bits (see branch below) and keep the serialization sizes at 32, we can avoid call-site casts and fx the overflow for free.

I have recreated the entire change locally and compared it against your implementation and based on that added a few suggestion, please see them at l0rinc@9bb1597. They're not necessarily all suggestions, some are just alternatives or nits, but please consider them. There are still a few inconsistencies that I would like to see patched here - and hope we can propagate these using the appropriate type instead of up-casting just to be absolutely sure...

@@ -222,9 +202,9 @@ size_t BlockFilterIndex::WriteFilterToDisk(FlatFilePos& pos, const BlockFilter&
{
assert(filter.GetFilterType() == GetFilterType());

size_t data_size =
uint64_t data_size{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This value will be returned and converted to a size_t again

Correct, but this is safe, because the range was checked in the if below.

Generally, the idea is that 32-bits is just not really enough to do size accounting (even on 32-bit architectures), because some code paths may accumulate sizes over time, or multiply them with a factor, all of which may or may not overflow the limited 32-bit value.

So using 64-bit arithmetic is overall safer, and more future proof, because current and future reviewers have to think less about whether a 32-bit value may or may not overflow when doing arithmetic with it.

Obviously, many 64-bit values will need to be cast to 32-bit later on for serialization, but this is generally only done after checking their range to ensure a safe cast. For example, in this case it is:

    if (pos.nPos + data_size > MAX_FLTR_FILE_SIZE) {

nPos and MAX_FLTR_FILE_SIZE are 32-bit values, so if data_size was also 32-bit, the sum could overflow (theoretically) and incorrectly pass the if guard. Using 64-bit values here seems safer.

I see in your branch that you want to change MAX_FLTR_FILE_SIZE to be 32-bit explicitly. However, I think it is safer to change it to 64-bit (or leave it as-is and rely on data_size being 64-bit).

Copy link
Member

@laanwj laanwj Nov 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally we should not use size_t anywhere for on-disk sizes and offsets in the first place. It's meant for counters and in-memory sizes, at most. Files should always be 64-bit. But it's probably not worth changing all of that in places where we don't actually expect to work with large files.

MarcoFalke added 3 commits October 30, 2025 17:51
Bitcoin Core already assumes that 'unsigned int' means uint32_t and
'signed int' means int32_t. See src/compat/assumptions.h. Also, any
serialized integral value must be of a fixed size.

So make the fixed size explicit in this documenting refactor, which does
not change the behavior on any platform.
The values are small enough to fit in size_t, but to avoid having to
think about it, just use uint64_t consistently for all architectures.

On 64-bit systems, this refactor is a no-op. On 32-bit systems, it could
avoid bugs in the theoretical and unexpected case where a 32-bit size_t
is too small and overflows.
Normally, the values are small enough to fit in size_t, but the risk
that it may not fit sometimes is a reason to use uint64_t consistently
for all architectures.

On 64-bit systems, this refactor is a no-op. On 32-bit systems, it could
avoid bugs in the theoretical and unexpected case where a 32-bit size_t
is too small and overflows.

For example, 32-bit Bitcoin Core versions with CVE-2025-46597 unfixed
may overflow while checking for the bad-blk-length violation when
receiving a malformed and bloated compact block.
@maflcko maflcko force-pushed the 2510-size-refactor branch from fadd49b to fa6c0be Compare October 30, 2025 16:52
@purpleKarrot
Copy link
Contributor

Consensus code should arrive at the same conclusion, regardless of the architecture it runs on.

True.

Using architecture-specific types such as size_t can lead to issues.

Can it?

sizeof(size_t) may have different values on different architectures, so depending on sizeof(size_t) is problematic.

But if sizes are serialized as uint32_t, I assume only the value range of uint32_t is valid, even on 64bit machines. In what scenario can size_t lead to a problem?

@purpleKarrot
Copy link
Contributor

purpleKarrot commented Nov 3, 2025

nit: C++ defines types like uint64_t in the namespace std and then, optionally (!!!), also in the global namespace for compatibility with C. We should prefer std::uint64_t.

@maflcko
Copy link
Member Author

maflcko commented Nov 3, 2025

But if sizes are serialized as uint32_t, I assume only the value range of uint32_t is valid, even on 64bit machines. In what scenario can size_t lead to a problem?

It is explained in the CVE (linked in the description):

"Before writing a block to disk, Bitcoin Core checks that its size is within a normal range. This check would overflow on 32-bit systems for blocks over 1GB..."

The basic idea is that the following code is brittle:

u32 value = result of some calculation, which may overflow u32
if value > too_large {
  return Err(...);  // fails to hit due to overflow
}
... proceed to use `value` after the overflow, leading to other bugs

@purpleKarrot
Copy link
Contributor

@maflcko, I get that checking for overflow after the cause is not going to work.
But if we have a buggy calculation that may overflow u32, changing the type to u64 is not a proper fix. What if it overflows u64? How do you want to detect that?

Would you agree that, if the calculation is fixed to detect overflow before the cause then using size_t would not be a problem at all?

@maflcko
Copy link
Member Author

maflcko commented Nov 4, 2025

Yeah, overflowing u64 is conceptually no different and theoretically no harder than overflowing u32. However, in practise (using real-world sizes), it can be assumed with some confidence to not happen.

I think you are right that ideally CheckedMul (https://doc.rust-lang.org/stable/std/primitive.u64.html#method.checked_mul) is moved to our src/util/overflow.h and all places that have a real risk of overflowing are changed to use this helper.

However, thinking about review and maintenance going forward, I am not convinced this is the right approach. It is not trivial to enumerate all places where overflow could occur. Only selectively adjusting the specific places where an overflow could occur seems largely no different than the current specific CVE-workaround to avoid the overflow.

@sipa
Copy link
Member

sipa commented Nov 4, 2025

@maflcko Thinking out loud, and not really commentary on this PR.

But if the reasoning is that identifying the places where a "non-overflowing type" (uint64) ought to be used is easier than identifying the places where a "non-overflowing multiply" (CheckedMul) needs to be used, then one possibility is creating a wrapping integer type that just has no non-overflying multiplication (or other) operations.

This is likely far overkill for what we're trying to achieve, though.

@Crypt-iQ
Copy link
Contributor

Crypt-iQ commented Nov 6, 2025

crACK fa6c0be

@l0rinc
Copy link
Contributor

l0rinc commented Nov 6, 2025

ACK fa6c0be

I have recreated the change locally (see #33724 (review)), my only objection was that I would like the methods to return the values in the same type as how we're storing them, otherwise it's confusing to know when it's okay to store them in 32 bits and when in 64 - but with the operations (e.g. multiplication) we could more easily tell if they're close to the threshold or not since they're local.
But I also understand that hoping that people will just cast correctly is also dangerous. Will let the author decide, I'm also fine with the current approach, especially since I expect follow-ups.

@laanwj
Copy link
Member

laanwj commented Nov 11, 2025

Concept ACK.

re "refactor: Use fixed size ints over (un)signed ints for serialized values"

i wonder if we can enforce this kind of thing? That only fixed-size values can be serialized, would make sense to avoid any kind of platform divergence. At least in theory, as we already make assumptions on these types it's not a pressing issue.

Copy link
Member

@laanwj laanwj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review ACK fa6c0be
Changes LGTM

  • test: Remove outdated comment: trivial, no risk
  • refactor: [rpc] Remove cast when reporting serialized size: obvious ACK. probably was a workaround for an old univalue version
  • move-only: Move CBlockFileInfo to kernel namespace: good catch! verified move-only
  • refactor: Use fixed size ints over (un)signed ints for serialized values: long-overdue change. There should be no difference in generated code (but i did not verify this)
  • refactor: Use uint64_t over size_t for serialized-size values: ACK, using uint64_t is the right thing to do here
  • refactor: Return uint64_t from GetSerializeSize: ACK, using uint64_t is the right thing to do here

i see no risk of this increasing memory usage on 32-bit platforms, as the types changed here are never stored in large quantities in memory.

@glozow glozow merged commit 3789215 into bitcoin:master Nov 12, 2025
22 checks passed
sedited added a commit to sedited/rust-bitcoinkernel that referenced this pull request Nov 12, 2025
…789215f7346

3789215f7346 Merge bitcoin/bitcoin#33724: refactor: Return uint64_t from GetSerializeSize
d4e2a4583305 Merge bitcoin/bitcoin#33750: doc: document fingerprinting risk when operating node on multiple networks
47618446a06d Merge bitcoin/bitcoin#33853: kernel: Allow null arguments for serialized data
d0da95377310 Merge bitcoin/bitcoin#32482: build: add `-W*-whitespace`
f450761f8363 Merge bitcoin/bitcoin#33842: build: Bump g++ minimum supported version to 12
fa9f29a4a799 doc: Recommend latest Debian stable or Ubuntu LTS
fa1711ee0d3b doc: Add GCC-12 min release notes
faa8be75c947 ci: Enable experimental kernel stuff in G++-12 task (previous releases)
fabce97b303b test: Remove gccbug_90348 test case
fa3854e43295 test: Remove unused fs::create_directories test
fa9dacdbde7d util: [refactor] Remove unused create_directories workaround
138726a6f810 Merge bitcoin/bitcoin#33850: depends: drop qtbase_avoid_native_float16 qt patch
1c3d5c8ffdaa Merge bitcoin/bitcoin#33840: test: [refactor] Use reference over ptr to chainman
40dcbf580d8e build: add -Wtrailing-whitespace=any
a3ac59a43163 ci: Enable experimental kernel stuff in ASan task
5b89956eeb76 kernel: Allow null arguments for serialized data
169f93d2ac88 depends: drop qtbase_avoid_native_float16 qt patch
d7659cd7e6f8 build: add -Wleading-whitespace=spaces
d86650220a16 cmake: Disable `-Wtrailing-whitespace` warnings for RCC-generated files
aabc5ca6ed6e cmake: Switch from AUTORCC to `qt6_add_resources`
25ae14c3391a subprocess: replace tab with space
0c2b9dadd554 scripted-diff: remove whitespace in sha256_sse4.cpp
4da084fbc933 scripted-diff: change whitespace to spaces in univalue
e6caf150b309 ci: add moreutils to lint job
a7e80676104b Merge bitcoin/bitcoin#33181: guix: build for Linux HOSTS with `-static-libgcc`
fa807f78aede build: Bump g++ minimum supported version to 12
7a4901c90296 test, refactor: Fix `-Warray-bounds` warning
faf2759c8c45 test: [refactor] Use reference over ptr to chainman
f06c6e189831 guix: build for Linux HOSTS with -static-libgcc
1bdf4695b019 guix: patch store paths out of libunwind
078a72c35f03 guix: move static-libc++ into CMAKE_EXE_LINKER_FLAGS flags
e346ecae830e Add eclipse, partitioning, and fingerprinting note to i2p.md
19a6a3e75ed6 Add eclipse, partitioning, and fingerprinting note in tor.md
fa6c0bedd33a refactor: Return uint64_t from GetSerializeSize
fad0c8680ea7 refactor: Use uint64_t over size_t for serialized-size values
fa4f388fc99c refactor: Use fixed size ints over (un)signed ints for serialized values
fa01f38e53cf move-only: Move CBlockFileInfo to kernel namespace
fa2bbc9e4cfe refactor: [rpc] Remove cast when reporting serialized size
fa364af89bd9 test: Remove outdated comment

git-subtree-dir: libbitcoinkernel-sys/bitcoin
git-subtree-split: 3789215f73466606eb111714f596a2a5e9bb1933
@maflcko maflcko deleted the 2510-size-refactor branch November 12, 2025 15:28
yuvicc added a commit to yuvicc/bitcoinkernel-jdk that referenced this pull request Nov 16, 2025
c66e988754 Merge bitcoin/bitcoin#33865: cmake: Specify Windows plugin path in `test_bitcoin-qt` property
e221b25246 Merge bitcoin/bitcoin#33860: depends: drop Qt patches
dfde31f2ec Merge bitcoin/bitcoin#33864: scripted-diff: fix leftover references to `policy/fees.h`
0dd8d5c237 cmake: Specify Windows plugin path in `test_bitcoin-qt` property
b0a3887154 scripted-diff: fix leftover references to `policy/fees.h`
48d4b936e0 Merge bitcoin/bitcoin#33511: init: Fix Ctrl-C shutdown hangs during wait calls
3c3c6adb72 Merge bitcoin/bitcoin#33745: mining: check witness commitment in submitBlock
e652b69b8d Merge bitcoin/bitcoin#33003: test: add option to skip large re-org test in feature_block
3789215f73 Merge bitcoin/bitcoin#33724: refactor: Return uint64_t from GetSerializeSize
d4e2a45833 Merge bitcoin/bitcoin#33750: doc: document fingerprinting risk when operating node on multiple networks
47618446a0 Merge bitcoin/bitcoin#33853: kernel: Allow null arguments for serialized data
3e9aca6f1b depends: drop qtbase-moc-ignore-gcc-macro.patch qt patch
0da5a82700 depends: drop unused qt patch
d0da953773 Merge bitcoin/bitcoin#32482: build: add `-W*-whitespace`
f450761f83 Merge bitcoin/bitcoin#33842: build: Bump g++ minimum supported version to 12
fa9f29a4a7 doc: Recommend latest Debian stable or Ubuntu LTS
fa1711ee0d doc: Add GCC-12 min release notes
faa8be75c9 ci: Enable experimental kernel stuff in G++-12 task (previous releases)
fabce97b30 test: Remove gccbug_90348 test case
fa3854e432 test: Remove unused fs::create_directories test
fa9dacdbde util: [refactor] Remove unused create_directories workaround
138726a6f8 Merge bitcoin/bitcoin#33850: depends: drop qtbase_avoid_native_float16 qt patch
1c3d5c8ffd Merge bitcoin/bitcoin#33840: test: [refactor] Use reference over ptr to chainman
40dcbf580d build: add -Wtrailing-whitespace=any
a3ac59a431 ci: Enable experimental kernel stuff in ASan task
5b89956eeb kernel: Allow null arguments for serialized data
169f93d2ac depends: drop qtbase_avoid_native_float16 qt patch
d7659cd7e6 build: add -Wleading-whitespace=spaces
d86650220a cmake: Disable `-Wtrailing-whitespace` warnings for RCC-generated files
aabc5ca6ed cmake: Switch from AUTORCC to `qt6_add_resources`
25ae14c339 subprocess: replace tab with space
0c2b9dadd5 scripted-diff: remove whitespace in sha256_sse4.cpp
4da084fbc9 scripted-diff: change whitespace to spaces in univalue
e6caf150b3 ci: add moreutils to lint job
a7e8067610 Merge bitcoin/bitcoin#33181: guix: build for Linux HOSTS with `-static-libgcc`
b354d1ce5c Merge bitcoin/bitcoin#33820: kernel: trim Chain interface
fa807f78ae build: Bump g++ minimum supported version to 12
a4e96cae7d Merge bitcoin/bitcoin#33042: refactor: inline constant return values from `dbwrapper` write methods
8c2710b041 Merge bitcoin/bitcoin#32517: rpc: add "ischange: true" to decoded tx outputs in wallet gettransaction response
1fe851a478 Merge bitcoin/bitcoin#32180: p2p: Advance pindexLastCommonBlock early after connecting blocks
5f0303b93f Merge bitcoin/bitcoin#33443: log: reduce excessive "rolling back/forward" messages during block replay
f4903dddc9 Merge bitcoin/bitcoin#33433: Bugfix: QA: rpc_bind: Skip nonloopback test if no such address is found
7a4901c902 test, refactor: Fix `-Warray-bounds` warning
06e9458869 Merge bitcoin/bitcoin#32856: Update `minisketch` subtree
66978a1a95 kernel: remove btck_chain_get_tip
4dd7e6dc48 kernel: remove btck_chain_get_genesis
faf2759c8c test: [refactor] Use reference over ptr to chainman
490cb056f6 Merge bitcoin/bitcoin#33785: util: Allow `Assert` (et al.) in contexts without __func__
dcd0099a76 Merge bitcoin/bitcoin#33826: scripted-diff: Remove obsolete comment
01adbbcd9c Merge bitcoin/bitcoin#33827: doc: Correct `pkgin` command usage on NetBSD
eec21bc7c8 Merge bitcoin/bitcoin#33536: doc: reference fuzz coverage steps in quick-start
035f934e02 Merge bitcoin/bitcoin#33823: ci: Use cmake --preset=dev-mode in test-each-commit task
ddd2afac10 Merge bitcoin/bitcoin#33676: interfaces: enable cancelling running `waitNext` calls
dee7eec643 doc: mention coverage build in quickstart section
0698c6b494 doc: Correct `pkgin` command usage on NetBSD
36724205fc scripted-diff: Remove obsolete comment
ca1ce52a0f Merge bitcoin/bitcoin#33825: refactor: Add missing include in bitcoinkernel_wrapper.h
fa1e8d8bad refactor: Add missing include in bitcoinkernel_wrapper.h
fa6db67369 ci: [refactor] Extract build_dir constant in ci-test-each-commit-exec.py
fa95e6cdc1 ci: Use cmake --preset=dev-mode in test-each-commit task
513a0da2e0 Merge bitcoin/bitcoin#33818: ci: Extend tidy job to cover kernel code
5d0a40d607 ci: Extend tidy job to cover kernel code
93e79181da Merge bitcoin/bitcoin#33786: script: remove dead code in `CountWitnessSigOps`
3c4bec6223 Merge bitcoin/bitcoin#33782: test: remove obsolete `get_{key,multisig}` helpers from wallet_util.py
4b12beedae Merge bitcoin/bitcoin#33793: test: move create_malleated_version() to messages.py for reuse
0b45e6db10 Merge bitcoin/bitcoin#33789: doc: add cmake help option in Windows build docs
2b9c351198 Merge bitcoin/bitcoin#33768: refactor: remove dead branches in `SingletonClusterImpl`
fad6efd3be refactor: Use STR_INTERNAL_BUG macro where possible
fada379589 doc: Remove unused bugprone-lambda-function-name suppression
f06c6e1898 guix: build for Linux HOSTS with -static-libgcc
1bdf4695b0 guix: patch store paths out of libunwind
078a72c35f guix: move static-libc++ into CMAKE_EXE_LINKER_FLAGS flags
2bd155e6ee test: move create_malleated_version() to messages.py for reuse
5c5704e730 Merge bitcoin/bitcoin#33791: kernel: Use enumeration type for flags argument
ed5720509f kernel: Use enumeration type for flags argument
50d106a4d6 Merge bitcoin/bitcoin#33781: clang-tidy: Remove no longer needed NOLINT
ffd7ca3c46 Merge bitcoin/bitcoin#33780: guix: disable libsanitizer in Linux GCC build
9577daa3b8 doc: Add cmake help option in Windows build instructions
fae1d99651 refactor: Use const reference to std::source_location
fa5fbcd615 util: Allow Assert() in contexts without __func__
24bcad3d4d refactor: remove dead code in `CountWitnessSigOps`
33389f1144 Merge bitcoin-core/gui#899: Modernize custom filtering
ec8516ceb7 test: remove obsolete `get_{key,multisig}` helpers from wallet_util.py
038849e2e0 clang-tidy: Remove no longer needed NOLINT
5c41fa2918 guix: disable libsanitizer in Linux GCC build
4da01123df Merge bitcoin/bitcoin#30595: kernel: Introduce C header API
96614fff63 Merge bitcoin/bitcoin#33714: random: scope environ extern to macOS, BSDs and Illumos
4e9bd579d3 Merge bitcoin/bitcoin#33045: depends: disable variables, rules and suffixes.
5ffa63d681 Merge bitcoin/bitcoin#33626: ci: run native fuzz with MSAN job
75baff98fc Merge bitcoin/bitcoin#33744: ci: Fix lint runner selection (and docker cache)
2593ed1b5f Merge bitcoin/bitcoin#33574: doc: update Guix INSTALL.md
1cd8d9fe5c Merge bitcoin/bitcoin#33445: ci: Update Clang in "tidy" job
56329beaee Merge bitcoin/bitcoin#32301: test: cover invalid codesep positions for signature in taproot
1e6e32fa8a ci: run native fuzz with MSAN job
3784d15bcd ci: use LLVM libcxx 21.1.5
6c7a34f3b0 kernel: Add Purpose section to header documentation
7e9f00bcc1 kernel: Allowing reducing exports
7990463b10 kernel: Add pure kernel bitcoin-chainstate
36ec9a3ea2 Kernel: Add functions for working with outpoints
5eec7fa96a kernel: Add block hash type and block tree utility functions to C header
f5d5d1213c kernel: Add function to read block undo data from disk to C header
09d0f62638 kernel: Add functions to read block from disk to C header
a263a4caf2 kernel: Add function for copying block data to C header
b30e15f432 kernel: Add functions for the block validation state to C header
aa262da7bc kernel: Add validation interface to C header
d27e27758d kernel: Add interrupt function to C header
1976b13be9 kernel: Add import blocks function to C header
a747ca1f51 kernel: Add chainstate load options for in-memory dbs in C header
070e77732c kernel: Add options for reindexing in C header
ad80abc73d kernel: Add block validation to C header
cb1590b05e kernel: Add chainstate loading when instantiating a ChainstateManager
e2c1bd3d71 kernel: Add chainstate manager option for setting worker threads
65571c36a2 kernel: Add chainstate manager object to C header
c62f657ba3 kernel: Add notifications context option to C header
9e1bac4585 kernel: Add chain params context option to C header
337ea860df kernel: Add kernel library context object
28d679bad9 kernel: Add logging to kernel library C header
2cf136dec4 kernel: Introduce initial kernel C header API
e15e8cbada qt: Modernize custom filtering
745eb053a4 Merge bitcoin-core/gui#901: Add createwallet, createwalletdescriptor, and migratewallet to history filter
52b1595850 depends: disable builtin variables
8b5a28fa78 depends: disable builtin rules and suffixes.
7632e0ba31 ci: fix configure docker action inputs
746d36cc80 Merge bitcoin/bitcoin#33754: ci: gha: Set debug_pull_request_number_str annotation
2d23820ee1 refactor: remove dead branches in `SingletonClusterImpl`
e346ecae83 Add eclipse, partitioning, and fingerprinting note to i2p.md
25c45bb0d0 Merge bitcoin/bitcoin#33567: node: change a tx-relay on/off flag to enum
422b468229 Merge bitcoin/bitcoin#33683: refactor/doc: Add blockman param to GetTransaction doc comment
da6f041e39 Merge bitcoin/bitcoin#31645: [IBD] coins: increase default UTXO flush batch size to 32 MiB
832a57673a Merge bitcoin/bitcoin#33749: test: ipc: resolve symlinks in `which capnp`
3cd4263bf6 Merge bitcoin/bitcoin#33753: test: Format strings in `test_runner`
78d4d36730 test: Format strings in `*.rs`
fa9d0f994b ci: gha: Set debug_pull_request_number_str annotation
6eaa00fe20 test: clarify submitBlock() mutates the template
862bd43283 mining: ensure witness commitment check in submitBlock
00d1b6ef4b doc: clarify UpdateUncommittedBlockStructures
305384a037 Merge bitcoin/bitcoin#33746: ci: Add missing python3-dev package for riscv64
8eda7210eb Merge bitcoin/bitcoin#33743: fuzz: refactor memcpy to std::ranges::copy to work around ubsan warn
19a6a3e75e Add eclipse, partitioning, and fingerprinting note in tor.md
51093d6ae1 test: resolve symlinks in which result for capnp
fa6c0bedd3 refactor: Return uint64_t from GetSerializeSize
fad0c8680e refactor: Use uint64_t over size_t for serialized-size values
fa4f388fc9 refactor: Use fixed size ints over (un)signed ints for serialized values
6f359695c3 Merge bitcoin/bitcoin#33698: test: Use same rpc timeout for authproxy and cli
c281bb6837 Merge bitcoin/bitcoin#32924: test: add valid tx test with minimum-sized ECDSA signature (8 bytes DER-encoded)
facf8b771a ci: Add missing python3-dev package for riscv64
b4d0288c46 doc: update Guix INSTALL.md
0b3b8a3be1 ci: fix lint docker caching
fa4b52bd16 fuzz: refactor memcpy to std::ranges::copy to work around ubsan warn
72511fd02e Merge bitcoin/bitcoin#33555: build: Bump clang minimum supported version to 17
060bb55508 rpc: add decoded tx details to gettransaction with extra wallet fields
ad1c3bdba5 [move only] move DecodeTxDoc() to a common util file for sharing
d633db5416 rpc: add "ischange: true" in wallet gettransaction decoded tx output
79d6f458e2 random: scope environ extern to macOS, BSDs and Illumos
292ea0eb89 Merge bitcoin/bitcoin#33677: ci: Retry image building once on failure
dd82c6c5d0 Merge bitcoin/bitcoin#33693: ci: use pycapnp 2.2.1
3bb30658e6 Merge bitcoin/bitcoin#32380: Modernize use of UTF-8 in Windows code
5a58d4915e Merge bitcoin/bitcoin#33546: test: add functional test for `TestShell` (matching doc example)
1abc8fa308 Merge bitcoin/bitcoin#33218: refactor: rename `fees.{h,cpp}` to `fees/block_policy_estimator.{h,cpp}`
de15e52f09 Merge bitcoin/bitcoin#32867: doc: mention key removal in rpc interface modification
5d784bebaf clang-tidy: Disable `ArrayBound` check in src/ipc and src/test
5efdb0ef30 ci: Update Clang in "tidy" job
fa01f38e53 move-only: Move CBlockFileInfo to kernel namespace
fa2bbc9e4c refactor: [rpc] Remove cast when reporting serialized size
fa364af89b test: Remove outdated comment
24434c1284 Merge bitcoin/bitcoin#31308: ci, iwyu: Treat warnings as errors for specific directories
27cd7f5049 Merge bitcoin/bitcoin#33185: guix: update time-machine to 5cb84f2013c5b1e48a7d0e617032266f1e6059e2
80bb7012be Merge bitcoin/bitcoin#31514: wallet: allow label for non-ranged external descriptor (if `internal=false`) & disallow label for ranged descriptors
5e1f626ac3 Merge bitcoin/bitcoin#32504: test: descriptor: cover invalid multi/multi_a cases
dcb56fd4cb interfaces: add interruptWait method
56e9703968 Merge bitcoin/bitcoin#29640: Fix tiebreak when loading blocks from disk (and add tests for comparing chain ties)
53b34c80c6 ci: use pycapnp 2.2.1 in mac native job
865432869c ci: remove Python version comment from mac config
9bd9ec00b2 Merge bitcoin/bitcoin#33688: test: Update BIP324 test vectors
1a7fb5eeee fees: return current block height in estimateSmartFee
ab49480d9b fees: rename fees_args to block_policy_estimator_args
06db08a435 fees: refactor: rename fees to block_policy_estimator
6dfdd7e034 fees: refactor: rename policy_fee_tests.cpp to feerounder_tests.cpp
f54ffb4bc1 Merge bitcoin/bitcoin#32813: clang-format: make formatting deterministic for different formatter versions
1916c51cd8 Merge bitcoin/bitcoin#33210: fuzz: enhance wallet_fees by mocking mempool stuff
0eb554728c Merge bitcoin/bitcoin#33336: log: print every script verification state change
c6c4edf324 Merge bitcoin/bitcoin#32983: rpc: refactor: use string_view in Arg/MaybeArg
00ad998d95 Merge bitcoin/bitcoin#33252: p2p: add `DifferenceFormatter` fuzz target and invariant check
1a1f46c228 refactor/doc: Add blockman param to `GetTransaction` doc comment and reorder out param
66667d6512 test: Use same rpc timeout for authproxy and cli
5555bce994 ci: Document why IN_GETOPT_BIN env var is needed on macOS
fabe516440 ci: Export the container id in python script
f6ba97cea1 Merge bitcoin/bitcoin#33666: ci: Drop libFuzzer from msan fuzz task
af78d36512 Merge bitcoin/bitcoin#32588: util: Abort on failing CHECK_NONFATAL in debug builds
51877f2fc5 test: Update BIP324 test vectors
161864a038 Merge bitcoin/bitcoin#32579: p2p: Correct unrealistic headerssync unit test behavior
70a6fb5e5a Merge bitcoin/bitcoin#33172: test: p2p block malleability
99cb2054bd Merge bitcoin/bitcoin#33600: refactor: Construct g_verify_flag_names on first use
211bf6c975 Merge bitcoin/bitcoin#33566: miner: fix empty mempool case for waitNext()
944e5ff848 doc: mention key removal in rpc interface modification
d32f9525e4 Merge bitcoin/bitcoin#33679: test: set number of RPC server threads to 2
1c85d06232 Merge bitcoin/bitcoin#32266: depends: Avoid `warning: "_FORTIFY_SOURCE" redefined` for `libevent`
11684c9ce2 Merge bitcoin/bitcoin#33674: ci: Doc ASLR workaround for sanitizer tasks
e9cd45e3d3 test: set number of RPC server threads to 2
fa6aa9f42f ci: Retry image building once on failure
fa4dbe04d7 ci: Allow overwriting check option in run() helper
fa8e4de5c3 ci: Use os.environ[key] access when value must be set
7d27af98c7 Merge bitcoin/bitcoin#33461: ci: add Valgrind fuzz
1569bcc387 Merge bitcoin/bitcoin#33639: ci: Only write docker build images to Cirrus cache
98c4994d0f Merge bitcoin/bitcoin#33570: randomenv: Fix MinGW dllimport warning for `environ`
c211d18322 Merge bitcoin/bitcoin#33670: test: Use unassigned p2p_port instead of hardcoded 60000 in p2p_i2p_ports.py
e4b04630bc ci: add Valgrind fuzz
3fee0754a2 Merge bitcoin/bitcoin#33550: Fix windows libc++ `fs::path` `fstream` compile errors
fa0e36156c ci: Doc ASLR workaround for sanitizer tasks
fa20275db3 test: Use unassigned p2p_port instead of hardcoded 60000 in p2p_i2p_ports.py
c862936d16 Merge bitcoin/bitcoin#33370: ci: use Mold linker for asan-lsan-ubsan-integer-no-depends-usdt workflow
fabe0e07de ci: Only write docker build images to Cirrus cache
fab64a5d6f ci: Move buildx command to python script
fa72a2bd5c ci: Remove unused MAYBE_CPUSET
fa70e23de7 ci: Drop libFuzzer from msan fuzz task
abe7cbfe1a Merge bitcoin/bitcoin#33470: build: Move CMAKE_SKIP_INSTALL_RPATH from CMake to Guix script
689ec28d1d Merge bitcoin/bitcoin#33633: test: [move-only] binary utils to utils.py
0eeae4d174 Merge bitcoin/bitcoin#33625: Update secp256k1 subtree to latest master
4b41f99d57 build: Move CMAKE_SKIP_INSTALL_RPATH from CMake to Guix script
d30f149360 Merge bitcoin/bitcoin#33630: doc: correct topology requirements in submitpackage helptext
3d22282564 [doc] correct topology requirements in submitpackage helptext
e744fd1249 Merge bitcoin/bitcoin#33641: Update leveldb subtree to latest master
4371740beb Merge bitcoin/bitcoin#33642: doc: archive release notes for v28.3
ceea24b921 doc: archive release notes for v28.3
54ffe3de5b Update leveldb subtree to latest master
f21162d819 Squashed 'src/leveldb/' changes from aba469ad6a..cad64b151d
e14451ac87 Merge bitcoin/bitcoin#33469: TxGraph: change m_excluded_clusters
f76e1ae389 Merge bitcoin/bitcoin#32313: coins: fix `cachedCoinsUsage` accounting in `CCoinsViewCache`
59c4898994 guix: remove python-pydantic-core input from LIEF
9f2a6927d3 guix: use Clang & LLVM 19 for macOS build
9570ddbec9 guix: update time-machine to 5cb84f2013c5b1e48a7d0e617032266f1e6059e2
7b5cc276aa guix: patch around riscv issue with newer (2.40+) binutils
91b5cbaabb ci: use Debian Trixie for macOS cross job
fa75ef4328 test: Move export_env_build_path to util.py
fa9f495308 test: Move get_binary_paths and Binaries to util.py
40e7d4cd0d Merge bitcoin/bitcoin#33549: ci: Add macOS cross task for arm64-apple-darwin
ea17618c11 Merge bitcoin/bitcoin#33480: ci: Turn CentOS config into Alpine musl config
b1f8a13702 Merge bitcoin/bitcoin#33624: test: P2SH sig ops are only counted with `SCRIPT_VERIFY_P2SH`
879c21045e Update secp256k1 subtree to latest master
3cbf7cb3e6 Squashed 'src/secp256k1/' changes from b9313c6e1a..d543c0d917
2f7a50f67c Merge bitcoin/bitcoin#33462: ci: add libcpp hardening flags to macOS fuzz job
07a926474b node: change a tx-relay on/off flag to enum
48aa0e98d0 Merge bitcoin/bitcoin#29675: wallet: Be able to receive and spend inputs involving MuSig2 aggregate keys
db4bde0b03 Merge bitcoin/bitcoin#33517: multiprocess: Fix high overhead from message logging
3a10d700bc test: P2SH sig ops are only counted with `SCRIPT_VERIFY_P2SH` flag
9314113b29 Merge bitcoin/bitcoin#33610: doc: archive release notes for v29.2
9b43428c96 TxGraph: change m_excluded_clusters
6e1adbbaa1 Merge bitcoin/bitcoin#33612: test: change log rate limit version gate
fdcf67de80 Merge bitcoin/bitcoin#33157: cluster mempool: control/optimize TxGraph memory usage
7b544341c0 test: change log rate limit version gate from 299900 to 290100
9610b0d1e2 randomenv: Fix MinGW dllimport warning for `environ`
6c4fe401e9 Merge bitcoin/bitcoin#33508: ci: fix buildx gha cache authentication on forks
8f7673257a miner: fix empty mempool case for waitNext()
c11a3dcc88 doc: archive release notes for v29.2
64a7c7cbb9 Merge bitcoin/bitcoin#33558: ci: Use native platform for win-cross task
93b56e95c0 Merge bitcoin/bitcoin#33601: doc: archive release notes for v30.0
c235aa468b Update minisketch subtree to latest upstream
4543a3bde2 Squashed 'src/minisketch/' changes from ea8f66b1ea..d1bd01e189
563747971b Merge bitcoin/bitcoin#33580: depends: Use $(package)_file_name when downloading from the fallback
24d861da78 coins: only adjust `cachedCoinsUsage` on `EmplaceCoinInternalDANGER` insert
d7c9d6c291 coins: fix `cachedCoinsUsage` accounting to prevent underflow
39cf8bb3d0 refactor: remove redundant usage tracking from `CoinsViewCacheCursor`
67cff8bec9 refactor: assert newly-created parent cache entry has zero memory usage
023cd5a546 txgraph: add SingletonClusterImpl (mem optimization)
e346250732 txgraph: give Clusters a range of intended tx counts (preparation)
e93b0f09cc txgraph: abstract out creation of empty Clusters (refactor)
6baf12621f txgraph: comment fixes (doc fix)
726b995739 txgraph: make Cluster an abstract class (refactor)
2602d89edd txgraph: avoid accessing other Cluster internals (refactor)
04c808ac4c txgraph: expose memory usage estimate function (feature)
7680bb8fd4 txgraph: keep track of Cluster memory usage (preparation)
4ba562e5f4 txgraph: keep data structures compact (mem optimization)
bb5cb222ae depgraph: add memory usage control (feature)
b1637a90de txgraph: avoid holes in DepGraph positions (mem optimization)
2b1d302508 txgraph: move some sanity checks from Cluster to TxGraphImpl (refactor)
d40302fbaf txgraph: Make level of Cluster implicit (optimization)
8d6e49158e doc: archive release notes for v30.0
4e352efa2c qt: add createwallet, createwalletdescriptor, and migratewallet to history filter
0626b90f50 multiprocess: align our logging with libmultiprocess's
9d068225ee multiprocess: update multiprocess EventLoop construction to use options
d2987102dd Merge bitcoin/bitcoin#33573: doc: bump the template macOS version
f6567527d8 doc: bump the template macOS version
faa9d10c84 refactor: Construct g_verify_flag_names on first use
becf150013 Merge bitcoin/bitcoin#33518: Update libmultiprocess subtree to support reduced logging
01cc20f330 test: improve coverage for a resolved stalling situation
9af6daf07e test: remove magic number when checking for blocks that have arrived
3069d66dca p2p: During block download, adjust pindexLastCommonBlock better
cd1b7fa1ff Merge bitcoin/bitcoin#33577: Revert "depends: Update URL for `qrencode` package source tarball"
fa0fa0f700 refactor: Revert "disable self-assign warning for tests"
faed118fb3 build: Bump clang minimum supported version to 17
6b4a92b0fa Merge bitcoin/bitcoin#33568: doc: how to update a subtree
90b2884ce4 Merge bitcoin/bitcoin#33581: ci: Properly include $FILE_ENV in DEPENDS_HASH
d44b860cd0 Merge bitcoin/bitcoin#33584: ci: upgrade GitHub Action to download-artifact@v5
57f7c68821 test: add functional test for `TestShell` (matching doc example)
53874f7934 doc: test: update TestShell example instructions/options
b35341b9ba Update ci.yml
ceeb53adcd ci: Properly include $FILE_ENV in DEPENDS_HASH
671b774d1b depends: Use $(package)_file_name when downloading from the fallback
e4335a3192 Revert "depends: Update URL for `qrencode` package source tarball"
a89a822e6e Revert "depends: Use hash instead of file name for package download stamp"
fad5a7101c ci: Add macOS cross task for arm64
fa8c750a0a ci: Refactor get_previous_releases step in win-test-cross task
e4c04f7759 ci: add libcpp hardening flags to macOS fuzz job
a1226bc760 doc: how to update a subtree
eda91b07fd Merge commit '0f01e1577f7c6734eb345139a12aba329ef22a5f' into pr/subtree-6
0f01e1577f Squashed 'src/ipc/libmultiprocess/' changes from 47d79db8a552..a4f929696490
fa6fd16f36 ci: Use native platform for win-cross task
53e4951a5b Switch to ANSI Windows API in `fsbridge::fopen()` function
dbe770d921 Switch to ANSI Windows API in `Win32ErrorString()` function
06d0be4e22 Remove no longer necessary `WinCmdLineArgs` class
f366408492 cmake: Set process code page to UTF-8 on Windows
dccbb17806 Set minimum supported Windows version to 1903 (May 2019 Update)
c864a4c194 Simplify fs::path by dropping filename() and make_preferred() overloads
b0113afd44 Fix windows libc++ fs::path fstream compile errors
b63428ac9c rpc: refactor: use more (Maybe)Arg<std::string_view>
037830ca0d refactor: increase string_view usage
b3bf18f0ba rpc: refactor: use string_view in Arg/MaybeArg
45bd891465 log: split assumevalid ancestry-failure-reason message
6c13a38ab5 log: separate script verification reasons
f2ea6f04e7 refactor: untangle assumevalid decision branches
9bc298556c validation: log initial script verification state
4fad4e992c test: add assumevalid scenarios scaffold
c25a5e670b init: Signal m_tip_block_cv on Ctrl-C
6a29f79006 test: Test SIGTERM handling during waitforblockheight call
ac599c4a9c test: Test MuSig2 in the wallet
68ef954c4c wallet: Keep secnonces in DescriptorScriptPubKeyMan
4a273edda0 sign: Create MuSig2 signatures for known MuSig2 aggregate keys
258db93889 sign: Add CreateMuSig2AggregateSig
bf69442b3f sign: Add CreateMuSig2PartialSig
512b17fc56 sign: Add CreateMuSig2Nonce
82ea67c607 musig: Add MuSig2AggregatePubkeys variant that validates the aggregate
d99a081679 psbt: MuSig2 data in Fill/FromSignatureData
4d8b4f5336 signingprovider: Add musig2 secnonces
c06a1dc86f Add MuSig2SecNonce class for secure allocation of musig nonces
9baff05e49 sign: Include taproot output key's KeyOriginInfo in sigdata
4b24bfeab9 pubkey: Return tweaks from BIP32 derivation
bc706955d7 ci: expose all ACTIONS_* vars
444409ff2b ci: Reduce Alpine musl task to md runner size
fa6b2e9efe ci: Turn centos config into alpine musl config
1fc7a81f1f log: reduce excessive messages during block replay
79b4c276e7 Bugfix: QA: rpc_bind: Skip nonloopback test if no such address is found
91ac64b0a6 log: reword `signature validations` to `script verification` in `assumevalid` log
f14876213a musig: Move synthetic xpub construction to its own function
f031536f2d ci: use Mold linker for asan-lsan-ubsan-integer-no-depends-usdt workflow
cc5dda1de3 headerssync: Make HeadersSyncState more flexible and move constants
8fd1c2893e test(headerssync): Test returning of pow_validated_headers behavior
7b00643ef5 test(headerssync): headers_sync_chainwork test improvements
04eeb9578c doc(test): Improve comments
fe896f8faa refactor(test): Store HeadersSyncState on the stack
f03686892a refactor(test): Break up headers_sync_state
e984618d0b refactor(headerssync): Process spans of headers
a4ac9915a9 refactor(headerssync): Extract test constants ahead of breakup into functions
02d2b5a11c ci, iwyu: Treat warnings as errors for specific directories
57a3eac387 refactor: Fix includes in `index` directory
bdb8eadcdc refactor: Fix includes in `crypto` directory
56f2a689a2 ci: Do not patch `leveldb` to workaround UB in "tidy" CI job
65a10fc3c5 p2p: add assertion for BlockTransactionsRequest indexes
58be359f6b fuzz: add a target for DifferenceFormatter Class
13f36c020f clang-format: regenerate configs
5ded99a7f0 fuzz: MockMempoolMinFee in wallet_fees
c9a7a198d9 test: move MockMempoolMinFee to util/txmempool
adf67eb21b fuzz: create FeeEstimatorTestingSetup to set fee_estimator
ff10a37e99 fuzz: mock CBlockPolicyEstimator in wallet_fuzz
f591c3beca fees: make estimateSmartFee/HighestTargetTracked virtual for mocking
b6f8c48946 coins: increase default `dbbatchsize` to 32 MiB
8bbb7b8bf8 refactor: Extract default batch size into kernel
d0e1bbad01 test: repeat block malleability test with relayable block over P2P
19273d0705 fuzz: set mempool options in wallet_fees
81e5c8385b test: cover invalid codesep positions for signature in taproot
743abbcbde refactor: inline constant return value of `BlockTreeDB::WriteBatchSync` and `BlockManager::WriteBlockIndexDB` and `BlockTreeDB::WriteFlag`
e030240e90 refactor: inline constant return value of `CDBWrapper::Erase` and `BlockTreeDB::WriteReindexing`
cdab9480e9 refactor: inline constant return value of `CDBWrapper::Write`
d1847cf5b5 refactor: inline constant return value of `TxIndex::DB::WriteTxs`
50b63a5698 refactor: inline constant return value of `CDBWrapper::WriteBatch`
fb8720f1e0 sign: Refactor Schnorr sighash computation out of CreateSchnorrSig
a4cfddda64 tests: Clarify why musig derivation adds a pubkey and xpub
39a63bf2e7 descriptors: Add a doxygen comment for has_hardened output_parameter
2320184d0e descriptors: Fix meaning of any_key_parsed
0465574c12 test: Fixes send_blocks_and_test docs
09c95f21e7 test: Adds block tiebreak over restarts tests
18524b072e Make nSequenceId init value constants
8b91883a23 Set the same best tip on restart if two candidates have the same work
5370bed21e test: add functional test for complex reorgs
ab145cb3b4 Updates CBlockIndexWorkComparator outdated comment
fa37153288 util: Abort on failing CHECK_NONFATAL in debug builds
fa0dc4bdff test: Allow testing of check failures
faeb58fe66 refactor: Set G_ABORT_ON_FAILED_ASSUME when G_FUZZING_BUILD
8810642b57 test: add option to skip large re-org test in feature_block
5fa81e239a test: add valid tx test with minimum-sized ECDSA signature (8 bytes DER-encoded)
58e55b17e6 test: descriptor: cover invalid multi/multi_a cases
664657ed13 bugfix: disallow label for ranged descriptors & allow external non-ranged descriptors to have label
fe71a4b139 depends: Avoid `warning: "_FORTIFY_SOURCE" redefined` for `libevent`
REVERT: 81cec737e6 kernel: Fix bitcoin-chainstate for windows
REVERT: 1826c485dd kernel: Add Purpose section to header documentation
REVERT: d7e618aa98 kernel: Allowing reducing exports
REVERT: fb7f524133 kernel: Add pure kernel bitcoin-chainstate
REVERT: dd0bdf279e Kernel: Add functions for working with outpoints
REVERT: eaa6abfc73 kernel: Add block hash type and block tree utility functions to C header
REVERT: 824ddf2885 kernel: Add function to read block undo data from disk to C header
REVERT: 76cab0768b kernel: Add functions to read block from disk to C header
REVERT: e41f6f459a kernel: Add function for copying block data to C header
REVERT: 39c647647a kernel: Add functions for the block validation state to C header
REVERT: 8a19a9d607 kernel: Add validation interface to C header
REVERT: 38a990dd48 kernel: Add interrupt function to C header
REVERT: fee8f6ff38 kernel: Add import blocks function to C header
REVERT: c29a6b87cc kernel: Add chainstate load options for in-memory dbs in C header
REVERT: e788b3ba06 kernel: Add options for reindexing in C header
REVERT: 2707fc515c kernel: Add block validation to C header
REVERT: 51a24c4004 kernel: Add chainstate loading when instantiating a ChainstateManager
REVERT: ea01a8caf3 kernel: Add chainstate manager option for setting worker threads
REVERT: add5904e0a kernel: Add chainstate manager object to C header
REVERT: 37a3395d27 kernel: Add notifications context option to C header
REVERT: d838a934be kernel: Add chain params context option to C header
REVERT: dc58ae9fc0 kernel: Add kernel library context object
REVERT: 7744997596 kernel: Add logging to kernel library C header
REVERT: dc504f57b3 kernel: Introduce initial kernel C header API

git-subtree-dir: bitcoinkernel/bitcoin
git-subtree-split: c66e988754391a094af93ef2a9127200d093b669
stringintech added a commit to stringintech/go-bitcoinkernel that referenced this pull request Nov 24, 2025
0690514d4f Merge bitcoin/bitcoin#33770: init: Require explicit -asmap filename
b2f88b53e0 Merge bitcoin/bitcoin#33286: doc: update multisig tutorial to use multipath descriptors
313cdd2bfb Merge bitcoin/bitcoin#33915: test: Retry download in get_previous_releases.py
17072f7005 Merge bitcoin/bitcoin#33912: clang-format: Set PackConstructorInitializers: CurrentLine
6b2d17b132 Merge bitcoin/bitcoin#33888: ci: Re-enable LINT_CI_SANITY_CHECK_COMMIT_SIG
ac71df4338 Merge bitcoin/bitcoin#33870: refactor: remove incorrect lifetimebounds
6cdb51c14e Merge bitcoin/bitcoin#33887: doc: Improve CI docs on env and qemu-user-static
29c37651c7 Merge bitcoin/bitcoin#33880: test: Fix race condition in IPC interface block progation test
32368cd3e9 Merge bitcoin/bitcoin#33905: ci: Consistenly only cache on the default branch
e55c49f851 Merge bitcoin/bitcoin#33851: depends: update xcb-util packages to latest versions
a07bd8415d Merge bitcoin/bitcoin#33824: ci: Enable experimental kernel stuff in most CI tasks via `dev-mode`
f541b92cf2 depends: expat 2.7.3
fad06f3bb4 test: retry download in get_previous_releases.py
2ebf4356e6 depends: libxcb 1.17.0
ba7ac870a3 depends: xcb_proto 1.17.0
fad0c76d0a clang-format: Set PackConstructorInitializers: CurrentLine
42d0692f91 depends: libxcb-util-cursor 0.1.6
25b85919ab depends: libxcb 1.15
d129384ca9 depends: libxcb-util-wm 0.4.2
0b857ae9e5 depends: libxcb-util-renderutil 0.3.10
35e50488b2 depends: libxcb-util-keysyms 0.4.1
74b68ad28b depends: libxcb-util-image 0.4.1
5bc0dde85d depends: libxcb-util 0.4.1
8d07292c28 depends: libXau 1.0.12
1af46cff94 Merge bitcoin/bitcoin#33896: clang-format: Set InsertNewlineAtEOF: true
27ac11ea0a Merge bitcoin/bitcoin#33867: kernel: handle null or empty directories in implementation
2578e6fc0f test: Fix race condition in IPC interface block propagation test
288b8c30be doc: Drop (default: none) from -i2psam description
509dc91db1 Merge bitcoin/bitcoin#33026: test, refactor: Embedded ASMap [1/3]: Selected minor preparatory work
b126f98194 Merge bitcoin-core/gui#910: Added test coverage for qt gui#901 console history filter
7d7b829c36 Merge bitcoin-core/gui#908: Remove HD seed reference from blank wallet tooltip
53b72372da Merge bitcoin/bitcoin#31734: miniscript: account for all `StringType` variants in `Miniscriptdescriptor::ToString()`
a7f9bbe4c5 Merge bitcoin/bitcoin#32821: rpc: Handle -named argument parsing where '=' character is used
55555db055 doc: Add missing --platform=linux to docker build command
fa0ce4c148 ci: Re-enable LINT_CI_SANITY_CHECK_COMMIT_SIG
faa0973de2 ci: [refactor] Rename CIRRUS_PR env var to LINT_CI_IS_PR
fa411f938e ci: Consistenly only cache on the default branch
552eb90071 doc: CI - Describe qemu-user-static usage
2afbbddee5 doc: CI - Clarify how important `env -i` is and why
2444488f6a Merge bitcoin/bitcoin#33894: net: Remove unused `local_socket_bytes` variable in `CConnman::GetAddresses()`
fa1bf6818f clang-format: Set InsertNewlineAtEOF: true
115d298a9f Merge bitcoin/bitcoin#33872: init: completely remove `-maxorphantx` option
a90f3922ff Merge bitcoin/bitcoin#32419: psbt: clarify PSBT, PSBTInput, PSBTOutput unserialization flows
4d893c0f46 net: Remove unused `local_socket_bytes` variable in `CConnman::GetAddresses()`
fa1dacaebe ci: Move lint exec snippet to stand-alone py file
ead849c9f1 Merge bitcoin/bitcoin#33886: test: Remove tests violating hardened std::span
c03081fdb4 Merge bitcoin/bitcoin#33776: ci: Lint follow-ups
fadb4f63cb test: Remove tests violating hardened std::span
6e21558160 Merge bitcoin/bitcoin#33869: refactor: Avoid -W*-whitespace in git archive
c8715aca95 Merge bitcoin/bitcoin#33247: build: Remove CMAKE_SKIP_BUILD_RPATH and SKIP_BUILD_RPATH settings
ee5de407e3 Merge bitcoin/bitcoin#33537: guix: build `bitcoin-qt` with static libxcb & utils
024a787350 Merge bitcoin/bitcoin#33876: doc: Update NetBSD Build Guide
c66e988754 Merge bitcoin/bitcoin#33865: cmake: Specify Windows plugin path in `test_bitcoin-qt` property
c29eaeeaf9 doc: Update NetBSD Build Guide
7f318e1dd0 test: Add better coverage for Autofile size()
e221b25246 Merge bitcoin/bitcoin#33860: depends: drop Qt patches
b7af960eb8 refactor: Add AutoFile::size
ec0f75862e refactor: Modernize logging in util/asmap.cpp
606a251e0a tests: add unit test vectors for asmap interpreter
6657bcbdb4 kernel: allow null data_directory
0aebdac95d init: completely remove `-maxorphantx` option
99d012ec80 refactor: return reference instead of pointer
f743e6c5dd refactor: add missing LIFETIMEBOUND annotation for parameter
fa95353902 ci: Run macos tasks in a git archive, not git checkout
141117f5e8 refactor: remove incorrect LIFETIMEBOUND annotations
fae3618fd6 ci: Annotate all check runs with the pull request number
faf05d637d ci: Retry lint image building once after failure
96963b888e depends: static libxcb
ad06843fab depends: avoid qdbusviewer in Qt build
6848ed56dc depends: apply Qt patches to fix static libxcb use
dfde31f2ec Merge bitcoin/bitcoin#33864: scripted-diff: fix leftover references to `policy/fees.h`
5f1b016beb depends: static libxcb-util-image
98a2fbbe70 depends: static libxkbcommon
1412baf772 depends: static libxcb-util-wm
a4009dadf4 depends: static libxcb-keysyms
bcfb8679b3 depends: static libxcb-render-util
faf99ae379 refactor: Avoid -W*-whitespace in git archive
2594d5a189 build: Remove CMAKE_SKIP_BUILD_RPATH and SKIP_BUILD_RPATH settings
310e4979b3 qt: Added test coverage for qt gui#901 console history filter
0dd8d5c237 cmake: Specify Windows plugin path in `test_bitcoin-qt` property
b0a3887154 scripted-diff: fix leftover references to `policy/fees.h`
48d4b936e0 Merge bitcoin/bitcoin#33511: init: Fix Ctrl-C shutdown hangs during wait calls
3c3c6adb72 Merge bitcoin/bitcoin#33745: mining: check witness commitment in submitBlock
e652b69b8d Merge bitcoin/bitcoin#33003: test: add option to skip large re-org test in feature_block
3789215f73 Merge bitcoin/bitcoin#33724: refactor: Return uint64_t from GetSerializeSize
d4e2a45833 Merge bitcoin/bitcoin#33750: doc: document fingerprinting risk when operating node on multiple networks
47618446a0 Merge bitcoin/bitcoin#33853: kernel: Allow null arguments for serialized data
3e9aca6f1b depends: drop qtbase-moc-ignore-gcc-macro.patch qt patch
fac4f6de28 ci: Rewrite lint task Bash snippet to Python
fa0d37a579 ci: Rewrite Bash to check inputs to Python
0da5a82700 depends: drop unused qt patch
fae83611b8 ci: [refactor] Use --preset=dev-mode in mac_native task
fadb67b4b4 ci: [refactor] Base nowallet task on --preset=dev-mode
6666980e86 ci: Enable bitcoin-chainstate and test_bitcoin-qt in win64 task
d0da953773 Merge bitcoin/bitcoin#32482: build: add `-W*-whitespace`
f450761f83 Merge bitcoin/bitcoin#33842: build: Bump g++ minimum supported version to 12
faff7b2312 ci: Enable experimental kernel stuff in i686 task
fa1632eecf ci: Enable experimental kernel stuff in mac-cross tasks
fad10ff7c9 ci: Enable experimental kernel stuff in armhf task
fa9d67c13d ci: Enable experimental kernel stuff in Alpine task
fab3fb8302 ci: Enable experimental kernel stuff in s390x task
fa7da8a646 ci: Enable experimental kernel stuff in valgrind task
fa9c2973d6 ci: Enable experimental kernel stuff in TSan task
fad30d4395 ci: Enable experimental kernel stuff in MSan task
fa9f29a4a7 doc: Recommend latest Debian stable or Ubuntu LTS
fa1711ee0d doc: Add GCC-12 min release notes
faa8be75c9 ci: Enable experimental kernel stuff in G++-12 task (previous releases)
fabce97b30 test: Remove gccbug_90348 test case
fa3854e432 test: Remove unused fs::create_directories test
fa9dacdbde util: [refactor] Remove unused create_directories workaround
138726a6f8 Merge bitcoin/bitcoin#33850: depends: drop qtbase_avoid_native_float16 qt patch
1c3d5c8ffd Merge bitcoin/bitcoin#33840: test: [refactor] Use reference over ptr to chainman
40dcbf580d build: add -Wtrailing-whitespace=any
a3ac59a431 ci: Enable experimental kernel stuff in ASan task
5b89956eeb kernel: Allow null arguments for serialized data
169f93d2ac depends: drop qtbase_avoid_native_float16 qt patch
d7659cd7e6 build: add -Wleading-whitespace=spaces
d86650220a cmake: Disable `-Wtrailing-whitespace` warnings for RCC-generated files
aabc5ca6ed cmake: Switch from AUTORCC to `qt6_add_resources`
25ae14c339 subprocess: replace tab with space
0c2b9dadd5 scripted-diff: remove whitespace in sha256_sse4.cpp
4da084fbc9 scripted-diff: change whitespace to spaces in univalue
e6caf150b3 ci: add moreutils to lint job
a7e8067610 Merge bitcoin/bitcoin#33181: guix: build for Linux HOSTS with `-static-libgcc`
b354d1ce5c Merge bitcoin/bitcoin#33820: kernel: trim Chain interface
fa807f78ae build: Bump g++ minimum supported version to 12
a4e96cae7d Merge bitcoin/bitcoin#33042: refactor: inline constant return values from `dbwrapper` write methods
8c2710b041 Merge bitcoin/bitcoin#32517: rpc: add "ischange: true" to decoded tx outputs in wallet gettransaction response
1fe851a478 Merge bitcoin/bitcoin#32180: p2p: Advance pindexLastCommonBlock early after connecting blocks
5f0303b93f Merge bitcoin/bitcoin#33443: log: reduce excessive "rolling back/forward" messages during block replay
f4903dddc9 Merge bitcoin/bitcoin#33433: Bugfix: QA: rpc_bind: Skip nonloopback test if no such address is found
7a4901c902 test, refactor: Fix `-Warray-bounds` warning
06e9458869 Merge bitcoin/bitcoin#32856: Update `minisketch` subtree
66978a1a95 kernel: remove btck_chain_get_tip
4dd7e6dc48 kernel: remove btck_chain_get_genesis
faf2759c8c test: [refactor] Use reference over ptr to chainman
490cb056f6 Merge bitcoin/bitcoin#33785: util: Allow `Assert` (et al.) in contexts without __func__
dcd0099a76 Merge bitcoin/bitcoin#33826: scripted-diff: Remove obsolete comment
01adbbcd9c Merge bitcoin/bitcoin#33827: doc: Correct `pkgin` command usage on NetBSD
eec21bc7c8 Merge bitcoin/bitcoin#33536: doc: reference fuzz coverage steps in quick-start
035f934e02 Merge bitcoin/bitcoin#33823: ci: Use cmake --preset=dev-mode in test-each-commit task
ddd2afac10 Merge bitcoin/bitcoin#33676: interfaces: enable cancelling running `waitNext` calls
dee7eec643 doc: mention coverage build in quickstart section
0698c6b494 doc: Correct `pkgin` command usage on NetBSD
36724205fc scripted-diff: Remove obsolete comment
ca1ce52a0f Merge bitcoin/bitcoin#33825: refactor: Add missing include in bitcoinkernel_wrapper.h
fa1e8d8bad refactor: Add missing include in bitcoinkernel_wrapper.h
fa6db67369 ci: [refactor] Extract build_dir constant in ci-test-each-commit-exec.py
fa95e6cdc1 ci: Use cmake --preset=dev-mode in test-each-commit task
513a0da2e0 Merge bitcoin/bitcoin#33818: ci: Extend tidy job to cover kernel code
5d0a40d607 ci: Extend tidy job to cover kernel code
93e79181da Merge bitcoin/bitcoin#33786: script: remove dead code in `CountWitnessSigOps`
3c4bec6223 Merge bitcoin/bitcoin#33782: test: remove obsolete `get_{key,multisig}` helpers from wallet_util.py
4b12beedae Merge bitcoin/bitcoin#33793: test: move create_malleated_version() to messages.py for reuse
0b45e6db10 Merge bitcoin/bitcoin#33789: doc: add cmake help option in Windows build docs
2b9c351198 Merge bitcoin/bitcoin#33768: refactor: remove dead branches in `SingletonClusterImpl`
fad6efd3be refactor: Use STR_INTERNAL_BUG macro where possible
fada379589 doc: Remove unused bugprone-lambda-function-name suppression
f06c6e1898 guix: build for Linux HOSTS with -static-libgcc
1bdf4695b0 guix: patch store paths out of libunwind
078a72c35f guix: move static-libc++ into CMAKE_EXE_LINKER_FLAGS flags
2bd155e6ee test: move create_malleated_version() to messages.py for reuse
9577daa3b8 doc: Add cmake help option in Windows build instructions
fae1d99651 refactor: Use const reference to std::source_location
fa5fbcd615 util: Allow Assert() in contexts without __func__
24bcad3d4d refactor: remove dead code in `CountWitnessSigOps`
ec8516ceb7 test: remove obsolete `get_{key,multisig}` helpers from wallet_util.py
2d23820ee1 refactor: remove dead branches in `SingletonClusterImpl`
e346ecae83 Add eclipse, partitioning, and fingerprinting note to i2p.md
f6ec3519a3 init: Require explicit -asmap filename
6eaa00fe20 test: clarify submitBlock() mutates the template
862bd43283 mining: ensure witness commitment check in submitBlock
00d1b6ef4b doc: clarify UpdateUncommittedBlockStructures
929f69d0ff qt: Remove HD seed reference from blank wallet tooltip
19a6a3e75e Add eclipse, partitioning, and fingerprinting note in tor.md
fa6c0bedd3 refactor: Return uint64_t from GetSerializeSize
fad0c8680e refactor: Use uint64_t over size_t for serialized-size values
fa4f388fc9 refactor: Use fixed size ints over (un)signed ints for serialized values
060bb55508 rpc: add decoded tx details to gettransaction with extra wallet fields
ad1c3bdba5 [move only] move DecodeTxDoc() to a common util file for sharing
d633db5416 rpc: add "ischange: true" in wallet gettransaction decoded tx output
fa01f38e53 move-only: Move CBlockFileInfo to kernel namespace
fa2bbc9e4c refactor: [rpc] Remove cast when reporting serialized size
fa364af89b test: Remove outdated comment
dcb56fd4cb interfaces: add interruptWait method
de7c3587cd doc: Update add checksum instructions in tutorial
c235aa468b Update minisketch subtree to latest upstream
4543a3bde2 Squashed 'src/minisketch/' changes from ea8f66b1ea..d1bd01e189
01cc20f330 test: improve coverage for a resolved stalling situation
9af6daf07e test: remove magic number when checking for blocks that have arrived
3069d66dca p2p: During block download, adjust pindexLastCommonBlock better
2a46e94a16 doc: Update multisig-tutorial.md to use multipath descriptors
c25a5e670b init: Signal m_tip_block_cv on Ctrl-C
f53dbbc505 test: Add functional tests for named argument parsing
694f04e2bd rpc: Handle -named argument parsing where '=' character is used
6a29f79006 test: Test SIGTERM handling during waitforblockheight call
1fc7a81f1f log: reduce excessive messages during block replay
79b4c276e7 Bugfix: QA: rpc_bind: Skip nonloopback test if no such address is found
743abbcbde refactor: inline constant return value of `BlockTreeDB::WriteBatchSync` and `BlockManager::WriteBlockIndexDB` and `BlockTreeDB::WriteFlag`
e030240e90 refactor: inline constant return value of `CDBWrapper::Erase` and `BlockTreeDB::WriteReindexing`
cdab9480e9 refactor: inline constant return value of `CDBWrapper::Write`
d1847cf5b5 refactor: inline constant return value of `TxIndex::DB::WriteTxs`
50b63a5698 refactor: inline constant return value of `CDBWrapper::WriteBatch`
8810642b57 test: add option to skip large re-org test in feature_block
d31158d364 psbt: clarify PSBT, PSBTInput, PSBTOutput unserialization flows
28a4fcb03c test: check listdescriptors do not return a mix of hardened derivation marker
975783cb79 descriptor: account for all StringType in MiniscriptDescriptor::ToStringHelper()

git-subtree-dir: depend/bitcoin
git-subtree-split: 0690514d4f72aac251ee0b876cded9187d42c63e
sedited added a commit to sedited/rust-bitcoinkernel that referenced this pull request Nov 25, 2025
…9e054930101

09e054930101 Add sans utxo set block validation
d0660fbf582f block header
6493e47fd8d3 doc: Add docstrings for ConnectBlock and SpendBlock
ed35dc3c4a52 validation: Move coin existence and spend check to SpendBlock
637000b981c0 validation: Move SetBestBlock out of ConnectBlock
91ff9de0076f validation: Add SpendBlock function
20b5547f32b3 validation: Use vector of outputs instead of CCoinsViewCache in CheckInputScripts
4bee0a8cf671 consensus: Use Coin span in CheckTxInputs
1bedce6b44bd consensus: Use Coin span in GetTransactionSigOpCost
bec73c5e30ad consensus: Use Coin span in GetP2SHSigOpCount
REVERT: 3789215f7346 Merge bitcoin/bitcoin#33724: refactor: Return uint64_t from GetSerializeSize
REVERT: d4e2a4583305 Merge bitcoin/bitcoin#33750: doc: document fingerprinting risk when operating node on multiple networks
REVERT: 47618446a06d Merge bitcoin/bitcoin#33853: kernel: Allow null arguments for serialized data
REVERT: a3ac59a43163 ci: Enable experimental kernel stuff in ASan task
REVERT: 5b89956eeb76 kernel: Allow null arguments for serialized data
REVERT: e346ecae830e Add eclipse, partitioning, and fingerprinting note to i2p.md
REVERT: 19a6a3e75ed6 Add eclipse, partitioning, and fingerprinting note in tor.md
REVERT: fa6c0bedd33a refactor: Return uint64_t from GetSerializeSize
REVERT: fad0c8680ea7 refactor: Use uint64_t over size_t for serialized-size values
REVERT: fa4f388fc99c refactor: Use fixed size ints over (un)signed ints for serialized values
REVERT: fa01f38e53cf move-only: Move CBlockFileInfo to kernel namespace
REVERT: fa2bbc9e4cfe refactor: [rpc] Remove cast when reporting serialized size
REVERT: fa364af89bd9 test: Remove outdated comment

git-subtree-dir: libbitcoinkernel-sys/bitcoin
git-subtree-split: 09e05493010119fc60d310d3e7ffc388de441f9a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

GetSerializeSize's return type should not be platform dependent