{"action":"created","issue":{"url":"https://api.github.com/repos/bitcoin/bitcoin/issues/13947","repository_url":"https://api.github.com/repos/bitcoin/bitcoin","labels_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/13947/labels{/name}","comments_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/13947/comments","events_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/13947/events","html_url":"https://github.com/bitcoin/bitcoin/pull/13947","id":349817889,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA3ODI0NTI5","number":13947,"title":"Dandelion transaction relay (BIP 156)","user":{"login":"MarcoFalke","id":6399679,"node_id":"MDQ6VXNlcjYzOTk2Nzk=","avatar_url":"https://avatars0.githubusercontent.com/u/6399679?v=4","gravatar_id":"","url":"https://api.github.com/users/MarcoFalke","html_url":"https://github.com/MarcoFalke","followers_url":"https://api.github.com/users/MarcoFalke/followers","following_url":"https://api.github.com/users/MarcoFalke/following{/other_user}","gists_url":"https://api.github.com/users/MarcoFalke/gists{/gist_id}","starred_url":"https://api.github.com/users/MarcoFalke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarcoFalke/subscriptions","organizations_url":"https://api.github.com/users/MarcoFalke/orgs","repos_url":"https://api.github.com/users/MarcoFalke/repos","events_url":"https://api.github.com/users/MarcoFalke/events{/privacy}","received_events_url":"https://api.github.com/users/MarcoFalke/received_events","type":"User","site_admin":false},"labels":[{"id":64583,"node_id":"MDU6TGFiZWw2NDU4Mw==","url":"https://api.github.com/repos/bitcoin/bitcoin/labels/Feature","name":"Feature","color":"7cf575","default":false},{"id":98298007,"node_id":"MDU6TGFiZWw5ODI5ODAwNw==","url":"https://api.github.com/repos/bitcoin/bitcoin/labels/P2P","name":"P2P","color":"006b75","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/bitcoin/bitcoin/milestones/35","html_url":"https://github.com/bitcoin/bitcoin/milestone/35","labels_url":"https://api.github.com/repos/bitcoin/bitcoin/milestones/35/labels","id":3318051,"node_id":"MDk6TWlsZXN0b25lMzMxODA1MQ==","number":35,"title":"0.18.0","description":"","creator":{"login":"MarcoFalke","id":6399679,"node_id":"MDQ6VXNlcjYzOTk2Nzk=","avatar_url":"https://avatars0.githubusercontent.com/u/6399679?v=4","gravatar_id":"","url":"https://api.github.com/users/MarcoFalke","html_url":"https://github.com/MarcoFalke","followers_url":"https://api.github.com/users/MarcoFalke/followers","following_url":"https://api.github.com/users/MarcoFalke/following{/other_user}","gists_url":"https://api.github.com/users/MarcoFalke/gists{/gist_id}","starred_url":"https://api.github.com/users/MarcoFalke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarcoFalke/subscriptions","organizations_url":"https://api.github.com/users/MarcoFalke/orgs","repos_url":"https://api.github.com/users/MarcoFalke/repos","events_url":"https://api.github.com/users/MarcoFalke/events{/privacy}","received_events_url":"https://api.github.com/users/MarcoFalke/received_events","type":"User","site_admin":false},"open_issues":31,"closed_issues":1,"state":"open","created_at":"2018-05-03T15:34:54Z","updated_at":"2018-08-12T15:15:17Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2018-08-12T14:43:07Z","updated_at":"2018-08-12T17:02:42Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/bitcoin/bitcoin/pulls/13947","html_url":"https://github.com/bitcoin/bitcoin/pull/13947","diff_url":"https://github.com/bitcoin/bitcoin/pull/13947.diff","patch_url":"https://github.com/bitcoin/bitcoin/pull/13947.patch"},"body":"The implementation of  BIP 156 (Dandelion transaction relay) is done in three steps:\r\n\r\n#### Add the protocol messages\r\n* `dandeliontx`, which contains a transaction serialized with all witness data\r\n* `dandelionacc`, which is always empty and only used to signal dandelion support to other peers\r\n\r\n#### Shuffle dandelion stems\r\nWe shuffle a list of all peers that sent us the message that they accept dandelion txs (`dandelionacc`). This list can be used on demand by nodes that want to forward a dandelion transaction. (Actual receiving of dandelion txs is done in the next step).\r\n\r\nAlso, we add a command line option `-dandelion`, which can be used to opt out of all dandelion features.\r\n\r\n#### Keep a cache of recent dandelion transactions\r\nDandelion transactions are never added to the global tx pool and only forwarded to one peer (the next hop in the stem). To guard against the next peer going offline, we keep a cache of recent dandelion transactions that are not yet fluffed (added to the mempool) or mined. Entries in this cache expire after some random timeout and transition to fluff phase."},"comment":{"url":"https://api.github.com/repos/bitcoin/bitcoin/issues/comments/412356616","html_url":"https://github.com/bitcoin/bitcoin/pull/13947#issuecomment-412356616","issue_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/13947","id":412356616,"node_id":"MDEyOklzc3VlQ29tbWVudDQxMjM1NjYxNg==","user":{"login":"DrahtBot","id":39886733,"node_id":"MDQ6VXNlcjM5ODg2NzMz","avatar_url":"https://avatars2.githubusercontent.com/u/39886733?v=4","gravatar_id":"","url":"https://api.github.com/users/DrahtBot","html_url":"https://github.com/DrahtBot","followers_url":"https://api.github.com/users/DrahtBot/followers","following_url":"https://api.github.com/users/DrahtBot/following{/other_user}","gists_url":"https://api.github.com/users/DrahtBot/gists{/gist_id}","starred_url":"https://api.github.com/users/DrahtBot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DrahtBot/subscriptions","organizations_url":"https://api.github.com/users/DrahtBot/orgs","repos_url":"https://api.github.com/users/DrahtBot/repos","events_url":"https://api.github.com/users/DrahtBot/events{/privacy}","received_events_url":"https://api.github.com/users/DrahtBot/received_events","type":"User","site_admin":false},"created_at":"2018-08-12T17:02:42Z","updated_at":"2018-08-12T17:02:42Z","author_association":"CONTRIBUTOR","body":"<!--e57a25ab6845829454e8d69fc972939a-->Note to reviewers: This pull request conflicts with the following ones:\n\n* #13946 (p2p: Clarify control flow in ProcessMessage by MarcoFalke)\n* #13743 (refactor: Replace std/boost::bind with lambda by ken2812221)\n* #13123 (net: Add Clang thread safety annotations for guarded variables in the networking code by practicalswift)\n* #10102 ([experimental] Multiprocess bitcoin by ryanofsky)\n\nIf you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first."}}
{"actor":{"display_login":"DrahtBot"}}