{
 "number": 36380,
 "input_hash": "97a58c56cd3444a7",
 "model": "ledger",
 "prompt_hash": null,
 "created": "2026-10-07T01:11:14+00:00",
 "result": {
  "summary": "Extends the `-walletbroadcast` configuration option to accept `initialonly` alongside boolean `0` and `1`. Setting `-walletbroadcast=initialonly` allows the wallet to perform initial transaction submission and network broadcast while disabling periodic rebroadcasts and startup mempool resubmission. The default setting remains unchanged at `1` (initial broadcast and periodic rebroadcast).",
  "problem": "Periodic wallet rebroadcasts resend unconfirmed transactions to peers every 12\u201336 hours and resubmit them on startup, which leaks wallet transaction ownership to the network. Users had no way to turn off these periodic rebroadcasts without disabling wallet transaction broadcasting entirely.",
  "card": "Extends the `-walletbroadcast` configuration option to accept `initialonly` alongside boolean values `0` and `1`. Currently, users cannot disable periodic unconfirmed transaction rebroadcasts (which leak wallet ownership to peers every 12\u201336 hours) without turning off transaction broadcasting completely. The new value allows initial broadcasts while skipping periodic resends and startup mempool resubmissions, preserving the existing default behavior.",
  "evidence": [
   "PR description: \"Add a new possible value initialonly which would allow the user to configure the wallet to do the initial broadcast only and not to do the periodic rebroadcasts. No new configuration options and no change in default behavior.\""
  ],
  "scope_notes": "A compact wallet-only change replacing the internal boolean `fBroadcastTransactions` with a three-state `BroadcastWhen` enum.",
  "changed_since_previous": "Replaced the previous approach of introducing a separate `-walletrebroadcast` option (which defaulted to false) with extending the existing `-walletbroadcast` parameter to accept `initialonly`, keeping default behavior unchanged.",
  "thread": {
   "last_event_at": "2026-10-05T09:59:35Z",
   "events": 9,
   "head_sha": "155eb27489f4fdbf9570dfb064e36fa12f37f399",
   "schema_floor": 2,
   "schema": 2
  },
  "waiting_on": [
   {
    "at": "2026-10-05",
    "id": "c:5992221844",
    "on": "reviewer",
    "url": "https://github.com/bitcoin/bitcoin/pull/36380#issuecomment-5992221844",
    "what": "review of the push extending -walletbroadcast to initialonly and preserving default behavior"
   },
   {
    "at": "2026-10-01",
    "id": "c:5933552705",
    "on": "author",
    "url": "https://github.com/bitcoin/bitcoin/pull/36380#issuecomment-5933552705",
    "what": "response to mzumsande regarding disabling artificial mempool resubmissions"
   }
  ],
  "risk": {
   "level": "low",
   "touches": [
    "wallet"
   ],
   "why": "A mistake in parsing or checking the broadcast mode could inadvertently suppress transaction broadcast or fail to disable periodic rebroadcasts."
  },
  "discussion": {
   "author_status": "last statement processed 2026-10-05",
   "open_concerns": [
    "mzumsande: Disable artificial resubmission to mempool as well if rebroadcast is disabled"
   ],
   "resolved_concerns": [
    "w0xlt: Can wallet rebroadcasting safely be disabled, and if so, why is rebroadcasting needed at all? (answered by vasild 2026-09-30)",
    "w0xlt: Extend -walletbroadcast with new modes instead of introducing another parameter with a very similar name (fixed by vasild 2026-10-05)",
    "vicjuma: Defaulting -walletrebroadcast to false harms convenience for users who expect rebroadcasts without extra setup (fixed by vasild 2026-10-05)",
    "achow101: Disabling rebroadcasts by default has bad effects for the wallet (fixed by vasild 2026-10-05)"
   ]
  },
  "reviewability": {
   "state": "Ready",
   "label": "Ready",
   "reason": "Nothing known that would invalidate a review now."
  },
  "agreement": {
   "state": "Mild",
   "summary": "Mild: NACK from achow101 not withdrawn (Disabling rebroadcasts by default has bad effects for the wallet)",
   "reason": "The author pushed a rework that retains default rebroadcasting behavior and extends -walletbroadcast rather than introducing a new configuration option, fixing objections from achow101 and vicjuma as well as w0xlt's suggestion.",
   "evidence": [
    "mzumsande (suggestion, approach, must be answered, open): Disable artificial resubmission to mempool as well if rebroadcast is disabled"
   ],
   "objections": [
    {
     "reviewer": "w0xlt",
     "association": "CONTRIBUTOR",
     "type": "question",
     "kind": "approach",
     "harm": "",
     "request": "",
     "question": "Can wallet rebroadcasting safely be disabled, and if so, why is rebroadcasting needed at all?",
     "text": "Can wallet rebroadcasting safely be disabled, and if so, why is rebroadcasting needed at all?",
     "clears_with": "answer",
     "blocking": false,
     "status": "answered",
     "status_note": "author explains why rebroadcasting is useful and why disabling it can be safe",
     "cleared": true,
     "author_replied": true,
     "others_replied": false,
     "fix_pushed": false,
     "replies": [
      "c:5906908312"
     ],
     "evidence": "2026-09-29: 'Can we safely disable wallet re-broadcasting? If so, why do we need re-broadcasting at all?'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36380#issuecomment-5896604099",
     "id": "c:5896604099",
     "at": "2026-09-29",
     "status_at": "2026-09-30",
     "status_by": "vasild",
     "resolution_evidence": "2026-09-30: vasild: 'I think yes. Most users don't need it, but are nevertheless exposed to the privacy leaks it brings even if they never us'",
     "pin": null,
     "from_schema": 2
    },
    {
     "reviewer": "w0xlt",
     "association": "CONTRIBUTOR",
     "type": "suggestion",
     "kind": "interface",
     "harm": "",
     "request": "Extend -walletbroadcast with new modes instead of introducing another parameter with a very similar name",
     "question": "",
     "text": "Extend -walletbroadcast with new modes instead of introducing another parameter with a very similar name",
     "clears_with": "answer",
     "blocking": false,
     "status": "fixed",
     "status_note": "author pushed a change extending -walletbroadcast instead of introducing a new option",
     "cleared": true,
     "author_replied": true,
     "others_replied": false,
     "fix_pushed": true,
     "replies": [
      "c:5906908312",
      "c:5992221844"
     ],
     "evidence": "2026-09-29: 'extending `-walletbroadcast` with new modes would be cleaner than introducing another parameter with a very similar name.'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36380#issuecomment-5896604099",
     "id": "c:5896604099#2",
     "at": "2026-09-29",
     "status_at": "2026-10-05",
     "status_by": "vasild",
     "resolution_evidence": "2026-10-05: vasild: 'don't introduce a new option, instead extend the allowed values of `-walletbroadcast`.'",
     "pin": null,
     "from_schema": 2
    },
    {
     "reviewer": "vicjuma",
     "association": "CONTRIBUTOR",
     "type": "objection",
     "kind": "interface",
     "harm": "Defaulting -walletrebroadcast to false harms convenience for users who expect rebroadcasts without extra setup",
     "request": "",
     "question": "",
     "text": "Defaulting -walletrebroadcast to false harms convenience for users who expect rebroadcasts without extra setup",
     "clears_with": "answer",
     "blocking": false,
     "status": "fixed",
     "status_note": "author pushed a change keeping default behavior unmodified",
     "cleared": true,
     "author_replied": true,
     "others_replied": false,
     "fix_pushed": true,
     "replies": [
      "rc:4142146539",
      "rc:4182690345",
      "c:5992221844"
     ],
     "evidence": "2026-09-29: 'IMO, I think rebroadcasting outweighs privacy so defaulting to true would be convenient.'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36380#discussion_r4135840655",
     "id": "rc:4135840655",
     "at": "2026-09-29",
     "status_at": "2026-10-05",
     "status_by": "vasild",
     "resolution_evidence": "2026-10-05: vasild: 'Now the default behavior is unmodified.'",
     "pin": null,
     "from_schema": 2
    },
    {
     "reviewer": "mzumsande",
     "association": "MEMBER",
     "type": "suggestion",
     "kind": "approach",
     "harm": "",
     "request": "Disable artificial resubmission to mempool as well if rebroadcast is disabled",
     "question": "",
     "text": "Disable artificial resubmission to mempool as well if rebroadcast is disabled",
     "clears_with": "answer",
     "blocking": false,
     "status": "open",
     "status_note": "",
     "cleared": false,
     "author_replied": false,
     "others_replied": false,
     "fix_pushed": false,
     "replies": [],
     "evidence": "2026-10-01: 'if we disable rebroadcast, we should probably also disable artificial resubmission to mempool'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36380#issuecomment-5933552705",
     "id": "c:5933552705",
     "at": "2026-10-01",
     "status_at": null,
     "status_by": null,
     "resolution_evidence": "",
     "pin": null,
     "from_schema": 2
    },
    {
     "reviewer": "achow101",
     "association": "MEMBER",
     "type": "objection",
     "kind": "correctness",
     "harm": "Disabling rebroadcasts by default has bad effects for the wallet",
     "request": "",
     "question": "",
     "text": "Disabling rebroadcasts by default has bad effects for the wallet",
     "clears_with": "change",
     "blocking": true,
     "status": "fixed",
     "status_note": "author pushed a change keeping default behavior unmodified",
     "cleared": true,
     "author_replied": true,
     "others_replied": false,
     "fix_pushed": true,
     "replies": [
      "rc:4182690345",
      "c:5992221844"
     ],
     "evidence": "2026-10-01: 'Disabling rebroadcasts by default has bad effects for the wallet.'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36380#issuecomment-5940478231",
     "id": "c:5940478231",
     "at": "2026-10-01",
     "status_at": "2026-10-05",
     "status_by": "vasild",
     "resolution_evidence": "2026-10-05: vasild: 'Now the default behavior is unmodified.'",
     "pin": null,
     "from_schema": 2
    }
   ],
   "support": [],
   "participants": [
    {
     "login": "vicjuma",
     "stance": "objection",
     "note": "objected to defaulting -walletrebroadcast to false over user convenience concerns",
     "association": "CONTRIBUTOR",
     "comments": 1,
     "first": "2026-09-29",
     "last": "2026-09-29"
    },
    {
     "login": "w0xlt",
     "stance": "question",
     "note": "asked whether rebroadcasting can safely be disabled and suggested extending -walletbroadcast",
     "association": "CONTRIBUTOR",
     "comments": 1,
     "first": "2026-09-29",
     "last": "2026-09-29"
    },
    {
     "login": "achow101",
     "stance": "objection",
     "note": "Concept NACK; objected that disabling rebroadcasts by default has bad effects for the wallet",
     "association": "MEMBER",
     "comments": 2,
     "first": "2026-10-01",
     "last": "2026-10-01"
    },
    {
     "login": "mzumsande",
     "stance": "neutral",
     "note": "pointed out that disabling rebroadcasts should also disable artificial mempool resubmissions",
     "association": "MEMBER",
     "comments": 1,
     "first": "2026-10-01",
     "last": "2026-10-01"
    }
   ],
   "derivation": "NACK from achow101 not withdrawn (Disabling rebroadcasts by default has bad effects for the wallet)",
   "model_state": null,
   "corrections": [],
   "notes": "The author pushed a rework that retains default rebroadcasting behavior and extends -walletbroadcast rather than introducing a new configuration option, fixing objections from achow101 and vicjuma as well as w0xlt's suggestion."
  },
  "dependencies": {
   "depends_on": [],
   "enables": []
  },
  "categories": [
   {
    "name": "wallet",
    "member": true,
    "evidence": "Matches Wallet label and modifies wallet transaction broadcast configuration in src/wallet/wallet.cpp and src/wallet/wallet.h.",
    "band": "P3",
    "reason_tag": "new feature",
    "score": 0.35,
    "factors": {
     "bug_severity": 0,
     "leverage": 0,
     "performance": 0,
     "security_stability": 1,
     "user_value": 1
    },
    "rationale": "Adds a `-walletbroadcast=initialonly` configuration option to prevent transaction ownership leakage from periodic rebroadcasts. While improving broadcast privacy for privacy-conscious users, the default behavior is unchanged and the addition is reasonably deferrable."
   }
  ],
  "confidence": "high",
  "uncertainties": [],
  "needs": []
 },
 "cost_usd": 0.0,
 "source": {
  "record": "2026-10-07T01:11:14+00:00",
  "code": "2026-10-07T01:16:04+00:00",
  "judgments": 1
 }
}