extend post-broadcast mempool poll timeout to support bitcoin core privatebroadcast
What changed, and why it matters
This commit simply increases how long Sparrow Wallet waits after broadcasting a transaction before giving up on seeing it in the Bitcoin memory pool (mempool). The change is from 3 polling iterations to 12, with the stated goal of supporting Bitcoin Core's 'privatebroadcast' feature, which can delay when a transaction becomes visible. There is no indication this fixes a security vulnerability; it is a compatibility/timeout adjustment.
No security action required. Treat as routine compatibility/maintenance change. If reviewing the broader feature, verify that the longer timeout does not meaningfully degrade user experience or mask unrelated broadcast failures.
Security signals we found
No security-relevant code change identified
Timeout value increase only
No input validation, authentication, or cryptographic modifications
Commit message does not describe a vulnerability or security fix
Evidence from the diff
The patch modifies HeadersController.java to raise the iteration threshold for cancelling the post-broadcast mempool search from 3 to 12. The associated submodule reference ‘drongo’ was also updated. The commit message frames this as supporting Bitcoin Core privatebroadcast, which intentionally delays transaction propagation. No cryptographic, network, or access-control changes are present.
Changed components
src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.javadrongo submoduleInspect captured patch +2 / −2
diff --git a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java
index c6373ac..7e458a2 100644
--- a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java
+++ b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java
@@ -1293,7 +1293,7 @@ public class HeadersController extends TransactionFormController implements Init
Platform.runLater(() -> EventManager.get().post(new WalletNodeHistoryChangedEvent(scriptHashes.iterator().next())));
}
- if(transactionMempoolService.getIterationCount() > 3 && !transactionMempoolService.isCancelled()) {
+ if(transactionMempoolService.getIterationCount() > 12 && !transactionMempoolService.isCancelled()) {
transactionMempoolService.cancel();
broadcastProgressBar.setProgress(0);
log.error("Timeout searching for broadcasted transaction");
Why this scored 18/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.