#36685 wallet: export replaces_txid and replaced_by_txid

ReviewabilityReviewsAgreementSize
#36685 vasild wallet: export replaces_txid and replaced_by_txidReady2Strong4
  • Restore transaction replacement metadata to the wallet interface after an earlier cleanup removed it
  • Allows downstream interfaces like gui-qml to display replacement transaction details
  • Ready to review
  • Strong support with no open objections
  • Confirmed gui-qml lost access when the backing value map was removed (pseudoramdom)
  • Supports merging so downstream gui-qml can update (johnny9)
  • 4 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 0 lines removed in total
  • 2 files, 1 commits
Wallet#48 of 92
P3 · bug fix
  • P3 because it restores replacement transaction IDs lost in an earlier interface cleanup
  • Downstream consumers like gui-qml need these fields to display replacement details
  • Ranking pass: Moved up to sit beside #36597, the other interface restoration serving gui-qml.
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

Export `replaces_txid` and `replaced_by_txid` from internal `wallet::CWalletTx` into the `interfaces::WalletTx` struct. In `MakeWalletTx`, populate both optional `Txid` fields from `wtx.m_replaces_txid` and `wtx.m_replaced_by_txid`.

Problem: A prior cleanup removed `interfaces::WalletTx::value_map` from the main repository without re-exporting replacement transaction IDs. Downstream interface consumers, specifically the experimental QML GUI repository, lost access to transaction replacement details.

Evidence of importance:

  • PR description references commit f4ff2b8db93 in bitcoin-core/gui-qml adding usage of `replaces_txid` and `replaced_by_txid`, followed by commit a2b0bfcd854 in bitcoin/bitcoin removing the backing `value_map` without exposing dedicated fields.

Risk of a mistake: low (wallet). This is a 4-line read-only export of existing transaction metadata across internal interface boundaries.

Changed since the previous assessment: No changes to the patch or commit; diff and commit details are now confirmed.

Reviewability

Ready

Nothing known that would invalidate a review now.

Waiting on (from the thread read):

  • nothing: PR has approvals and no open objections

Agreement

Strong

substantive support, no open objection (pseudoramdom, johnny9)

Thread notes: Author provided an example commit updating gui-qml's bitcoin submodule that depends on this PR; no new claims or reviewer changes.

Objections, suggestions, and questions: none recorded.

Support:

  • pseudoramdom (member) (ACK, 2026-10-28) [read]: gui-qml is pinned to an older Core version that still exposed `value_map`, so the missing interface fields hadn't been noticed
  • johnny9 (contributor) (ACK, 2026-10-28) [read]: gui-qml should be updated once merged

Participants:

  • johnny9 (contributor, support, 1 statements 2026-10-28 to 2026-10-28): ACKed and noted gui-qml should update once merged
  • pseudoramdom (member, support, 1 statements 2026-10-28 to 2026-10-28): ACKed after confirming gui-qml had missed the interface removal

Files

0 lines under test/bench/ci.

  • src/interfaces/wallet.h +2/-0
  • src/wallet/interfaces.cpp +2/-0

Card

The short text the ranking pass compares across PRs.

Export replaces_txid and replaced_by_txid from internal CWalletTx through to interfaces::WalletTx. A previous refactoring in Bitcoin Core removed the generic value_map string table from WalletTx without exposing replacement identifiers, breaking transaction replacement tracking in the external QML GUI. This restores access to those transaction IDs via dedicated struct members.

Data

dossier JSON · extract JSON · model ledger, generated 2026-10-30T01:14, confidence high, input hash 666fd6fcba244873
thread read through 2026-10-28 (4 statements), head bff0a2fabf
labels: Wallet

Categories

Wallet

P3 · bug fix (ranking pass: Moved up to sit beside #36597, the other interface restoration serving gui-qml.)

Restores access to replacement transaction IDs lost during a prior cleanup of interfaces::WalletTx::value_map. Downstream consumers like gui-qml rely on these fields to show transaction replacement details.

Membership: Labeled 'Wallet' and modifies src/wallet/interfaces.cpp to populate replacement transaction IDs on interfaces::WalletTx.

Factors: security/stability 0, bug 1, performance 0, user value 1, leverage 1