{
 "number": 36348,
 "repo": "bitcoin/bitcoin",
 "url": "https://github.com/bitcoin/bitcoin/pull/36348",
 "title": "doc/i2p: mention -privatebroadcast bypasses persistent address",
 "author": "jpk68",
 "author_association": "CONTRIBUTOR",
 "created_at": "2026-09-26T19:58:30Z",
 "updated_at": "2026-10-14T02:33:48Z",
 "description_hash": "0b05b896247f4c4e",
 "age_days": 36,
 "draft": false,
 "labels": [],
 "milestone": null,
 "base": "master",
 "head_sha": "4307c2e0b01765932ad9518c63b764ef8dd16927",
 "head_ref": "persistent-bypass",
 "head_repo": "jpk68/bitcoin",
 "head_history": [
  {
   "t": "2026-10-06T14:08:17Z",
   "sha": "8928c36f248b2dd2376cc4ce3546e0264f4180a5"
  },
  {
   "t": "2026-10-11T03:01:05Z",
   "sha": "d9fad055887e80a9a4cbda1bd1d2f5bb4fa986d5"
  },
  {
   "t": "2026-10-11T03:07:39Z",
   "sha": "4307c2e0b01765932ad9518c63b764ef8dd16927"
  }
 ],
 "additions": 11,
 "deletions": 1,
 "changed_files": 1,
 "commit_count": 1,
 "size_bucket": "S",
 "mergeable_state": "clean",
 "bot": {
  "drahtbot": {
   "present": true,
   "reviews": {
    "ack": [
     {
      "login": "davidgumberg",
      "url": "https://github.com/bitcoin/bitcoin/pull/36348#issuecomment-6159596565"
     }
    ],
    "concept_ack": [
     {
      "login": "jonatack",
      "url": "https://github.com/bitcoin/bitcoin/pull/36348#pullrequestreview-5332086908"
     }
    ],
    "stale_ack": [
     {
      "login": "andrewtoth",
      "url": "https://github.com/bitcoin/bitcoin/pull/36348#pullrequestreview-5330883080"
     }
    ]
   },
   "conflicts": []
  }
 },
 "acks_parsed": {
  "jonatack": {
   "kind": "concept_ack",
   "hash": null,
   "t": "2026-09-27T21:00:43Z",
   "stale": false
  },
  "davidgumberg": {
   "kind": "ack",
   "hash": null,
   "t": "2026-09-30T23:01:30Z",
   "stale": true
  }
 },
 "acks_tally": {
  "ack": 0,
  "stale_ack": 1,
  "concept_ack": 1,
  "approach_ack": 0,
  "nack": 0,
  "concept_nack": 0,
  "approach_nack": 0
 },
 "reviews": {
  "approved": 1,
  "changes_requested": 0,
  "distinct_reviewers": [
   "andrewtoth",
   "davidgumberg",
   "fanquake",
   "jonatack",
   "sedited"
  ]
 },
 "signals": {
  "needs_rebase": false,
  "ci_failed": false,
  "mergeable_state": "clean",
  "last_author_activity": "2026-10-11T03:07:39Z",
  "last_reviewer_activity": "2026-10-14T02:33:42Z",
  "last_reviewer": "davidgumberg",
  "author_silent_days": 21,
  "waiting_on_author_days": 18,
  "days_since_update": 18
 },
 "refs": {
  "mentioned": [],
  "depends_on": [],
  "fixes": [],
  "linked_issues": [],
  "references": [],
  "conflicts": []
 },
 "stack": {
  "shares_commits_with": [],
  "based_on": [],
  "base_for": []
 },
 "review_paths": [
  "doc/i2p.md"
 ],
 "body": "It is not entirely accurate that persistent I2P addresses are used for making outbound connections and accepting incoming ones, as the `-privatebroadcast` option forces the use of a new transient destination for each transaction it relays.",
 "commits": [
  {
   "sha": "4307c2e0b01765932ad9518c63b764ef8dd16927",
   "date": "2026-10-11T03:07:09Z",
   "message": "doc/i2p: mention -privatebroadcast bypasses persistent address\n\nCo-authored-by: Jon Atack <jon@atack.com>\nCo-authored-by: Andrew Toth <andrewstoth@gmail.com>"
  }
 ],
 "timeline": [
  {
   "t": "2026-09-26T20:03:29Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "cc @andrewtoth @vasild",
   "id": "c:5849437305",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#issuecomment-5849437305",
   "hash": "d29ddf4fe6c475a9",
   "edited": null
  },
  {
   "t": "2026-09-27T15:22:29Z",
   "kind": "review",
   "who": "andrewtoth",
   "assoc": "MEMBER",
   "state": "APPROVED",
   "commit": "06e38491077ccb49eb1aee118af5259c905b9a9b",
   "text": "lgtm ACK 06e38491077ccb49eb1aee118af5259c905b9a9b",
   "id": "r:5330883080",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#pullrequestreview-5330883080",
   "hash": "6f94f918bac28087",
   "edited": null
  },
  {
   "t": "2026-09-27T21:00:43Z",
   "kind": "review",
   "who": "jonatack",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "06e38491077ccb49eb1aee118af5259c905b9a9b",
   "text": "Concept ACK\n\nPrivate broadcast opens several short-lived peers per transaction, over Tor or I2P, and only for `sendrawtransaction`. Perhaps the proposed text could mention that to be more precise. WDYT of the following?\n\n```diff\n@@ -83,7 +83,7 @@ generates a persistent I2P address and its corresponding private key by default,\n unless `-i2pacceptincoming=0` is set.  The private key is saved in a file named\n `i2p_private_key` in the Bitcoin Core data directory.  The persistent I2P\n-address is used for making outbound connections and accepting inbound\n-connections.\n+address is used for making outbound connections and accepting inbound\n+connections, except that I2P connections opened for `-privatebroadcast`\n+use a transient destination instead (see below).\n\n In the I2P network, the receiver of an inbound connection sees the address of\n the initiator. This is unlike the Tor network, where the recipient does not\n@@ -98,6 +98,12 @@ I2P addresses are designed to be long-lived.  Waiting for tunnels to be built\n for every peer connection adds delay to connection setup time.  Therefore, I2P\n listening should only be turned off if really needed.\n\n+Independently of `-i2pacceptincoming`, I2P connections opened for\n+`-privatebroadcast` do not use the persistent destination from\n+`i2p_private_key`. Instead, they use a transient destination so the\n+receiver does not see the node's long-lived I2P identity.\n+\n+The `-privatebroadcast` option applies only to transactions submitted\n+with `sendrawtransaction`, not to wallet-created transactions. Private\n+broadcast also runs over Tor; this section only describes the I2P case.\n+\n## Fetching I2P-related information from Bitcoin Core\n```",
   "id": "r:5332086908",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#pullrequestreview-5332086908",
   "hash": "5cacbc74aa062dcd",
   "edited": "2026-09-27T21:20:02Z"
  },
  {
   "t": "2026-09-28T14:38:48Z",
   "kind": "comment",
   "who": "jpk68",
   "assoc": "CONTRIBUTOR",
   "text": "Ah, fair point. Do you think the Tor docs should be updated for this as well?",
   "id": "c:5872220356",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#issuecomment-5872220356",
   "hash": "c76238ccbabb9864",
   "edited": null
  },
  {
   "t": "2026-09-30T23:01:30Z",
   "kind": "comment",
   "who": "davidgumberg",
   "assoc": "MEMBER",
   "text": "ACK https://github.com/bitcoin/bitcoin/commit/06e38491077ccb49eb1aee118af5259c905b9a9b\n\nCould be updated for tor as well, but although pedantically more correct I'm not sure I get why this would be valuable for a user to know.",
   "id": "c:5921196167",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#issuecomment-5921196167",
   "hash": "34158308b05d313c",
   "edited": null
  },
  {
   "t": "2026-10-01T00:25:05Z",
   "kind": "comment",
   "who": "jonatack",
   "assoc": "MEMBER",
   "text": "Updating the tor docs was not the feedback I gave.",
   "id": "c:5922186874",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#issuecomment-5922186874",
   "hash": "e9fa6c514f9c5bfe",
   "edited": "2026-10-01T00:25:51Z"
  },
  {
   "t": "2026-10-06T08:04:52Z",
   "kind": "comment",
   "who": "sedited",
   "assoc": "MEMBER",
   "text": "@jpk68 do you want to take jonatack's suggestion https://github.com/bitcoin/bitcoin/pull/36348#pullrequestreview-5332086908?",
   "id": "c:6012059927",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#issuecomment-6012059927",
   "hash": "5728b8ea3a29ff8e",
   "edited": null
  },
  {
   "t": "2026-10-06T12:47:37Z",
   "kind": "comment",
   "who": "jpk68",
   "assoc": "CONTRIBUTOR",
   "text": "@sedited Sure, that sounds fine to me. Apologies, but I'm a bit confused about the part with the Tor docs - should those be updated as well, or no?",
   "id": "c:6016585411",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#issuecomment-6016585411",
   "hash": "4b4524bde8e67571",
   "edited": null
  },
  {
   "t": "2026-10-06T13:09:52Z",
   "kind": "comment",
   "who": "sedited",
   "assoc": "MEMBER",
   "text": "From reading through the thread here, the changes I'd imagine to the tor docs would be less interesting / probably just noise in explaining a user how to get set up. It is more interesting in this document, because of this paragraph https://github.com/bitcoin/bitcoin/pull/36348/changes#diff-629b3acb5e1cd9ad21f4f55bc95822e79f22f15da47f5de82284c15cbe8bb47bL88-L90 , so I'd keep the changes to the i2p docs, and expand it to `i2pacceptincoming`, as jonatack suggested.",
   "id": "c:6016984385",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#issuecomment-6016984385",
   "hash": "3c73b3de81818687",
   "edited": null
  },
  {
   "t": "2026-10-06T14:08:17Z",
   "kind": "force_push",
   "who": "jpk68",
   "commit": "8928c36f248b2dd2376cc4ce3546e0264f4180a5",
   "id": "push:8928c36f248b2dd2376cc4ce3546e0264f4180a5"
  },
  {
   "t": "2026-10-07T01:08:19Z",
   "kind": "review_comment",
   "who": "andrewtoth",
   "assoc": "MEMBER",
   "path": "doc/i2p.md",
   "commit": "8928c36f248b2dd2376cc4ce3546e0264f4180a5",
   "in_reply_to": null,
   "text": "Might be clearer to use address here instead of destination.\n\n```suggestion\nalways use a transient address instead (see below).\n```",
   "id": "rc:4202030598",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#discussion_r4202030598",
   "hash": "8a773bc04e9760bc",
   "edited": "2026-10-07T01:11:47Z"
  },
  {
   "t": "2026-10-07T01:11:13Z",
   "kind": "review_comment",
   "who": "andrewtoth",
   "assoc": "MEMBER",
   "path": "doc/i2p.md",
   "commit": "8928c36f248b2dd2376cc4ce3546e0264f4180a5",
   "in_reply_to": null,
   "text": "Similarly\n\n```suggestion\nRegardless of `-i2pacceptincoming`, I2P connections opened for\n`-privatebroadcast` do not use the persistent address from\n`i2p_private_key`. Instead, they use a transient address so the\nreceiver does not see the node's long-lived I2P identity.\n```",
   "id": "rc:4202046621",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#discussion_r4202046621",
   "hash": "f830eac79e20cb16",
   "edited": "2026-10-07T01:11:47Z"
  },
  {
   "t": "2026-10-11T03:01:05Z",
   "kind": "force_push",
   "who": "jpk68",
   "commit": "d9fad055887e80a9a4cbda1bd1d2f5bb4fa986d5",
   "id": "push:d9fad055887e80a9a4cbda1bd1d2f5bb4fa986d5"
  },
  {
   "t": "2026-10-11T03:07:39Z",
   "kind": "force_push",
   "who": "jpk68",
   "commit": "4307c2e0b01765932ad9518c63b764ef8dd16927",
   "id": "push:4307c2e0b01765932ad9518c63b764ef8dd16927"
  },
  {
   "t": "2026-10-14T02:33:42Z",
   "kind": "comment",
   "who": "davidgumberg",
   "assoc": "MEMBER",
   "text": "text ACK https://github.com/bitcoin/bitcoin/commit/4307c2e0b01765932ad9518c63b764ef8dd16927\n\nThe change here seems pedantically correct, but I'm still not sure I understand why I2P users would care or why this information would be relevant to them, so it seems a bit noisy to me, but fine to me.",
   "id": "c:6159596565",
   "url": "https://github.com/bitcoin/bitcoin/pull/36348#issuecomment-6159596565",
   "hash": "3ccc6276b674f3bc",
   "edited": null
  }
 ],
 "labels_log": [
  {
   "t": "2026-10-11T03:08:07Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-10-11T04:36:13Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  }
 ],
 "state_log": [],
 "text_chars": 4023,
 "text_tokens_estimate": 1005,
 "changed_paths": [
  "doc/i2p.md"
 ],
 "files": [
  {
   "path": "doc/i2p.md",
   "add": 11,
   "del": 1
  }
 ],
 "test_lines": 0,
 "git": {
  "head": "4307c2e0b01765932ad9518c63b764ef8dd16927",
  "head_matches_backup": true,
  "base": "ed7dd7cf4e1561a97edf72eba29a67b14e28c717",
  "patch_id": "b854f6136cb62491",
  "commits": [
   {
    "sha": "4307c2e0b0",
    "subject": "doc/i2p: mention -privatebroadcast bypasses persistent address",
    "files": 1,
    "add": 11,
    "del": 1
   }
  ],
  "patch_truncated": false
 },
 "patch_id": "b854f6136cb62491",
 "input_hash": "12f8fd4d8b8fd670",
 "extracted_at": "2026-11-02T01:09:49+00:00"
}