✅ l0rinc closed a pull request: "validation: make the "rolling forward" loop interruptible"
(https://github.com/bitcoin/bitcoin/pull/33442)
(https://github.com/bitcoin/bitcoin/pull/33442)
💬 l0rinc commented on pull request "validation: make the "rolling forward" loop interruptible":
(https://github.com/bitcoin/bitcoin/pull/33442#issuecomment-3314621836)
Closing in favor of https://github.com/bitcoin/bitcoin/pull/30155
(https://github.com/bitcoin/bitcoin/pull/33442#issuecomment-3314621836)
Closing in favor of https://github.com/bitcoin/bitcoin/pull/30155
💬 l0rinc commented on pull request "validation: Make ReplayBlocks interruptible":
(https://github.com/bitcoin/bitcoin/pull/30155#issuecomment-3314625043)
I have tested this with a recent interrupted reindex, it correctly interrupts and flushes and on next start continues from where we left off:
```
2025-09-20T06:11:25Z Rolling forward 00000000127100b0bcdde9e9f363ae231c73e885e2d527821ef9ce0457930494 (51141)
2025-09-20T06:11:25Z Rolling forward 0000000013484b73eff09514abc3f916b319eb9f43c55f051be9e760ad2210d0 (51142)
^C2025-09-20T06:11:25Z Flushing intermediate state of replay
2025-09-20T06:11:25Z [error] Unable to replay blocks. You will need
...
(https://github.com/bitcoin/bitcoin/pull/30155#issuecomment-3314625043)
I have tested this with a recent interrupted reindex, it correctly interrupts and flushes and on next start continues from where we left off:
```
2025-09-20T06:11:25Z Rolling forward 00000000127100b0bcdde9e9f363ae231c73e885e2d527821ef9ce0457930494 (51141)
2025-09-20T06:11:25Z Rolling forward 0000000013484b73eff09514abc3f916b319eb9f43c55f051be9e760ad2210d0 (51142)
^C2025-09-20T06:11:25Z Flushing intermediate state of replay
2025-09-20T06:11:25Z [error] Unable to replay blocks. You will need
...
💬 l0rinc commented on pull request "RFC: blocks: add `-reobfuscate-blocks` arg to xor existing blk/rev on startup":
(https://github.com/bitcoin/bitcoin/pull/33324#discussion_r2365380262)
Thanks again for the review, I have pushed a change to fix the CI and took a few suggestion from your branch (chunking, code simplifications), but kept the original file iteration with progress indicator for now.
The parallelization complicates the situation considerably, I will see if I can find a simpler way or if single-threaded execution is also acceptable.
(https://github.com/bitcoin/bitcoin/pull/33324#discussion_r2365380262)
Thanks again for the review, I have pushed a change to fix the CI and took a few suggestion from your branch (chunking, code simplifications), but kept the original file iteration with progress indicator for now.
The parallelization complicates the situation considerably, I will see if I can find a simpler way or if single-threaded execution is also acceptable.
💬 vasild commented on pull request "system: improve handling around GetTotalRAM()":
(https://github.com/bitcoin/bitcoin/pull/33435#discussion_r2365387629)
By the way:
```
warning: implicit conversion changes signedness: 'long' to 'unsigned long long' [-Wsign-conversion]
... return clamp(1ULL * p * s);
... ~ ^
```
changing it to
```cpp
clamp(static_cast<uint64_t>(p) * static_cast<uint64_t>(s))
```
silences that. `-Wsign-conversion` also enabled by `-Wconversion` is not used by Bitcoin Core, so we don't see it when compiling. In this case the code is ok because values are explicitly checked that they are greater than 0 be
...
(https://github.com/bitcoin/bitcoin/pull/33435#discussion_r2365387629)
By the way:
```
warning: implicit conversion changes signedness: 'long' to 'unsigned long long' [-Wsign-conversion]
... return clamp(1ULL * p * s);
... ~ ^
```
changing it to
```cpp
clamp(static_cast<uint64_t>(p) * static_cast<uint64_t>(s))
```
silences that. `-Wsign-conversion` also enabled by `-Wconversion` is not used by Bitcoin Core, so we don't see it when compiling. In this case the code is ok because values are explicitly checked that they are greater than 0 be
...
💬 TheCharlatan commented on pull request "kernel: Introduce initial C header API":
(https://github.com/bitcoin/bitcoin/pull/30595#discussion_r2365546655)
I think it would be a nice addition. Others have asked for it too before. I'm not sure about the best approach to expose them though. Should we just copy them, or make the header installable and reuse it for both our internal code and the external API?
(https://github.com/bitcoin/bitcoin/pull/30595#discussion_r2365546655)
I think it would be a nice addition. Others have asked for it too before. I'm not sure about the best approach to expose them though. Should we just copy them, or make the header installable and reuse it for both our internal code and the external API?
✅ fanquake closed a pull request: "[30.0] Final changes + rc2"
(https://github.com/bitcoin/bitcoin/pull/33424)
(https://github.com/bitcoin/bitcoin/pull/33424)
📝 fanquake reopened a pull request: "[30.0] Final changes + rc2"
(https://github.com/bitcoin/bitcoin/pull/33424)
Backports:
* #28592
* #33420
Finalise `v30.0rc2`
(https://github.com/bitcoin/bitcoin/pull/33424)
Backports:
* #28592
* #33420
Finalise `v30.0rc2`
💬 fanquake commented on pull request "build: Remove lingering Windows registry & shortcuts (#32132 follow-up)":
(https://github.com/bitcoin/bitcoin/pull/33422#issuecomment-3314831522)
Backported to 30.x in #33424.
(https://github.com/bitcoin/bitcoin/pull/33422#issuecomment-3314831522)
Backported to 30.x in #33424.
💬 pinheadmz commented on issue "RPC: getblock(header) returns the same target for every block":
(https://github.com/bitcoin/bitcoin/issues/33440#issuecomment-3314882141)
> Why would we want to know the current target when looking up information about an old block?
@Sjors
(https://github.com/bitcoin/bitcoin/issues/33440#issuecomment-3314882141)
> Why would we want to know the current target when looking up information about an old block?
@Sjors
💬 sdaftuar commented on pull request "Cluster mempool implementation":
(https://github.com/bitcoin/bitcoin/pull/28676#discussion_r2365588805)
Good catch -- I'm working on a solution to this, possibly involving a more extensive rewrite of the TRUC checks (to not need parents/ancestors explicitly calculated) and the RBF checks (to not require ancestors to be calculated before we verify that the cluster size limits are respected).
(https://github.com/bitcoin/bitcoin/pull/28676#discussion_r2365588805)
Good catch -- I'm working on a solution to this, possibly involving a more extensive rewrite of the TRUC checks (to not need parents/ancestors explicitly calculated) and the RBF checks (to not require ancestors to be calculated before we verify that the cluster size limits are respected).
💬 john-moffett commented on pull request "rpc: Always return per-wtxid entries in submitpackage tx-results":
(https://github.com/bitcoin/bitcoin/pull/33427#discussion_r2365625178)
This is somewhat academic today as the RPC already [errors](https://github.com/bitcoin/bitcoin/blob/df101c97c260793627208d8c334afc9551759e2b/src/rpc/mempool.cpp#L1054) on anything but all-or-none results from `ProcessNewPackage`:
`CHECK_NONFATAL(m_tx_results.size() == txns.size() || m_tx_results.empty())`
So if partial maps from `ProcessNewPackage` were ever done in practice, a call to `submitpackage` would run into that first check. If that guard were relaxed and tested to accommodate the
...
(https://github.com/bitcoin/bitcoin/pull/33427#discussion_r2365625178)
This is somewhat academic today as the RPC already [errors](https://github.com/bitcoin/bitcoin/blob/df101c97c260793627208d8c334afc9551759e2b/src/rpc/mempool.cpp#L1054) on anything but all-or-none results from `ProcessNewPackage`:
`CHECK_NONFATAL(m_tx_results.size() == txns.size() || m_tx_results.empty())`
So if partial maps from `ProcessNewPackage` were ever done in practice, a call to `submitpackage` would run into that first check. If that guard were relaxed and tested to accommodate the
...
📝 enirox001 opened a pull request: "rpc: Fix dumptxoutset rollback with competing forks"
(https://github.com/bitcoin/bitcoin/pull/33444)
Fixes dumptxoutset rollback functionality when competing forks exist.
**Problem:**
dumptxoutset rollback fails when competing forks are present at the target height, even though it should work on the active chain regardless of forks.
Attempts to fix #32817.
**Solution:**
- Fix rollback logic to handle competing forks correctly
- Add test coverage for the fix
**Changes:**
- Add functional test demonstrating the issue and verifying the fix
- Update dumptxoutset rollback implementa
...
(https://github.com/bitcoin/bitcoin/pull/33444)
Fixes dumptxoutset rollback functionality when competing forks exist.
**Problem:**
dumptxoutset rollback fails when competing forks are present at the target height, even though it should work on the active chain regardless of forks.
Attempts to fix #32817.
**Solution:**
- Fix rollback logic to handle competing forks correctly
- Add test coverage for the fix
**Changes:**
- Add functional test demonstrating the issue and verifying the fix
- Update dumptxoutset rollback implementa
...
💬 fanquake commented on pull request "fuzz: reduce iterations in slow targets":
(https://github.com/bitcoin/bitcoin/pull/33429#issuecomment-3314984363)
@furszy Could you PR that branch separately?
(https://github.com/bitcoin/bitcoin/pull/33429#issuecomment-3314984363)
@furszy Could you PR that branch separately?
🚀 fanquake merged a pull request: "fuzz: reduce iterations in slow targets"
(https://github.com/bitcoin/bitcoin/pull/33429)
(https://github.com/bitcoin/bitcoin/pull/33429)
✅ fanquake closed an issue: "fuzz: Speed up mini_miner fuzz target?"
(https://github.com/bitcoin/bitcoin/issues/32870)
(https://github.com/bitcoin/bitcoin/issues/32870)
💬 fanquake commented on issue "fuzz: Speed up mini_miner fuzz target?":
(https://github.com/bitcoin/bitcoin/issues/32870#issuecomment-3314986378)
Think we can close this based on #33429.
(https://github.com/bitcoin/bitcoin/issues/32870#issuecomment-3314986378)
Think we can close this based on #33429.
✅ Sjors closed a pull request: "mining: add applySolution() to interface"
(https://github.com/bitcoin/bitcoin/pull/33374)
(https://github.com/bitcoin/bitcoin/pull/33374)
💬 Sjors commented on pull request "mining: add applySolution() to interface":
(https://github.com/bitcoin/bitcoin/pull/33374#issuecomment-3314987630)
> 1. Main question is why is this new applySolution method needed at all if `submitSolution()` modifies the block and there is already a `getBlock()` method?
This is a great point. Let's just embrace the fact that `submitSolution()` modifies the block.
I'll extract some of the documentation improvements, and add some based on your comments, and PR those later.
(https://github.com/bitcoin/bitcoin/pull/33374#issuecomment-3314987630)
> 1. Main question is why is this new applySolution method needed at all if `submitSolution()` modifies the block and there is already a `getBlock()` method?
This is a great point. Let's just embrace the fact that `submitSolution()` modifies the block.
I'll extract some of the documentation improvements, and add some based on your comments, and PR those later.
💬 Sjors commented on pull request "mining: add applySolution() to interface":
(https://github.com/bitcoin/bitcoin/pull/33374#discussion_r2365640546)
This test only calls `submitSolution()` once, unless I'm missing something?
(https://github.com/bitcoin/bitcoin/pull/33374#discussion_r2365640546)
This test only calls `submitSolution()` once, unless I'm missing something?