(+)#35675 ismaelsadeeq mining: add block template manager- Centralize mining coordination and template lifecycle handling in a dedicated manager
- Avoid unnecessary block data copying during getblocktemplate RPC calls
- Unblock downstream improvements to template memory and fee tracking
| P2 · unblocks #35581- P2 because it cleans up the architectural boundary between mining coordination and node internals
- Directly unblocks template memory tracking and fee inflow tracking in downstream work
| Ready- Ready to review now with clean CI and an active author
| 4 (+1) | Mild- Strong consensus across multiple reviewers after verifying rebase and lifecycle fixes
- Supported after copy-avoidance suggestions were incorporated (Sjors)
- Verified SubmitBlock rebase fix and test lifecycle ordering (w0xlt, pablomartin4btc)
- Nonblocking suggestion that the new fuzz harness could be deepened in a follow-up (marcofleon)
| 478 + 413 tests- 478 lines added or modified outside tests
- 413 lines added or modified in tests
- 449 lines removed in total
- 28 files, 15 commits
|
(+)#35671 Sjors mining: add TxCollection to bandwidth-efficiently validate external block templates- Allow Stratum v2 services to validate miner-submitted block templates directly against the mempool
- Saves bandwidth and compute by avoiding duplicate mempool mirrors in mining infrastructure
| P2 · new feature- P2 because it provides a key integration requirement for Stratum v2 template providers
- It unblocks downstream Job Declarator Servers from needing full mempool mirrors
- Reduces redundant transaction synchronization overhead across mining setups
| Ready- Ready for review after multiple stabilizing review rounds
| 0 | Strong- Strong concept support for avoiding mirror mempools in Stratum v2 (ismaelsadeeq, pablomartin4btc)
- Confirmed architectural benefit and resolved code review feedback (enirox001)
- Tested functionality with minor open question on error return codes (jeanpablojp)
| 412 + 320 tests- 412 lines added or modified outside tests
- 320 lines added or modified in tests
- 57 lines removed in total
- 9 files, 6 commits
|
(+)#35581 ismaelsadeeq node: add block template manager and track waitNext fee inflow- Avoid assembling full block templates on every tick just to check for mempool fee changes
- Reduce lock contention and CPU load during block generation for mining pools and template consumers
- Consolidate block creation and template state management into a unified interface
| P2 · speedup- P2 because replacing full block assembly on every poll removes main lock contention and CPU load for pools
- Meaningfully improves performance and operation for Stratum v2 and mining template consumers
| Review #35675 first | 0 | Strong- Strong support for incremental fee inflow tracking and architectural cleanup
- Suggested splitting out the base manager into a dedicated preparatory PR (Sjors)
- Concept approval praising incremental snapshot tracking and bug discovery via fuzzing (pablomartin4btc)
- Concept approval without stated reasons (w0xlt)
| 1,171 + 1,493 tests- 1,171 lines added or modified outside tests
- 1,493 lines added or modified in tests
- 587 lines removed in total
- 51 files, 27 commits
|
(+)#36192 Sjors test: cover unsatisfiable mining timestamp- Ensure block template creation handles impossible timestamp edge cases gracefully
- Verify mining interfaces cleanly recover and maintain connections once time advances
| P3 · test coverage- P3 because it adds test coverage for a reachable but practically infeasible mining edge case
- Confirms template generation fails cleanly with an error and recovers as soon as time advances
| Ready- Ready to review with all feedback addressed and passing continuous integration
| 1 | Strong- Full code review approval after earlier feedback was resolved (fjahr)
- Verified the new functional test passes on Ubuntu WSL (adezo24h1)
| 0 + 124 tests- 0 lines added or modified outside tests
- 124 lines added or modified in tests
- 29 lines removed in total
- 6 files, 5 commits
|
(+)#36097 xyzconstant mining: replace interrupt methods with cancellation arguments- Allow multi-process mining clients to cancel blocking calls cleanly within requests
- Eliminate ad-hoc interrupt calls and protocol race conditions in external mining interfaces
| P3 · cleanup- P3 because existing interrupt behavior already functions
- Improves interface ergonomics and stability for external template providers
- Does not affect critical consensus or mining correctness logic
| CI failing- CI is failing
- Temporarily vendors an unmerged upstream commit from libmultiprocess
| 0- No review verdicts recorded
| Strong- Strong support for native cancellation simplifying client and server interactions (ryanofsky)
- No objections raised
| 2,132 + 43 tests- 2,132 lines added or modified outside tests
- 43 lines added or modified in tests
- 615 lines removed in total
- 70 files, 2 commits
|
(+)#35598 Sjors test: cover feeThreshold = MAX_MONEY in interface_ipc_mining.py- Test that mining IPC template generation correctly ignores mempool fee increases when configured to do so
- Prevent silent regressions in template notifications for mining clients that only wait for new block tips
| P3 · test coverage- P3 because it adds functional test coverage for an existing mining interface configuration
- Validates template update behavior without introducing new node functionality
- Helps unblock follow-up mining IPC work
| Ready- Ready for review
- All reviewer feedback has been incorporated and CI is passing
| 0 (+1) | Strong- Strong support for adding this test coverage as a standalone change (enirox001)
- Approach approval with suggested assertions incorporated (jeanpablojp)
- Timing and fee-polling improvements incorporated (davidgumberg)
| 0 + 27 tests- 0 lines added or modified outside tests
- 27 lines added or modified in tests
- 11 lines removed in total
- 2 files, 1 commits
|
(+)#33922 Sjors mining: add getMemoryLoad() and track template non-mempool memory footprint- Track memory held by transactions retained only because open block templates reference them
- Expose template memory load over IPC so external mining clients like Stratum v2 providers can manage it
| P3 · new feature- P3 because tracking non-mempool template memory provides a useful operational tool for external miners
- Unevicted memory footprint is typically modest under standard conditions rather than a critical risk
| Review #35675 first | 0 (+2) | Strong- Consensus in favor of exposing template memory load over IPC
- Support for the design and utility of template memory tracking (ryanofsky, vasild, enirox001)
- Nonblocking objection: prefer node-side FIFO limits over delegating memory management to clients (ismaelsadeeq)
- Resolved objection: data race addressed by adding a mutex (ryanofsky)
- Resolved objection: brittle header workaround removed into another PR (maflcko)
| 630 + 457 tests- 630 lines added or modified outside tests
- 457 lines added or modified in tests
- 463 lines removed in total
- 34 files, 19 commits
|
(+)#35300 w0xlt mining: add precious option to IPC block submission- Let external mining software atomically submit and prefer a locally mined same-work block over IPC
- Avoid race conditions from issuing a separate preciousblock RPC call
| P3 · new feature- P3 because miners can atomically prefer a same-work block without coordinating across separate calls
- Worthwhile convenience for IPC mining setups but does not affect template generation performance
| Needs rebase- Needs rebase against current master due to merge conflicts
- Author has been silent since July 2026
| 0 | Mild- Concept approval for handling precious blocks directly over IPC (Sjors, pablomartin4btc)
- Questions whether duplicate status should still be returned if precious is requested (Sjors)
- Recommends splitting and reorganizing the oversized unit test (Sjors)
- Considers the internal chain activation refactoring a clean prerequisite (pablomartin4btc)
| 125 + 431 tests- 125 lines added or modified outside tests
- 431 lines added or modified in tests
- 100 lines removed in total
- 20 files, 6 commits
|
(+)#36047 chriszeng1010 rpc: handle createNewBlock() returning nullptr during shutdown- Prevent mining RPCs from throwing misleading internal bug assertions when called during node shutdown
- Return a clean shutdown error or abort gracefully when block template creation fails on exit
| P3 · bug fix- P3 because it fixes a minor error-handling race in mining RPCs during node shutdown
- Avoids spurious internal failure reports while longpolling or requesting templates as the node stops
| Ready- Ready for review
- Small patch with a reproduction functional test and passing CI
| 0- No review verdicts recorded
| Crickets- No reviews or concept comments yet
| 6 + 34 tests- 6 lines added or modified outside tests
- 34 lines added or modified in tests
- 4 lines removed in total
- 2 files, 1 commits
|
(+)#30437 ryanofsky ipc: add bitcoin-mine test program- Adds test coverage for client-side multiprocess IPC communication that Python tests cannot exercise
- Gives external mining tool developers a reference implementation for calling node interfaces over IPC
| P3 · test coverage- P3 because it validates block template creation and solution submission across process boundaries
- Unblocks end-to-end testing of mining interfaces over IPC for external mining software authors
| Ready- Ready to review; clean rebase, CI is passing, and author addressed all concrete feedback
| 0 (+3) | Mild- Support for adding test coverage for client-side multiprocess IPC (Sjors)
- Verified by testing connection, tip retrieval, and mining on macOS (BrandonOdiwuor)
- Questioned need for an in-tree client and suggested a dedicated CMake option (sedited)
- Noted that the binary should not be distributed in release packages (fanquake)
| 219 + 41 tests- 219 lines added or modified outside tests
- 41 lines added or modified in tests
- 7 lines removed in total
- 10 files, 5 commits
|
(+)#32468 polespinasa rpc: generateblock to allow multiple outputs- Allow generateblock to create coinbase transactions with multiple outputs and custom amounts on regtest
- Let generateblock automatically mine mempool transactions when no transaction list is provided
- Eliminates manual raw block construction boilerplate for developers testing multi-recipient coinbases
| P3 · new feature- P3 because it improves developer block generation tools on test chains without altering mainnet mining
- Enables testing pool setups like Ocean or Braidpool without manual raw block construction
| Ready- Ready to review now that requested design changes are implemented and rebased on master
| 0- No review verdicts recorded
| Strong- Strong consensus to extend generateblock rather than introducing a new RPC method
- Suggested extending generateblock and adding optional mempool mining (andrewtoth)
- Guided keeping test-only coinbase mutation logic out of core node miner code (maflcko)
- Advocated supporting custom reward splits rather than only equal shares (stickies-v)
| 131 + 134 tests- 131 lines added or modified outside tests
- 134 lines added or modified in tests
- 56 lines removed in total
- 15 files, 7 commits
|
(+)#36132 l0rinc mining: preserve lookup result count without a mempool- Preserve positional indexing in transaction lookups via the mining interface when no mempool is present
- Prevent broken indexing expectations by returning null entries matching request size instead of empty lists
| P4 · cleanup- P4 because the missing mempool scenario cannot happen in production mining workflows
- MakeMining waits for mempool initialization, making this primarily an internal interface cleanup
| Ready- Ready for review: small and cleanly tested with design questions resolved in discussion
| 1 | Strong- Strong consensus on preserving interface contract consistency across reviewers
- Tested and supported because unifying unpopulated and missing mempool states aids callers (Sjors)
- Concept approval for interface consistency (jeanpablojp, enirox001)
- Alternative contract redefinition suggestion answered in discussion (optout21)
| 2 + 16 tests- 2 lines added or modified outside tests
- 16 lines added or modified in tests
- 2 lines removed in total
- 2 files, 2 commits
|
(+)#36156 l0rinc mining: include chunks that exactly fill block limits- Allow block templates to include transactions that bring weight or sigops exactly to limits
- Avoids leaving unused capacity at the tail of a block template
| P4 · bug fix- P4 because the fee gain is marginal at under 1000 sats for a single tail transaction
- Block validity far outweighs minor fee optimizations for miners
| Ready- Ready to review
- Code and tests are complete with passing CI
| 0 | Mild- Concept approval to align assembler checks with consensus limits (ismaelsadeeq)
- Nonblocking objection: risk of an invalid block outweighs negligible fee gains under 1000 sats (ajtowns)
| 2 + 14 tests- 2 lines added or modified outside tests
- 14 lines added or modified in tests
- 8 lines removed in total
- 2 files, 2 commits
|