{
 "number": 35433,
 "repo": "bitcoin/bitcoin",
 "url": "https://github.com/bitcoin/bitcoin/pull/35433",
 "title": "wallet: deprecate replaceable argument from transaction (and psbt) creation (and modification) RPCs",
 "author": "rkrux",
 "author_association": "CONTRIBUTOR",
 "created_at": "2026-06-01T15:03:53Z",
 "updated_at": "2026-08-14T17:52:08Z",
 "age_days": 108,
 "draft": false,
 "labels": [
  "Wallet",
  "Needs rebase"
 ],
 "milestone": null,
 "base": "master",
 "head_sha": "3d06f13d55872047be21c9c417f4a3679510f661",
 "head_ref": "deprecaterbf",
 "head_repo": "rkrux/bitcoin",
 "head_history": [
  {
   "t": "2026-06-02T10:03:05Z",
   "sha": "45a07d5581b0cbb570969bdc826803b784f0eb78"
  },
  {
   "t": "2026-06-02T10:17:37Z",
   "sha": "8e6d3f9baff70d3aa859f984fcae45108ea34754"
  },
  {
   "t": "2026-06-02T10:25:35Z",
   "sha": "c18fafab39f51a5c10d4129dd78ae31b1b2cf603"
  },
  {
   "t": "2026-06-02T11:26:53Z",
   "sha": "a210bfa214aeb747487304a99ef720a132321d66"
  },
  {
   "t": "2026-06-02T11:30:56Z",
   "sha": "196214cb95d6c39d44e7d22e1b84d7405c635365"
  },
  {
   "t": "2026-06-02T12:05:44Z",
   "sha": "17d9368760587eae553e7eb7d12a3d0cfb0832fe"
  },
  {
   "t": "2026-06-05T11:00:45Z",
   "sha": "db831dbde6afacd46d237c221a9938b63608cd6a"
  },
  {
   "t": "2026-06-10T12:20:23Z",
   "sha": "db831dbde6afacd46d237c221a9938b63608cd6a"
  },
  {
   "t": "2026-06-15T07:50:59Z",
   "sha": "779f2846764b5725534d1c6fde1d26c6fd3d72f1"
  },
  {
   "t": "2026-06-15T08:43:43Z",
   "sha": "0a0672dda5a28ced6892c60e8f47ab24a9fb0b11"
  },
  {
   "t": "2026-06-15T08:51:05Z",
   "sha": "7e39eea642bede3473cb9667ac6abd34cd41157e"
  },
  {
   "t": "2026-06-15T08:59:39Z",
   "sha": "93f27852d1a4bf6138ecd63bfd72c9e5c2a38101"
  },
  {
   "t": "2026-06-15T12:27:02Z",
   "sha": "75cfde8f8be7914063095ce4b1820fa7aba458e0"
  },
  {
   "t": "2026-06-15T14:33:48Z",
   "sha": "359429ddecf05dd060d7368542e149aeed5ec328"
  },
  {
   "t": "2026-06-27T07:35:36Z",
   "sha": "c2515fc66fb5b91dce6552e79286b6117dbd68df"
  },
  {
   "t": "2026-07-07T11:45:27Z",
   "sha": "8bd077ae9d5a7b1bd3bd0e383d9895ebef5e296a"
  },
  {
   "t": "2026-08-11T09:42:04Z",
   "sha": "3ed4bf85ae2cdecc4b54983a4720cf87f8e685f3"
  },
  {
   "t": "2026-08-12T11:31:32Z",
   "sha": "1ee27cb585c999acdcf896481f0aea01bbd2cd90"
  },
  {
   "t": "2026-08-12T11:36:51Z",
   "sha": "27c5f3128fa0be0ef3917fecf197402061fa3f31"
  },
  {
   "t": "2026-08-12T11:43:37Z",
   "sha": "3d06f13d55872047be21c9c417f4a3679510f661"
  }
 ],
 "additions": 162,
 "deletions": 69,
 "changed_files": 15,
 "commit_count": 8,
 "size_bucket": "M",
 "mergeable_state": "dirty",
 "bot": {
  "drahtbot": {
   "present": true,
   "reviews": {
    "concept_ack": [
     {
      "login": "polespinasa",
      "url": "https://github.com/bitcoin/bitcoin/pull/35433#pullrequestreview-4638052097"
     }
    ]
   },
   "conflicts": [
    {
     "number": 35852,
     "title": "scripted-diff: Use inline const(expr) over static constexpr in headers",
     "author": "maflcko"
    },
    {
     "number": 35358,
     "title": "external signer: verify PSBT is reliable after signing it",
     "author": "brunoerg"
    }
   ]
  }
 },
 "acks_parsed": {
  "polespinasa": {
   "kind": "concept_ack",
   "hash": null,
   "t": "2026-07-06T17:05:16Z",
   "stale": false
  }
 },
 "acks_tally": {
  "ack": 0,
  "stale_ack": 0,
  "concept_ack": 1,
  "approach_ack": 0,
  "nack": 0,
  "concept_nack": 0,
  "approach_nack": 0
 },
 "reviews": {
  "approved": 0,
  "changes_requested": 0,
  "distinct_reviewers": [
   "achow101",
   "maflcko",
   "pablomartin4btc",
   "polespinasa",
   "w0xlt"
  ]
 },
 "signals": {
  "needs_rebase": true,
  "ci_failed": false,
  "mergeable_state": "dirty",
  "last_author_activity": "2026-08-12T12:56:40Z",
  "last_reviewer_activity": "2026-08-12T13:55:02Z",
  "last_reviewer": "polespinasa",
  "author_silent_days": 36,
  "waiting_on_author_days": 36,
  "days_since_update": 33
 },
 "refs": {
  "mentioned": [
   32661,
   34505,
   34731,
   35405,
   35442,
   35535,
   35543,
   35836
  ],
  "depends_on": [],
  "fixes": [
   32661
  ],
  "linked_issues": [
   {
    "number": 32661,
    "type": "issue",
    "state": "open",
    "merged": false,
    "merged_at": null,
    "title": "wallet, node: Redundant opt-in RBF wallet config and RPC parameters"
   }
  ],
  "references": [
   {
    "number": 32661,
    "type": "issue",
    "state": "open",
    "merged": false,
    "merged_at": null,
    "title": "wallet, node: Redundant opt-in RBF wallet config and RPC parameters"
   },
   {
    "number": 34505,
    "type": "pull",
    "state": "closed",
    "merged": false,
    "merged_at": null,
    "title": "kernel: Return validation state directly from process_block_header"
   },
   {
    "number": 34731,
    "type": "issue",
    "state": "closed",
    "merged": false,
    "merged_at": null,
    "title": "Intermittent RPC Timeout/Deadlock during large POST requests on Keep-Alive connections (TCP Zero Window) [was: Intermittent deadlock in p2p_orphan_handling.py\\\",  test_framework.authproxy.JSONRPCException:  timeout]"
   },
   {
    "number": 35405,
    "type": "pull",
    "state": "closed",
    "merged": false,
    "merged_at": null,
    "title": "wallet: switch default optinrbf from true to false"
   },
   {
    "number": 35442,
    "type": "pull",
    "state": "open",
    "merged": false,
    "merged_at": null,
    "title": "test: remove usages of MAX_BIP125_RBF_SEQUENCE constant from functional tests"
   },
   {
    "number": 35535,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-06-15",
    "title": "iwyu: Fix warning in `bench/pool.cpp`"
   },
   {
    "number": 35543,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-06-26",
    "title": "test: introduce ExtendedPrivateKey and ExtendedPublicKey classes"
   },
   {
    "number": 35836,
    "type": "pull",
    "state": "closed",
    "merged": true,
    "merged_at": "2026-08-05",
    "title": "rpc: Remove meaningless bool fallback in FundTransaction"
   }
  ],
  "conflicts": [
   35852,
   35358
  ]
 },
 "stack": {
  "shares_commits_with": [],
  "based_on": [],
  "base_for": []
 },
 "review_paths": [
  "doc/release-notes-34917.md",
  "src/wallet/rpc/spend.cpp",
  "src/wallet/spend.cpp",
  "test/functional/rpc_psbt.py",
  "test/functional/wallet_bumpfee.py",
  "test/functional/wallet_deprecated_rbf.py",
  "test/functional/wallet_sendall.py"
 ],
 "body": "Fixes #32661.\n\nThe `replaceable` argument in several wallet RPC requests\nhas been marked deprecated and for now users have the\noption to use this argument via the `-deprecatedrpc=bip125`\nstartup option. Affected RPCs are `createrawtransaction`,\n`fundrawtransaction`, `createpsbt`, `walletcreatefundedpsbt`,\n`send`, `sendtoaddress`, `sendmany`, `sendall`, `bumpfee`,\nand `psbtbumpfee`.\n\nThis builds upon the existing issue of removing the option for\nusers to signal replaceability because fullrbf is the default policy\nand prevalent in the network (since bitcoin core v28 was released\nin late 2024) that makes every transaction replaceable by default,\nmaking this user option unnecessary.",
 "commits": [
  {
   "sha": "5d02584be9afdc05356bdf9a8c1365a17246f7be",
   "date": "2026-08-11T09:32:20Z",
   "message": "wallet, util: move BIP-125 related comment to util/rbf.h from wallet/spend.cpp\n\nThis comment is an explanation for why such a value was chosen in\nthe now outdated BIP-125 opt-in signalling flow, so moving it to where\nthis constant is defined seems more appropriate instead of it being present\ndeep in a nested transaction creation flow in the wallet.\n\nIt also serves as a documentation for this constant now, which is helpful."
  },
  {
   "sha": "add1bf99e16139fe9be826aa42e300b54dc2806a",
   "date": "2026-08-11T09:32:20Z",
   "message": "wallet, rpc: deprecate replaceable argument in bumpfee, psbtbumpfee RPCs"
  },
  {
   "sha": "77ff18e43e08e74330cf339933a7515f746f8a3b",
   "date": "2026-08-11T09:32:20Z",
   "message": "wallet, rpc: deprecate replaceable argument in sendall RPC"
  },
  {
   "sha": "ebf0e4cd23836781d6df9e58c7883f343a08fdde",
   "date": "2026-08-12T11:42:20Z",
   "message": "wallet, rpc: deprecate `replaceable` in walletcreatefundedpsbt, fundrawtransaction, send"
  },
  {
   "sha": "c587369564bfe94dd89e4aaa1a48397b11f95513",
   "date": "2026-08-12T11:42:54Z",
   "message": "wallet, rpc: deprecate replaceable argument in sendtoaddress, sendmany RPCs"
  },
  {
   "sha": "f93b8e1a2687b0d67656224baf8dd3766c55780f",
   "date": "2026-08-12T11:42:55Z",
   "message": "rpc: deprecate replaceable argument in createrawtransaction, createpsbt"
  },
  {
   "sha": "ee5499af965c7a835a3472e11d4e2ee1d7010ad7",
   "date": "2026-08-12T11:42:55Z",
   "message": "wallet, test: add test cases for deprecated RBF features\n\nTested RPCs: createrawtransaction, fundrawtransaction, createpsbt, bumpfee\nwalletcreatefundedpsbt, send, sendtoaddress, sendmany, sendall, psbtbumpfee."
  },
  {
   "sha": "3d06f13d55872047be21c9c417f4a3679510f661",
   "date": "2026-08-12T11:42:55Z",
   "message": "doc: update release notes of 34917 mentioning `replaceable` deprecation"
  }
 ],
 "timeline": [
  {
   "t": "2026-06-01T15:08:37Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "I will add test case for bumpfee and psbtbumpfee along with release note."
  },
  {
   "t": "2026-06-02T10:03:05Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "45a07d5581b0cbb570969bdc826803b784f0eb78"
  },
  {
   "t": "2026-06-02T10:03:23Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "[quoted text omitted]\n\nDone now."
  },
  {
   "t": "2026-06-02T10:17:37Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "8e6d3f9baff70d3aa859f984fcae45108ea34754"
  },
  {
   "t": "2026-06-02T10:25:35Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "c18fafab39f51a5c10d4129dd78ae31b1b2cf603"
  },
  {
   "t": "2026-06-02T11:26:53Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "a210bfa214aeb747487304a99ef720a132321d66"
  },
  {
   "t": "2026-06-02T11:30:56Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "196214cb95d6c39d44e7d22e1b84d7405c635365"
  },
  {
   "t": "2026-06-02T12:05:44Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "17d9368760587eae553e7eb7d12a3d0cfb0832fe"
  },
  {
   "t": "2026-06-05T11:00:45Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "db831dbde6afacd46d237c221a9938b63608cd6a"
  },
  {
   "t": "2026-06-05T11:01:29Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "Updated the PR to not depend on #35405, removed the two commit from that PR."
  },
  {
   "t": "2026-06-10T12:14:45Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "Pushed the last two testing related commits of PR #35442 here as per this review comment https://github.com/bitcoin/bitcoin/pull/35442#issuecomment-4648428333.\n\nEdit: Reverted as they are dependent on #35405 as well slightly."
  },
  {
   "t": "2026-06-10T12:20:23Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "db831dbde6afacd46d237c221a9938b63608cd6a"
  },
  {
   "t": "2026-06-12T19:31:21Z",
   "kind": "comment",
   "who": "pablomartin4btc",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nI think the PR's description needs to be updated again?"
  },
  {
   "t": "2026-06-12T19:45:21Z",
   "kind": "review_comment",
   "who": "pablomartin4btc",
   "assoc": "MEMBER",
   "path": "doc/release-notes-34917.md",
   "commit": "db831dbde6afacd46d237c221a9938b63608cd6a",
   "in_reply_to": null,
   "text": "as per #35405...\n```suggestion\nWallet RPC and Startup Option\n```"
  },
  {
   "t": "2026-06-15T07:50:59Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "779f2846764b5725534d1c6fde1d26c6fd3d72f1"
  },
  {
   "t": "2026-06-15T07:51:15Z",
   "kind": "review_comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "path": "doc/release-notes-34917.md",
   "commit": "db831dbde6afacd46d237c221a9938b63608cd6a",
   "in_reply_to": 3405865449,
   "text": "Done."
  },
  {
   "t": "2026-06-15T07:54:13Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "[quoted text omitted]\n\n[quoted text omitted]\nThe description is fine, it was written before these two commits (now removed) were added in this PR."
  },
  {
   "t": "2026-06-15T08:43:43Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "0a0672dda5a28ced6892c60e8f47ab24a9fb0b11"
  },
  {
   "t": "2026-06-15T08:44:59Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "Force-pushed to not hardcode replaceable as false in the RPC help sections and CCoinControl objects.\nBased on the feedback on PR #35405 and the corresponding responses in the ML."
  },
  {
   "t": "2026-06-15T08:51:05Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "7e39eea642bede3473cb9667ac6abd34cd41157e"
  },
  {
   "t": "2026-06-15T08:59:39Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "93f27852d1a4bf6138ecd63bfd72c9e5c2a38101"
  },
  {
   "t": "2026-06-15T09:03:59Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "Force-pushed to update the [rpc_psbt.py test that failed](https://github.com/bitcoin/bitcoin/actions/runs/27534581330/job/81380724050?pr=35433) after reverting the default replaceable value to true in createpsbt RPC."
  },
  {
   "t": "2026-06-15T09:18:51Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "The [CI / test ancestor commits (pull_request)](https://github.com/bitcoin/bitcoin/actions/runs/27535381231/job/81383502960?pr=35433) failure is unrelated - #34731."
  },
  {
   "t": "2026-06-15T10:55:48Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "src/wallet/spend.cpp",
   "commit": "ac6ad606d1a10ed9f30433e6d6f038c3a2e39cab",
   "in_reply_to": null,
   "text": "ac6ad606d1a10ed9f30433e6d6f038c3a2e39cab: This seems to be the wrong commit/change. It marks the comment why maxint-2 was chosen as deprecated. However, the code here doesn't use a maxint-2 int literals. Instead, the comment should be moved to `MAX_BIP125_RBF_SEQUENCE`, which picks the int literal.\n\nIn this commit, I guess you wanted to mark `m_signal_bip125_rbf` or `m_signal_rbf` as deprecated? If so, it would be better to put the comment change there."
  },
  {
   "t": "2026-06-15T12:27:02Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "75cfde8f8be7914063095ce4b1820fa7aba458e0"
  },
  {
   "t": "2026-06-15T12:28:13Z",
   "kind": "review_comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "path": "src/wallet/spend.cpp",
   "commit": "ac6ad606d1a10ed9f30433e6d6f038c3a2e39cab",
   "in_reply_to": 3412904063,
   "text": "[quoted text omitted]\n\nMoved in rbf.h, it does look better as the comment becomes the documentation for this constant highlighting that this value is deprecated/outdated."
  },
  {
   "t": "2026-06-15T13:29:22Z",
   "kind": "review_comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "path": "src/wallet/spend.cpp",
   "commit": "ac6ad606d1a10ed9f30433e6d6f038c3a2e39cab",
   "in_reply_to": 3412904063,
   "text": "Sorry, I think I was unclear. What I wanted to say was that the change seems to be unrelated (to this pull request, as well as this commit), so at a minimum, it should be split into a separate commit.\n\nMarking `MAX_BIP125_RBF_SEQUENCE` as deprecated is done in https://github.com/bitcoin/bitcoin/pull/35405, so if that pull request is closed, it doesn't make sense to mark it as deprecated, because it will stay around.\n\nAlso, `MAX_BIP125_RBF_SEQUENCE` is used in more RPC than just bumpfee, so bundling this change in the commit that changes bumpfee doesn't really make sense.\n\nSo I think this change should be split into a separate commit"
  },
  {
   "t": "2026-06-15T14:33:48Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "359429ddecf05dd060d7368542e149aeed5ec328"
  },
  {
   "t": "2026-06-15T14:35:05Z",
   "kind": "review_comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "path": "src/wallet/spend.cpp",
   "commit": "ac6ad606d1a10ed9f30433e6d6f038c3a2e39cab",
   "in_reply_to": 3412904063,
   "text": "[quoted text omitted]\n\nYeah, it does seem to be a remnant of an outdated version of this PR that was built over #34505.\n\n[quoted text omitted]\nNot marked it deprecated now. Maybe later in #35442 when I rework it, let's see.\n\n[quoted text omitted]\nYes, this makes sense. I have separated it out now."
  },
  {
   "t": "2026-06-16T06:59:26Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "The [CI / iwyu (pull_request)](https://github.com/bitcoin/bitcoin/actions/runs/27553730406/job/81597780638?pr=35433) failure is unrelated and should have been fixed post #35535."
  },
  {
   "t": "2026-06-27T07:35:36Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "c2515fc66fb5b91dce6552e79286b6117dbd68df"
  },
  {
   "t": "2026-06-27T07:36:49Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "Rebased over master to incorporate changes from PR #35543."
  },
  {
   "t": "2026-07-06T16:58:41Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "src/wallet/rpc/spend.cpp",
   "commit": "85df2740b1e2cd6c7ca3e3d19180e707373244ee",
   "in_reply_to": null,
   "text": "in 85df2740b1e2cd6c7ca3e3d19180e707373244ee wallet, rpc: deprecate replaceable argument in bumpfee, psbtbumpfee RPCs\n\nThis looks wrong, should be `!cc.m_signal_bip125_rbf.hasValue()`.\nAs it is if it has value and the value if `false` it will be overwritten to `DEFAULT_WALLET_RBF`"
  },
  {
   "t": "2026-07-06T17:00:51Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "test/functional/wallet_deprecated_rbf.py",
   "commit": "020560e00a4b49e5ceb4365def4f2e07b60eee57",
   "in_reply_to": null,
   "text": "in 020560e00a4b49e5ceb4365def4f2e07b60eee57 wallet, test: add test cases for deprecated RBF features\n\nShould be `assert_rbf_in_tx_hex(funded_tx_hex)` ??"
  },
  {
   "t": "2026-07-06T17:02:27Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "test/functional/wallet_deprecated_rbf.py",
   "commit": "3d06f13d55872047be21c9c417f4a3679510f661",
   "in_reply_to": null,
   "text": "in 020560e00a4b49e5ceb4365def4f2e07b60eee57 wallet, test: add test cases for deprecated RBF features\n\nnit: we use 4 spaces for indentation, this test uses 3."
  },
  {
   "t": "2026-07-06T17:05:16Z",
   "kind": "review",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "c2515fc66fb5b91dce6552e79286b6117dbd68df",
   "text": "concept ACK\n\nreviewed 020560e00a4b49e5ceb4365def4f2e07b60eee57\n\nThe code looks good, but I think the way it is done the deprecation might be invisible for the users. If a user does add a replaceable argument but does not enable the deprecated flag it will be ignored without the user noticing.\n\nI think all deprecated fields should throw if used when the deprecated flag is not set.\n\nin 020560e00a4b49e5ceb4365def4f2e07b60eee57 wallet, test: add test cases for deprecated RBF features\nThe test only checks the `replaceable=True`, does not check for `replaceable=False`."
  },
  {
   "t": "2026-07-06T20:15:13Z",
   "kind": "review_comment",
   "who": "achow101",
   "assoc": "MEMBER",
   "path": "src/wallet/rpc/spend.cpp",
   "commit": "85df2740b1e2cd6c7ca3e3d19180e707373244ee",
   "in_reply_to": 3530700417,
   "text": "It should also still be using `true`, not be changed to `DEFAULT_WALLET_RBF` as the idea is to unconditionally set it to `true`, not use the default for the wallet."
  },
  {
   "t": "2026-07-06T20:16:14Z",
   "kind": "review_comment",
   "who": "achow101",
   "assoc": "MEMBER",
   "path": "src/wallet/rpc/spend.cpp",
   "commit": "85df2740b1e2cd6c7ca3e3d19180e707373244ee",
   "in_reply_to": null,
   "text": "In 85df2740b1e2cd6c7ca3e3d19180e707373244ee \"wallet, rpc: deprecate replaceable argument in bumpfee, psbtbumpfee RPCs\"\n\nThis should not be changed"
  },
  {
   "t": "2026-07-06T20:19:30Z",
   "kind": "review_comment",
   "who": "achow101",
   "assoc": "MEMBER",
   "path": "doc/release-notes-34917.md",
   "commit": "c2515fc66fb5b91dce6552e79286b6117dbd68df",
   "in_reply_to": null,
   "text": "In c2515fc66fb5b91dce6552e79286b6117dbd68df \"doc: update release notes of 34917 mentioning `replaceable` deprecation\"\n\nThis is not a valid section header for release notes.\n\nThis could either be a standalone Notable Change, in which case this section header should be a title that describes what the change, or it should be one of the standard section headers in doc/release-notes-empty-template.md (i.e. Wallet)"
  },
  {
   "t": "2026-07-06T20:37:13Z",
   "kind": "review",
   "who": "achow101",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "c2515fc66fb5b91dce6552e79286b6117dbd68df",
   "text": "a00899f3d7fca8ed5d8f849bca4979099a3d8aac \"wallet, test: replace rbf_node with node in wallet_bumpfee.py\" seems entirely unnecessary. Mass renaming things in that file breaks git blame, and I don't really see the benefit for changing the name. `rbf_node` is still kind of appropriate because that's node that's doing all of the rbf things.\n\nThe deprecation should be throwing if the option is set, not silently ignoring it. For the options objects, it can throw if the option is provided at all. For positional arguments, the argument must be null. We only accept the option if `-deprecatedrpc` is provided."
  },
  {
   "t": "2026-07-07T11:45:27Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "8bd077ae9d5a7b1bd3bd0e383d9895ebef5e296a"
  },
  {
   "t": "2026-07-07T11:45:35Z",
   "kind": "review_comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "path": "src/wallet/rpc/spend.cpp",
   "commit": "85df2740b1e2cd6c7ca3e3d19180e707373244ee",
   "in_reply_to": 3530700417,
   "text": "Reverted"
  },
  {
   "t": "2026-07-07T11:45:40Z",
   "kind": "review_comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "path": "test/functional/wallet_deprecated_rbf.py",
   "commit": "020560e00a4b49e5ceb4365def4f2e07b60eee57",
   "in_reply_to": 3530714585,
   "text": "Fixed"
  },
  {
   "t": "2026-07-07T11:45:47Z",
   "kind": "review_comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "path": "src/wallet/rpc/spend.cpp",
   "commit": "85df2740b1e2cd6c7ca3e3d19180e707373244ee",
   "in_reply_to": 3531799040,
   "text": "Reverted"
  },
  {
   "t": "2026-07-07T11:45:50Z",
   "kind": "review_comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "path": "doc/release-notes-34917.md",
   "commit": "c2515fc66fb5b91dce6552e79286b6117dbd68df",
   "in_reply_to": 3531816137,
   "text": "Fixed"
  },
  {
   "t": "2026-07-07T11:45:54Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "[quoted text omitted]\n\nDone\n\n[quoted text omitted]\nThe test only checks the replaceable=True, does not check for replaceable=False.\n\nDone\n\n[quoted text omitted]\nDropped\n\n[quoted text omitted]\nDone"
  },
  {
   "t": "2026-07-07T14:19:46Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "src/wallet/rpc/spend.cpp",
   "commit": "3ac9c24124f0722649016a12fdf39eb9a628cd94",
   "in_reply_to": null,
   "text": "In 3ac9c24124f0722649016a12fdf39eb9a628cd94 wallet, rpc: deprecate replaceable argument in bumpfee, psbtbumpfee RPCs\n\n~This stills wrong, this PR does not introduce the error, but `m_signal_bip125_rbf` is an optional, if it is not set, it will set it to `true`, but if it is explicitly set to `false` it will be overwritten to `true` anyway.\nIt should be `if (!cc.m_signal_bip125_rbf.has_value())`~\n\nNevermind, I just got confused, it does not make sense, feel free to resolve the conversation"
  },
  {
   "t": "2026-07-07T14:31:36Z",
   "kind": "review_comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "path": "src/wallet/rpc/spend.cpp",
   "commit": "3ac9c24124f0722649016a12fdf39eb9a628cd94",
   "in_reply_to": 3537193890,
   "text": "[quoted text omitted]\n\nThis should be addressed in a separate PR."
  },
  {
   "t": "2026-08-11T09:42:04Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "3ed4bf85ae2cdecc4b54983a4720cf87f8e685f3"
  },
  {
   "t": "2026-08-11T09:42:10Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "Rebased over master to incorporate changes from #35836."
  },
  {
   "t": "2026-08-11T21:56:21Z",
   "kind": "review",
   "who": "w0xlt",
   "assoc": "CONTRIBUTOR",
   "state": "COMMENTED",
   "commit": "3ed4bf85ae2cdecc4b54983a4720cf87f8e685f3",
   "text": "On a node started without -deprecatedrpc=bip125 (the default), three sendtoaddress examples in this help block still supply the deprecated option.\n\n```diff\ndiff --git a/src/wallet/rpc/spend.cpp b/src/wallet/rpc/spend.cpp\nindex 068b3fda13..fdd6e4c89d 100644\n--- a/src/wallet/rpc/spend.cpp\n+++ b/src/wallet/rpc/spend.cpp\n@@ -280,14 +280,14 @@ RPCMethod sendtoaddress()\n                     \"\\nSend 0.1 BTC\\n\"\n                     + HelpExampleCli(\"sendtoaddress\", \"\\\"\" + EXAMPLE_ADDRESS[0] + \"\\\" 0.1\") +\n                     \"\\nSend 0.1 BTC with a confirmation target of 6 blocks in economical fee estimate mode using positional arguments\\n\"\n-                    + HelpExampleCli(\"sendtoaddress\", \"\\\"\" + EXAMPLE_ADDRESS[0] + \"\\\" 0.1 \\\"donation\\\" \\\"sean's outpost\\\" false true 6 economical\") +\n-                    \"\\nSend 0.1 BTC with a fee rate of 1.1 \" + CURRENCY_ATOM + \"/vB, subtract fee from amount, BIP125-replaceable, using positional arguments\\n\"\n-                    + HelpExampleCli(\"sendtoaddress\", \"\\\"\" + EXAMPLE_ADDRESS[0] + \"\\\" 0.1 \\\"drinks\\\" \\\"room77\\\" true true null \\\"unset\\\" null 1.1\") +\n+                    + HelpExampleCli(\"sendtoaddress\", \"\\\"\" + EXAMPLE_ADDRESS[0] + \"\\\" 0.1 \\\"donation\\\" \\\"sean's outpost\\\" false null 6 economical\") +\n+                    \"\\nSend 0.1 BTC with a fee rate of 1.1 \" + CURRENCY_ATOM + \"/vB, subtract fee from amount, using positional arguments\\n\"\n+                    + HelpExampleCli(\"sendtoaddress\", \"\\\"\" + EXAMPLE_ADDRESS[0] + \"\\\" 0.1 \\\"drinks\\\" \\\"room77\\\" true null null \\\"unset\\\" null 1.1\") +\n                     \"\\nSend 0.2 BTC with a confirmation target of 6 blocks in economical fee estimate mode using named arguments\\n\"\n                     + HelpExampleCli(\"-named sendtoaddress\", \"address=\\\"\" + EXAMPLE_ADDRESS[0] + \"\\\" amount=0.2 conf_target=6 estimate_mode=\\\"economical\\\"\") +\n                     \"\\nSend 0.5 BTC with a fee rate of 25 \" + CURRENCY_ATOM + \"/vB using named arguments\\n\"\n                     + HelpExampleCli(\"-named sendtoaddress\", \"address=\\\"\" + EXAMPLE_ADDRESS[0] + \"\\\" amount=0.5 fee_rate=25\")\n-                    + HelpExampleCli(\"-named sendtoaddress\", \"address=\\\"\" + EXAMPLE_ADDRESS[0] + \"\\\" amount=0.5 fee_rate=25 subtractfeefromamount=false replaceable=true avoid_reuse=true comment=\\\"2 pizzas\\\" comment_to=\\\"jeremy\\\" verbose=true\")\n+                    + HelpExampleCli(\"-named sendtoaddress\", \"address=\\\"\" + EXAMPLE_ADDRESS[0] + \"\\\" amount=0.5 fee_rate=25 subtractfeefromamount=false avoid_reuse=true comment=\\\"2 pizzas\\\" comment_to=\\\"jeremy\\\" verbose=true\")\n                 },\n         [](const RPCMethod& self, const JSONRPCRequest& request) -> UniValue\n {\n```"
  },
  {
   "t": "2026-08-12T10:14:41Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "src/wallet/rpc/spend.cpp",
   "commit": "3d06f13d55872047be21c9c417f4a3679510f661",
   "in_reply_to": null,
   "text": "in cc96cae71f1bf00d935a2a1ef305d3210547cdef wallet, rpc: deprecate replaceable argument in walletcreatefundedpsbt, fundrawtransaction\n\nI think this is dead and duplicated code. Because all RPC calls that call `FundTransaction` already check for `rpcEnableDeprecated`.\n\nWe can probably remove this code, or just remove all checks from other RPC calls and make them all relay on this one."
  },
  {
   "t": "2026-08-12T11:31:32Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "1ee27cb585c999acdcf896481f0aea01bbd2cd90"
  },
  {
   "t": "2026-08-12T11:36:51Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "27c5f3128fa0be0ef3917fecf197402061fa3f31"
  },
  {
   "t": "2026-08-12T11:37:51Z",
   "kind": "review_comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "path": "src/wallet/rpc/spend.cpp",
   "commit": "3d06f13d55872047be21c9c417f4a3679510f661",
   "in_reply_to": 3765494885,
   "text": "[quoted text omitted]\n\nfundrawtransaction didn't, but the other two (walletcreatefundedpsbt and send) did. So, I kept this check in FundTransaction and removed the ones from the other two, reducing the diff."
  },
  {
   "t": "2026-08-12T11:38:20Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "[quoted text omitted]\n\nApplied the suggestion."
  },
  {
   "t": "2026-08-12T11:43:37Z",
   "kind": "force_push",
   "who": "rkrux",
   "commit": "3d06f13d55872047be21c9c417f4a3679510f661"
  },
  {
   "t": "2026-08-12T12:24:08Z",
   "kind": "comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "text": "Ideally deprecated RPC testing should be added to test file [rpc_reprecated.py](https://github.com/bitcoin/bitcoin/blob/master/test/functional/rpc_deprecated.py)"
  },
  {
   "t": "2026-08-12T12:56:40Z",
   "kind": "comment",
   "who": "rkrux",
   "assoc": "CONTRIBUTOR",
   "text": "[quoted text omitted]\n\nThis has been discussed before here: https://github.com/bitcoin/bitcoin/pull/35381#pullrequestreview-4371680101"
  },
  {
   "t": "2026-08-12T13:30:44Z",
   "kind": "comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nOh right, I knew we discussed this before but I couldn't find the conversation.\n\nAnyway I think you should be able to move this block adding the `self.is_wallet_compiled`, the tests passes locally for me compiling without a wallet:\n```python3\n        if self.is_wallet_compiled():\n            self.log.info(\"Test without -deprecatedrpc=bip125\")\n            DEPRECATED_RPC_MESSAGE = \"Deprecated \\\"replaceable\\\" argument passed. Run with -deprecatedrpc=bip125 startup option to use it.\"\n            node = self.nodes[0]\n            node.createwallet(\"deprecated_optinrbf\")\n            wallet = node.get_wallet_rpc(\"deprecated_optinrbf\")\n            self.generatetoaddress(node, nblocks=101, address=wallet.getnewaddress(), sync_fun=self.no_op)\n\n            # helper functions\n            def get_largest_unspent():\n              return max(wallet.listunspent(), key=lambda unspent: unspent[\"amount\"])\n\n            def check_rbf_signalling(inputs, rbf_signalling=True):\n              for input in inputs:\n                if rbf_signalling:\n                  assert_equal(input[\"sequence\"], MAX_BIP125_RBF_SEQUENCE)\n                else:\n                  assert_not_equal(input[\"sequence\"], MAX_BIP125_RBF_SEQUENCE)\n\n            def assert_rbf_signalling_in_wallet_tx(tx_id):\n              wallet_mempool_tx = wallet.gettransaction(tx_id)\n              assert_equal(\"bip125-replaceable\" in wallet_mempool_tx, True)\n              assert_equal(wallet_mempool_tx[\"bip125-replaceable\"], \"yes\")\n\n            send_rpcs = [\n              lambda: wallet.send(outputs=[{wallet.getnewaddress(): 1}], options={\"replaceable\": True})[\"txid\"],\n              lambda: wallet.sendtoaddress(address=wallet.getnewaddress(), amount=1, replaceable=True),\n              lambda: wallet.sendmany(amounts={wallet.getnewaddress():1, wallet.getnewaddress():1}, replaceable=True),\n              lambda: wallet.sendall(recipients=[wallet.getnewaddress()], replaceable=True)[\"txid\"],\n            ]\n\n            # check for errors regarding usage of deprecated arguments without -deprecatedrpc startup option\n            unspent = get_largest_unspent()\n            assert_raises_rpc_error(-32, DEPRECATED_RPC_MESSAGE, wallet.createrawtransaction, inputs=[unspent], outputs=[{wallet.getnewaddress(): 1}], replaceable=True)\n            assert_raises_rpc_error(-32, DEPRECATED_RPC_MESSAGE, wallet.createpsbt, inputs=[unspent], outputs=[{wallet.getnewaddress(): 1}], replaceable=True)\n            for rpc in send_rpcs:\n              try:\n                rpc()\n              except JSONRPCException as e:\n                assert_equal(e.error[\"code\"], -32)\n                assert_equal(e.error[\"message\"], DEPRECATED_RPC_MESSAGE)\n              except Exception as e:\n                raise AssertionError(\"Unexpected exception raised: \" + type(e).__name__)\n```\n\nAnother nit on the tests, https://github.com/bitcoin/bitcoin/pull/35433#discussion_r3530723710 still apply"
  },
  {
   "t": "2026-08-12T13:34:54Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "test/functional/wallet_bumpfee.py",
   "commit": "add1bf99e16139fe9be826aa42e300b54dc2806a",
   "in_reply_to": null,
   "text": "in add1bf99e16139fe9be826aa42e300b54dc2806a wallet, rpc: deprecate replaceable argument in bumpfee, psbtbumpfee RPCs\n\ntesting bumpfee with `replaceable = False` is removed and not added in any other place later. This removes test coverage."
  },
  {
   "t": "2026-08-12T13:40:39Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "src/wallet/rpc/spend.cpp",
   "commit": "77ff18e43e08e74330cf339933a7515f746f8a3b",
   "in_reply_to": null,
   "text": "in 77ff18e43e08e74330cf339933a7515f746f8a3b wallet, rpc: deprecate replaceable argument in sendall RPC\n\nThis docs replaceable as deprecated for all RPC calls using `FundTxDoc`, but in this commit only `sendall` has the flag check and the error throw. For the other calls `send`, `fundrawtransaction`, `walletcreatefundedpsbt` the doc is incorrect until a future commit.\nCommits should be atomically corrects by themself, so probably using a single commit for all RPCs using `FundTxDoc` is a better option."
  },
  {
   "t": "2026-08-12T13:42:19Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "test/functional/wallet_sendall.py",
   "commit": "77ff18e43e08e74330cf339933a7515f746f8a3b",
   "in_reply_to": null,
   "text": "in 77ff18e wallet, rpc: deprecate replaceable argument in sendall RPC\n\nsendall with replaceable = False is no longer tested after this commit, until the feature is removed it should be tested."
  },
  {
   "t": "2026-08-12T13:45:33Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "test/functional/rpc_psbt.py",
   "commit": "ebf0e4cd23836781d6df9e58c7883f343a08fdde",
   "in_reply_to": null,
   "text": "in ebf0e4cd23836781d6df9e58c7883f343a08fdde wallet, rpc: deprecate `replaceable` in walletcreatefundedpsbt, fundrawtransaction, send\n\nThe comment is incorrect, depreacted RBF is not explicitly enabled as this commit removes it, probably should change the comment and mention that is enabled by wallet defaults."
  },
  {
   "t": "2026-08-12T13:48:20Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "test/functional/wallet_deprecated_rbf.py",
   "commit": "ee5499af965c7a835a3472e11d4e2ee1d7010ad7",
   "in_reply_to": null,
   "text": "in ee5499af965c7a835a3472e11d4e2ee1d7010ad7 wallet, test: add test cases for deprecated RBF features\n\nThis tests feels wrong, it is not testing that the RPC error is enforced, only that, in case it fails, the error is the expected one.\n\nI think the same approach used for `createrawtransaction` and `createpsbt` should be followed."
  },
  {
   "t": "2026-08-12T13:49:54Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "test/functional/wallet_deprecated_rbf.py",
   "commit": "ee5499af965c7a835a3472e11d4e2ee1d7010ad7",
   "in_reply_to": null,
   "text": "in ee5499a wallet, test: add test cases for deprecated RBF features\n\nThis is a bit a duplicated comment from others I left, but just to summarize, this is not covering the cases for `Replaceable=False` for `send`, `sendtoaddress`, `sendmany` and `sendall`"
  },
  {
   "t": "2026-08-12T13:52:41Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "test/functional/wallet_deprecated_rbf.py",
   "commit": "ee5499af965c7a835a3472e11d4e2ee1d7010ad7",
   "in_reply_to": null,
   "text": "in ee5499a wallet, test: add test cases for deprecated RBF features\n\nnit: Probably should add a guard that max takes a non empty value."
  },
  {
   "t": "2026-08-12T13:54:23Z",
   "kind": "review_comment",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "path": "doc/release-notes-34917.md",
   "commit": "3d06f13d55872047be21c9c417f4a3679510f661",
   "in_reply_to": null,
   "text": "in 3d06f13d55872047be21c9c417f4a3679510f661 doc: update release notes of 34917 mentioning `replaceable` deprecation\n\nIf I am not wrong, `createpsbt`, and `createrawtransaction` are not Wallet rpc"
  },
  {
   "t": "2026-08-12T13:55:02Z",
   "kind": "review",
   "who": "polespinasa",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "3d06f13d55872047be21c9c417f4a3679510f661",
   "text": "reviewed 3d06f13d55872047be21c9c417f4a3679510f661"
  }
 ],
 "labels_log": [
  {
   "t": "2026-06-01T15:11:09Z",
   "action": "labeled",
   "label": "Wallet",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-01T16:29:14Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-02T13:50:39Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-10T12:20:57Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-10T13:46:30Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-15T08:44:29Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-15T13:33:52Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-15T16:44:09Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-16T18:23:50Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-26T23:01:05Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-06-27T07:43:59Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-05T09:45:09Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-11T09:47:53Z",
   "action": "unlabeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-12T11:37:34Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-12T13:04:01Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-14T17:52:07Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  }
 ],
 "state_log": [
  {
   "t": "2026-06-01T15:11:04Z",
   "kind": "renamed",
   "who": "rkrux",
   "from": "Deprecaterbf",
   "to": "wallet: deprecate replaceable argument from transaction ( and psbt) creation (and modification) RPCs"
  },
  {
   "t": "2026-06-01T15:13:19Z",
   "kind": "renamed",
   "who": "rkrux",
   "from": "wallet: deprecate replaceable argument from transaction ( and psbt) creation (and modification) RPCs",
   "to": "wallet: deprecate replaceable argument from transaction (and psbt) creation (and modification) RPCs"
  },
  {
   "t": "2026-06-05T11:01:33Z",
   "kind": "ready_for_review",
   "who": "rkrux"
  }
 ],
 "text_chars": 17060,
 "text_tokens_estimate": 4265,
 "changed_paths": [
  "doc/release-notes-34917.md",
  "src/rpc/rawtransaction.cpp",
  "src/util/rbf.h",
  "src/wallet/rpc/spend.cpp",
  "src/wallet/spend.cpp",
  "test/functional/data/rpc_psbt.json",
  "test/functional/feature_notifications.py",
  "test/functional/rpc_psbt.py",
  "test/functional/rpc_rawtransaction.py",
  "test/functional/wallet_balance.py",
  "test/functional/wallet_bumpfee.py",
  "test/functional/wallet_deprecated_rbf.py",
  "test/functional/wallet_fundrawtransaction.py",
  "test/functional/wallet_sendall.py",
  "test/functional/wallet_signer.py"
 ],
 "files": [
  {
   "path": "doc/release-notes-34917.md",
   "add": 18,
   "del": 4
  },
  {
   "path": "src/rpc/rawtransaction.cpp",
   "add": 7,
   "del": 1
  },
  {
   "path": "src/util/rbf.h",
   "add": 5,
   "del": 0
  },
  {
   "path": "src/wallet/rpc/spend.cpp",
   "add": 28,
   "del": 10
  },
  {
   "path": "src/wallet/spend.cpp",
   "add": 0,
   "del": 6
  },
  {
   "path": "test/functional/data/rpc_psbt.json",
   "add": 1,
   "del": 1
  },
  {
   "path": "test/functional/feature_notifications.py",
   "add": 2,
   "del": 2
  },
  {
   "path": "test/functional/rpc_psbt.py",
   "add": 5,
   "del": 5
  },
  {
   "path": "test/functional/rpc_rawtransaction.py",
   "add": 2,
   "del": 7
  },
  {
   "path": "test/functional/wallet_balance.py",
   "add": 1,
   "del": 1
  },
  {
   "path": "test/functional/wallet_bumpfee.py",
   "add": 0,
   "del": 21
  },
  {
   "path": "test/functional/wallet_deprecated_rbf.py",
   "add": 90,
   "del": 8
  },
  {
   "path": "test/functional/wallet_fundrawtransaction.py",
   "add": 1,
   "del": 1
  },
  {
   "path": "test/functional/wallet_sendall.py",
   "add": 1,
   "del": 1
  },
  {
   "path": "test/functional/wallet_signer.py",
   "add": 1,
   "del": 1
  }
 ],
 "test_lines": 152,
 "git": {
  "head": "3d06f13d55872047be21c9c417f4a3679510f661",
  "head_matches_backup": true,
  "base": "5d051c05629df6457047aa4315476105dcb27e08",
  "commits": [
   {
    "sha": "5d02584be9",
    "subject": "wallet, util: move BIP-125 related comment to util/rbf.h from wallet/spend.cpp",
    "files": 2,
    "add": 5,
    "del": 6
   },
   {
    "sha": "add1bf99e1",
    "subject": "wallet, rpc: deprecate replaceable argument in bumpfee, psbtbumpfee RPCs",
    "files": 2,
    "add": 5,
    "del": 23
   },
   {
    "sha": "77ff18e43e",
    "subject": "wallet, rpc: deprecate replaceable argument in sendall RPC",
    "files": 2,
    "add": 9,
    "del": 3
   },
   {
    "sha": "ebf0e4cd23",
    "subject": "wallet, rpc: deprecate `replaceable` in walletcreatefundedpsbt, fundrawtransaction, send",
    "files": 3,
    "add": 8,
    "del": 5
   },
   {
    "sha": "c587369564",
    "subject": "wallet, rpc: deprecate replaceable argument in sendtoaddress, sendmany RPCs",
    "files": 2,
    "add": 14,
    "del": 8
   },
   {
    "sha": "f93b8e1a26",
    "subject": "rpc: deprecate replaceable argument in createrawtransaction, createpsbt",
    "files": 6,
    "add": 13,
    "del": 12
   },
   {
    "sha": "ee5499af96",
    "subject": "wallet, test: add test cases for deprecated RBF features",
    "files": 1,
    "add": 90,
    "del": 8
   },
   {
    "sha": "3d06f13d55",
    "subject": "doc: update release notes of 34917 mentioning `replaceable` deprecation",
    "files": 1,
    "add": 18,
    "del": 4
   }
  ],
  "patch_truncated": false
 },
 "input_hash": "e6acd77e0220e86e",
 "extracted_at": "2026-09-17T16:15:31+00:00"
}