#36481 wallet, rpc, gui: Allow users to manually rebroadcast a wallet transaction
| Reviewability | Reviews | Agreement | Size | ||||
|---|---|---|---|---|---|---|---|
| #36481 wallet, rpc, gui: Allow users to manually rebroadcast a wallet transaction | CI failing | 0 | Blocked | 99 + 24 tests | |||
|
|
|
|
| |||
Reviewability: ReadyStalePaused Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs. Size: lines added or modified outside tests, then in tests; greener = smaller. | |||||||
Goal
Adds a `rebroadcastwallettx` RPC method and a GUI context menu action to allow manual rebroadcasting of unconfirmed wallet transactions. The wallet extracts broadcast eligibility checks into a helper and submits the transaction to the mempool with immediate peer broadcast. It exposes these checks through the node-wallet interface to enable or disable the GUI context menu action.
Problem: Users have no direct way in the wallet interface or RPC to manually rebroadcast an unconfirmed transaction that failed to propagate or dropped out of mempools. Today, doing so requires extracting the raw transaction hex and invoking `sendrawtransaction`.
Evidence of importance:
- PR description: 'From the discussion in #36403, it is clear that there needs to be a way for users to rebroadcast a transaction. Currently, the way to do so requires getting the raw transaction, getting the hex, and using `sendrawtransaction`.'
Risk of a mistake: medium (wallet, rpc_api, gui). A bug in rebroadcast eligibility or submission logic could broadcast unwanted, abandoned, or conflicted transactions across the network.
Changed since the previous assessment: Diff provided; commits and functionality are unchanged.
Reviewability
Ready · CI failing
CI is red; check whether the failure is the PR's before a deep review.
Waiting on (from the thread read):
- author: addressing fametrano's objection regarding feerate exceeding -maxfeerate 2026-10-25
- author: responding to vasild's review comments and question 2026-10-27
Agreement
Blocked
objection that needs a change, nobody has replied (fametrano)
Thread notes: vasild gave an Approach ACK and opened several review comments, including a question regarding Qt menu accelerators and suggestions on error handling and RPC documentation.
Objections, suggestions, and questions:
| Reviewer | Type | Harm, request, or question | Status | Must be | Author replied | Quote |
|---|---|---|---|---|---|---|
| fametrano (none) | objection, correctness | rebroadcastwallettx fails with code -1 and an empty message when the transaction feerate exceeds -maxfeerate | open | changed | no | 2026-10-25: 'rebroadcastwallettx fails with code -1 and an empty message when the transaction is out of the mempool and its feerate is above the wallet's `-maxfeerate`' |
| vasild (member) | question, interface | what is the purpose of the ampersand in menu items like 'Re&broadcast'? | open | answered | no | 2026-10-27: 'What is the `&` in `Re&broadcast`? It is also in `A&bandon`.' |
| vasild (member) | suggestion, interface | extend TransactionCanBeBroadcast() to return the specific reason why a transaction cannot be broadcast | open | answered | no | 2026-10-27: 'Consider extending `TransactionCanBeBroadcast()` to return the reason why the transaction can not be broadcast:' |
| vasild (member) | suggestion, interface | throw a JSONRPCError instead of returning null when no wallet is found | open | answered | no | 2026-10-27: 'Should we not throw here? `UniValue::VNULL` is for "If rebroadcast is successfully initiated".' |
| vasild (member) | suggestion, interface | add a sentence directing users to listtransactions RPC in the help text | open | answered | no | 2026-10-27: 'I think it would be useful to add the sentence `Use the listtransactions RPC to see the wallet transactions` here.' |
Support:
- polespinasa (member) (Concept ACK, 2026-10-08): (no reason given) [not substantive]
- mzumsande (member) (Concept ACK, 2026-10-09): giving the users the option to rebroadcast transactions manually is useful in all scenarios
- murchandamus (member) (Concept ACK, 2026-10-21): (no reason given) [not substantive]
- jpk68 (contributor) (Concept ACK, 2026-10-22): (no reason given) [not substantive]
- fametrano (none) (Concept ACK, 2026-10-25): (no reason given) [not substantive]
- vasild (member) (Approach ACK, 2026-10-27): (no reason given) [not substantive]
Participants:
- polespinasa (member, support, 1 statements 2026-10-08 to 2026-10-08): Concept ACK
- mzumsande (member, support, 1 statements 2026-10-09 to 2026-10-09): Concept ACK: manual rebroadcast is useful regardless of the ultimate rebroadcast solution
- murchandamus (member, support, 1 statements 2026-10-21 to 2026-10-21): Concept ACK
- jpk68 (contributor, support, 1 statements 2026-10-22 to 2026-10-22): Concept ACK
- fametrano (none, objection, 1 statements 2026-10-25 to 2026-10-25): Concept ACK, but noted that rebroadcastwallettx fails with an empty error message when feerate exceeds -maxfeerate
- vasild (member, support, 9 statements 2026-10-27 to 2026-10-27): Approach ACK, suggested improvements to error reporting and RPC handling
Files
24 lines under test/bench/ci.
- src/wallet/wallet.cpp +35/-4
- src/wallet/rpc/transactions.cpp +28/-0
- test/functional/wallet_resendwallettransactions.py +24/-0
- src/qt/transactionview.cpp +16/-0
- src/interfaces/wallet.h +6/-0
- src/wallet/interfaces.cpp +6/-0
- src/wallet/wallet.h +4/-0
- src/qt/transactionview.h +2/-0
- src/wallet/rpc/wallet.cpp +2/-0
Card
The short text the ranking pass compares across PRs.
Adds a rebroadcastwallettx RPC command and a GUI context menu item allowing users to manually rebroadcast an unconfirmed wallet transaction by txid. Previously, manual rebroadcast required fetching the raw transaction hex and submitting it via sendrawtransaction. The wallet validates eligibility by ensuring the transaction is not abandoned, coinbase, or confirmed before submitting it to the mempool and relaying it to all peers. The addition was motivated by broader transaction rebroadcasting discussions in issue 36403.
Data
thread read through 2026-10-27 (14 statements), head 648450039a
labels: CI failed
Categories
Wallet
P3 · new feature (ranking pass: Moved down: convenience wrapper over existing sendrawtransaction, below the feature work with linked user demand.)
Adds a direct RPC and GUI mechanism for users to rebroadcast unconfirmed wallet transactions without manual hex extraction. As noted in the description, 'there needs to be a way for users to rebroadcast a transaction' without having to resort to getting the hex and calling sendrawtransaction; this is a clear user-facing improvement that remains reasonably deferrable.
Membership: Implements a new wallet RPC rebroadcastwallettx, exposes wallet rebroadcast eligibility logic, and adds a GUI context menu action.
Factors: security/stability 0, bug 0, performance 0, user value 2, leverage 0