{
  "founder": "jnewbery",
  "channel": "#bitcoin-core-dev",
  "network": "freenode",
  "id": "60defd955e0c4524a7a19d6ee5b1ff41",
  "name": "#bitcoin-core-dev",
  "chair": "jnewbery",
  "chairs": [
    "jnewbery"
  ],
  "nicks": {
    "jnewbery": 49,
    "core-meetingbot": 6,
    "amiti": 17,
    "glozow": 11,
    "gleb": 36,
    "sipa": 24,
    "ariard": 25,
    "hebasto": 1,
    "aj": 35,
    "lightlike": 2,
    "gribble": 4,
    "prayank": 3
  },
  "start_time": "2021-02-23T21:00:18+00:00",
  "end_time": "2021-02-23T22:01:07+00:00",
  "active": false,
  "original_topic": "Bitcoin Core development discussion and commit log | Feel free to watch, but please take commentary and usage questions to #bitcoin | Channel logs: http://www.erisian.com.au/bitcoin-core-dev/, http://gnusha.org/bitcoin-core-dev/ | Meeting topics http://gnusha.org/bitcoin-core-dev/proposedmeetingtopics.txt / http://gnusha.org/bitcoin-core-dev/proposedwalletmeetingtopics.txt",
  "current_topic": "Peer rate-limiting (jnewbery)",
  "messages": [
    {
      "id": "f41a439b7009453c939bf150f8319bbf",
      "sender": "jnewbery",
      "payload": "#startmeeting",
      "action": false,
      "timestamp": "2021-02-23T21:00:18+00:00"
    },
    {
      "id": "8059102d64b740e58c5979950d6dc4b2",
      "sender": "core-meetingbot",
      "payload": "Meeting started Tue Feb 23 21:00:18 2021 UTC.  The chair is jnewbery. Information about MeetBot at https://bitcoin.jonasschnelli.ch/ircmeetings.",
      "action": false,
      "timestamp": "2021-02-23T21:00:18+00:00"
    },
    {
      "id": "fbe48c6e2408438bb8c881385d248b4d",
      "sender": "core-meetingbot",
      "payload": "Available commands: action commands idea info link nick",
      "action": false,
      "timestamp": "2021-02-23T21:00:18+00:00"
    },
    {
      "id": "d7344ac0bb384fb4ab331e74c97f20c1",
      "sender": "amiti",
      "payload": "hi!",
      "action": false,
      "timestamp": "2021-02-23T21:00:22+00:00"
    },
    {
      "id": "10c7aad4064748828b71d0a7b741b683",
      "sender": "jnewbery",
      "payload": "#bitcoin-core-dev Meeting: achow101 aj amiti ariard bluematt cfields Chris_Stewart_5 digi_james dongcarl elichai2 emilengler fanquake fjahr gleb glozow gmaxwell gwillen hebasto instagibbs jamesob jb55 jeremyrubin jl2012 jnewbery jonasschnelli jonatack jtimon kallewoof kanzure kvaciral lightlike luke-jr maaku marcofalke meshcollider michagogo moneyball morcos nehan NicolasDorier paveljanik",
      "action": false,
      "timestamp": "2021-02-23T21:00:26+00:00"
    },
    {
      "id": "a484908b129049058b3bd57aa875f7d7",
      "sender": "jnewbery",
      "payload": "petertodd phantomcircuit promag provoostenator ryanofsky sdaftuar sipa vasild wumpus",
      "action": false,
      "timestamp": "2021-02-23T21:00:32+00:00"
    },
    {
      "id": "11fc936003b94c1a95129c38f53130a3",
      "sender": "glozow",
      "payload": "hi",
      "action": false,
      "timestamp": "2021-02-23T21:00:33+00:00"
    },
    {
      "id": "f6781af7f500445b947c118b7837672e",
      "sender": "gleb",
      "payload": "hi!",
      "action": false,
      "timestamp": "2021-02-23T21:00:35+00:00"
    },
    {
      "id": "b215731c411549ce895bab6938da1181",
      "sender": "sipa",
      "payload": "hi",
      "action": false,
      "timestamp": "2021-02-23T21:00:46+00:00"
    },
    {
      "id": "2cd56ca1140d4d0bb512617ded6e185a",
      "sender": "ariard",
      "payload": "hi",
      "action": false,
      "timestamp": "2021-02-23T21:00:46+00:00"
    },
    {
      "id": "ff86795b0d9242ac8ca945276c83ce3d",
      "sender": "hebasto",
      "payload": "hi",
      "action": false,
      "timestamp": "2021-02-23T21:01:03+00:00"
    },
    {
      "id": "9786ccf080734f6884b9a22a830c3325",
      "sender": "aj",
      "payload": "hola",
      "action": false,
      "timestamp": "2021-02-23T21:01:25+00:00"
    },
    {
      "id": "cd198fc79e3f4be4a228cb0781d28c10",
      "sender": "lightlike",
      "payload": "hi",
      "action": false,
      "timestamp": "2021-02-23T21:01:33+00:00"
    },
    {
      "id": "a5f348d22fe844b79daeeac8f1c920e1",
      "sender": "jnewbery",
      "payload": "hi folks. Proposed meeting topics are here: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/P2P-IRC-meetings#23-feb-2021. Current priorities are here: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/P2P-Current-Priorities",
      "action": false,
      "timestamp": "2021-02-23T21:01:36+00:00"
    },
    {
      "id": "b0489630083a4a279af04fb88459214c",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/23 | CORS support by gavinandresen \u00c3\u0082\u00c2\u00b7 Pull Request #23 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2021-02-23T21:01:39+00:00"
    },
    {
      "id": "f4d7489b8aac4059b1bd9f5368fbd065",
      "sender": "jnewbery",
      "payload": "buenos dias aj!",
      "action": false,
      "timestamp": "2021-02-23T21:01:55+00:00"
    },
    {
      "id": "975feab94e024426ba6627686e7aa822",
      "sender": "jnewbery",
      "payload": "#topic erlay update (gleb)",
      "action": false,
      "timestamp": "2021-02-23T21:02:14+00:00"
    },
    {
      "id": "3bb7035b93b54e16814a765db136965f",
      "sender": "core-meetingbot",
      "payload": "topic: erlay update (gleb)",
      "action": false,
      "timestamp": "2021-02-23T21:02:14+00:00"
    },
    {
      "id": "b4870d9833da4285b379fd61ca8b5ad5",
      "sender": "gleb",
      "payload": "I\u00c3\u00a2\u00c2\u0080\u00c2\u0099m grateful to all folks pushed me to refactor #18261 in a similar way to txrequest.cpp.",
      "action": false,
      "timestamp": "2021-02-23T21:02:35+00:00"
    },
    {
      "id": "406bf09eb40447f4835af951c41bc69f",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/18261 | Erlay: bandwidth-efficient transaction relay protocol by naumenkogs \u00c3\u0082\u00c2\u00b7 Pull Request #18261 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2021-02-23T21:02:38+00:00"
    },
    {
      "id": "228b4778df1a49caa23f49e1af6210d4",
      "sender": "gleb",
      "payload": "I\u00c3\u00a2\u00c2\u0080\u00c2\u0099m almost done with that, just need to split cpp/header, split into commits, and add a bit more comments. Gonna be ready in the next couple days.",
      "action": false,
      "timestamp": "2021-02-23T21:02:42+00:00"
    },
    {
      "id": "d0abe789c886405495c23a45218a7af0",
      "sender": "gleb",
      "payload": "jnewbery jonatack amiti I recall you mentioned you\u00c3\u00a2\u00c2\u0080\u00c2\u0099d prefer a more modular appoach. Would any of you be able to take a look during this week, before I update the main PR?",
      "action": false,
      "timestamp": "2021-02-23T21:02:55+00:00"
    },
    {
      "id": "93f2f48c368f4d8182637005728d86d8",
      "sender": "aj",
      "payload": "jnewbery: good nachos to you too!",
      "action": false,
      "timestamp": "2021-02-23T21:02:55+00:00"
    },
    {
      "id": "3c6c524069014a89a657490a7538fb39",
      "sender": "gleb",
      "payload": "I would really appreciate initial feedback on the new modularity, and I think this would also help to save review time of those folks focusing on other aspects of the PR.",
      "action": false,
      "timestamp": "2021-02-23T21:03:00+00:00"
    },
    {
      "id": "54fccbc066ff45638d74c8ea2f3aadcd",
      "sender": "gleb",
      "payload": "It\u00c3\u00a2\u00c2\u0080\u00c2\u0099s just that if this new approach is also not really good (for now I personally think it is good), I\u00c3\u00a2\u00c2\u0080\u00c2\u0099d prefer us realizing it earlier, and re-shaping it again.",
      "action": false,
      "timestamp": "2021-02-23T21:03:08+00:00"
    },
    {
      "id": "0a6bdd090b5e42fdb5d2bace332a939d",
      "sender": "prayank",
      "payload": "jnewbery: TIL aj is working on Dandelion",
      "action": false,
      "timestamp": "2021-02-23T21:03:25+00:00"
    },
    {
      "id": "a3d26fee4fae4810ad662e077ebc3050",
      "sender": "jnewbery",
      "payload": "gleb: sure, I'm happy to take a look at it",
      "action": false,
      "timestamp": "2021-02-23T21:03:51+00:00"
    },
    {
      "id": "1794559701f8465d83413db923c1432e",
      "sender": "gleb",
      "payload": "jnewbery. Great, thanks. If anyone else is willing to join john, please let me know :)",
      "action": false,
      "timestamp": "2021-02-23T21:04:12+00:00"
    },
    {
      "id": "f792cb5039e24f8b8d9eeae6c169ea38",
      "sender": "gleb",
      "payload": "Otherwise, that's it.",
      "action": false,
      "timestamp": "2021-02-23T21:04:26+00:00"
    },
    {
      "id": "e6e630c486df4a8b96da08174157b303",
      "sender": "jnewbery",
      "payload": "where is it? how do you want me to leave review?",
      "action": false,
      "timestamp": "2021-02-23T21:04:38+00:00"
    },
    {
      "id": "4832932c6eb04157a18e6f4e0661d8f7",
      "sender": "amiti",
      "payload": "gleb: I'm also down",
      "action": false,
      "timestamp": "2021-02-23T21:05:02+00:00"
    },
    {
      "id": "2a3c763fa578456cb8bb036051f54a59",
      "sender": "gleb",
      "payload": "It's under naumenkogs/bitcoin/tree/erlay_refactored, but it's currently not ready yet, as I said.",
      "action": false,
      "timestamp": "2021-02-23T21:05:02+00:00"
    },
    {
      "id": "0b279c83192345ec9f1d45322bcbbdb9",
      "sender": "jnewbery",
      "payload": "I also still think PRing minisketch separately would help move things forward",
      "action": false,
      "timestamp": "2021-02-23T21:05:26+00:00"
    },
    {
      "id": "6bf3bfd426964441a356529bcf69859b",
      "sender": "sipa",
      "payload": "perhaps leave a comment on the PR when you're done with the refactoring and want comments?",
      "action": false,
      "timestamp": "2021-02-23T21:05:29+00:00"
    },
    {
      "id": "082ce997619b43d083e34efd927edb08",
      "sender": "ariard",
      "payload": "or leave a message on irc here",
      "action": false,
      "timestamp": "2021-02-23T21:05:48+00:00"
    },
    {
      "id": "e92cacc49f9a470d88a5481e7248a795",
      "sender": "gleb",
      "payload": "jnewbery: yeah, since c++ headers is merged, we can probably PR minisketch",
      "action": false,
      "timestamp": "2021-02-23T21:05:59+00:00"
    },
    {
      "id": "eeda9e99d116400bb7f3487c870eab4c",
      "sender": "gleb",
      "payload": "sipa: I'm wondering if you'd be a better candidate for merging minisketch? Just realistically, discussing the code and such",
      "action": false,
      "timestamp": "2021-02-23T21:06:37+00:00"
    },
    {
      "id": "9f5dac4468724ed6aa6d384da6e84e21",
      "sender": "gleb",
      "payload": "Or you'd rather me do it?",
      "action": false,
      "timestamp": "2021-02-23T21:06:48+00:00"
    },
    {
      "id": "71793b0ebd6a4ee4b005d4e1e3855415",
      "sender": "gleb",
      "payload": "Not merging but creating PR I mean.",
      "action": false,
      "timestamp": "2021-02-23T21:07:01+00:00"
    },
    {
      "id": "67c6d11bb5624912aecc657765488037",
      "sender": "sipa",
      "payload": "i'll open a PR to fix the issue that the current minisketch tests run forever (which is unexpected and confuses people)",
      "action": false,
      "timestamp": "2021-02-23T21:07:09+00:00"
    },
    {
      "id": "238aef76c346457cb288a05e0a944b06",
      "sender": "sipa",
      "payload": "i think after that we could",
      "action": false,
      "timestamp": "2021-02-23T21:07:16+00:00"
    },
    {
      "id": "64696d216dfe448090463e17727a2f0b",
      "sender": "sipa",
      "payload": "i",
      "action": false,
      "timestamp": "2021-02-23T21:07:25+00:00"
    },
    {
      "id": "40ff8345447d41cd968570957d7d3811",
      "sender": "sipa",
      "payload": "i'm happy to PR it",
      "action": false,
      "timestamp": "2021-02-23T21:07:30+00:00"
    },
    {
      "id": "15a7637f73f44a31ab1dbeccb095c6f5",
      "sender": "gleb",
      "payload": "Great, thank you.",
      "action": false,
      "timestamp": "2021-02-23T21:07:34+00:00"
    },
    {
      "id": "d1c5dd2c3bfb4b64844b9fb4049bdc4b",
      "sender": "gleb",
      "payload": "I'll focus on the erlay part then",
      "action": false,
      "timestamp": "2021-02-23T21:07:39+00:00"
    },
    {
      "id": "acd1df5fc2a04b51b6ddd7fd331983cb",
      "sender": "jnewbery",
      "payload": "would minisketch tests run with `make check` in the bitcoin core?",
      "action": false,
      "timestamp": "2021-02-23T21:07:56+00:00"
    },
    {
      "id": "144a6c9c380b4faba68fee050feead87",
      "sender": "sipa",
      "payload": "they probably should",
      "action": false,
      "timestamp": "2021-02-23T21:08:18+00:00"
    },
    {
      "id": "1dfbe66ac5114833a0bbf48fc8a8e84c",
      "sender": "sipa",
      "payload": "(and that makes it a blocker to not have them run forever...)",
      "action": false,
      "timestamp": "2021-02-23T21:08:32+00:00"
    },
    {
      "id": "e74fd33b8bd44579a6c1f7d27d180486",
      "sender": "gleb",
      "payload": "jnewbery amiti: Let's figure the best way you can help with my erlay refactor in personal messages once I'm ready",
      "action": false,
      "timestamp": "2021-02-23T21:08:38+00:00"
    },
    {
      "id": "b0ccbf7e532d451c8ee2ab3a3ba203d4",
      "sender": "jnewbery",
      "payload": "gleb: just leave a comment on the PR when it's ready and I'll take a look at the branch",
      "action": false,
      "timestamp": "2021-02-23T21:08:59+00:00"
    },
    {
      "id": "3d2259dc8c6046a4a670cf21137d7471",
      "sender": "amiti",
      "payload": "+1",
      "action": false,
      "timestamp": "2021-02-23T21:09:06+00:00"
    },
    {
      "id": "f172cd7f879841dc9470c4cbf3da039a",
      "sender": "sipa",
      "payload": "+1",
      "action": false,
      "timestamp": "2021-02-23T21:09:11+00:00"
    },
    {
      "id": "df8efd202f714093b2ee4f6bf9274270",
      "sender": "gleb",
      "payload": "alright",
      "action": false,
      "timestamp": "2021-02-23T21:09:13+00:00"
    },
    {
      "id": "7f50671ea3774e92a043ddf93b423d9d",
      "sender": "jnewbery",
      "payload": "that PR is a bit unwieldly at this point. If you're changing the approach and minisketch is going to be split out of it, it might make sense to start a new PR, but you can decide that later",
      "action": false,
      "timestamp": "2021-02-23T21:09:59+00:00"
    },
    {
      "id": "f467927402674a90b3f7f70fc0f4fd44",
      "sender": "gleb",
      "payload": "jnewbery: I totally agree.",
      "action": false,
      "timestamp": "2021-02-23T21:10:21+00:00"
    },
    {
      "id": "8c684649c1af4c0c8f235be151fab745",
      "sender": "aj",
      "payload": "(+1 on a new PR to avoid all the load mores)",
      "action": false,
      "timestamp": "2021-02-23T21:10:26+00:00"
    },
    {
      "id": "80127933ebd4499f95e580bc9a1e565e",
      "sender": "sipa",
      "payload": "yeah",
      "action": false,
      "timestamp": "2021-02-23T21:10:27+00:00"
    },
    {
      "id": "449d07ab21644213824a9b0e50fcfba6",
      "sender": "jnewbery",
      "payload": "ok, we have three other topics:",
      "action": false,
      "timestamp": "2021-02-23T21:10:39+00:00"
    },
    {
      "id": "5e5a872eab9749bf88c1a5d50dbed3fe",
      "sender": "jnewbery",
      "payload": "- Orphan reprocessing (jnewbery)",
      "action": false,
      "timestamp": "2021-02-23T21:10:41+00:00"
    },
    {
      "id": "450afa86981e42458e83a1eeb45bf835",
      "sender": "jnewbery",
      "payload": "- Peer rate-limiting (jnewbery)",
      "action": false,
      "timestamp": "2021-02-23T21:10:49+00:00"
    },
    {
      "id": "d3330586a8744884baea40a0dcf9cb6e",
      "sender": "jnewbery",
      "payload": "- Dandelion update (ajtowns)",
      "action": false,
      "timestamp": "2021-02-23T21:10:54+00:00"
    },
    {
      "id": "818fee7c2e7049c3b7d31f895da63cfe",
      "sender": "jnewbery",
      "payload": "anyone want to add any quick updates or other topics before we move onto those?",
      "action": false,
      "timestamp": "2021-02-23T21:11:11+00:00"
    },
    {
      "id": "4b25ebc82f4f4d489fa805d174c60b5b",
      "sender": "jnewbery",
      "payload": "Dandelion update sounds like it might be the quickest, so maybe we do that first",
      "action": false,
      "timestamp": "2021-02-23T21:11:51+00:00"
    },
    {
      "id": "4b741fea242e4399bd6529dffb341513",
      "sender": "jnewbery",
      "payload": "#topic dandelion update (ajtowns)",
      "action": false,
      "timestamp": "2021-02-23T21:11:59+00:00"
    },
    {
      "id": "945c48b1a1ea4a6998bd0b1b3fe603be",
      "sender": "core-meetingbot",
      "payload": "topic: dandelion update (ajtowns)",
      "action": false,
      "timestamp": "2021-02-23T21:11:59+00:00"
    },
    {
      "id": "b553a1378c1b469aa0d7dd92d9eaa86e",
      "sender": "aj",
      "payload": "oh, i was happy for it to be the if-we-had-time",
      "action": false,
      "timestamp": "2021-02-23T21:12:12+00:00"
    },
    {
      "id": "97abf4fb6d6e4d0f8361ed2c9c228627",
      "sender": "aj",
      "payload": "anyhoo",
      "action": false,
      "timestamp": "2021-02-23T21:12:14+00:00"
    },
    {
      "id": "4267be211ab04262839d6de69ae58908",
      "sender": "aj",
      "payload": "we were talking about dandelion last week, and maybe have some ideas about how to do it without needing a separate stempool. but it was pointed out there was an idea to do a -lite variant, that only stems for a single hop",
      "action": false,
      "timestamp": "2021-02-23T21:12:58+00:00"
    },
    {
      "id": "7be1beadae6f49e093ce5f11f0361364",
      "sender": "aj",
      "payload": "that has weaker privacy support, but doesn't need new p2p messages or a separate mempool, so should be much easier to implement",
      "action": false,
      "timestamp": "2021-02-23T21:13:26+00:00"
    },
    {
      "id": "58d915ead4884e81b118cad42a1cb624",
      "sender": "glozow",
      "payload": "does one-hop work? couldn't you tell where a tx originates if you knew they were one-hopping to you?",
      "action": false,
      "timestamp": "2021-02-23T21:13:45+00:00"
    },
    {
      "id": "ce65c40e04614a918fd3094d754734b1",
      "sender": "glozow",
      "payload": "idk if i'm missing something",
      "action": false,
      "timestamp": "2021-02-23T21:14:01+00:00"
    },
    {
      "id": "9b29032a92fb4842a37a13d90e4c4455",
      "sender": "aj",
      "payload": "i've been chatting on twitter with gulia and she's updated her sims",
      "action": false,
      "timestamp": "2021-02-23T21:14:02+00:00"
    },
    {
      "id": "eea49eb1f70e404f9f72c5181c024a05",
      "sender": "gleb",
      "payload": "do you make a new connection for one-hop, or pick from existing conns?",
      "action": false,
      "timestamp": "2021-02-23T21:14:03+00:00"
    },
    {
      "id": "a6fca06070644469b1f6a08da8c71510",
      "sender": "jnewbery",
      "payload": "I think if an attacker made multiple connections to you, they could tell if you're only relaying a transaction to a single peer",
      "action": false,
      "timestamp": "2021-02-23T21:14:54+00:00"
    },
    {
      "id": "6e2f62054c8c44a0a745d5848bf523b0",
      "sender": "aj",
      "payload": "glozow: one-hop stem == pick one or two outbound peers and send your tx to them; when you receive a tx always flood it to everyone. so you don't immediately know if a tx was stemmed/flooded to you (and hence don't need different messages)",
      "action": false,
      "timestamp": "2021-02-23T21:14:58+00:00"
    },
    {
      "id": "e965078a01d942d4af56a855ecdd1f65",
      "sender": "aj",
      "payload": "jnewbery: if an outbound connects back to you as an inbound, yeah",
      "action": false,
      "timestamp": "2021-02-23T21:15:18+00:00"
    },
    {
      "id": "be659ea6df0e483aba967b5c496bd0fb",
      "sender": "aj",
      "payload": "jnewbery: (you don't stem to inbounds to make that harder, i think)",
      "action": false,
      "timestamp": "2021-02-23T21:15:31+00:00"
    },
    {
      "id": "6930550ccd73427dbb037e0933c9f62c",
      "sender": "jnewbery",
      "payload": "ah, only choose from outbounds",
      "action": false,
      "timestamp": "2021-02-23T21:15:57+00:00"
    },
    {
      "id": "eccdc28b600d47018096625611b961c6",
      "sender": "aj",
      "payload": "https://twitter.com/giuliacfanti/status/1362963585471815680 is the twitter thread, and has some graphs",
      "action": false,
      "timestamp": "2021-02-23T21:16:02+00:00"
    },
    {
      "id": "c43e7a9c11e8478c9ab6ab3451dfbf1b",
      "sender": "aj",
      "payload": "it looks to me like -lite is a signficant enough improvement that it's probably worth tryng, and dandelion++ proper is enough of an improvement on that that it's still worth thinking about if we can make it feasible",
      "action": false,
      "timestamp": "2021-02-23T21:16:38+00:00"
    },
    {
      "id": "54d9efab9b4547ffa47ea25910604c4d",
      "sender": "prayank",
      "payload": "aj: I am also trying to resolve conflicts and add Dandelion code (from BIP implementation link) in current master branch. I wasn't even aware you are working on it because nobody informed on IRC, Github or SE when we discussed Dandelion. I will read the Twitter thread and DM you later.",
      "action": false,
      "timestamp": "2021-02-23T21:16:38+00:00"
    },
    {
      "id": "6b9d944595344701928064334549355b",
      "sender": "sipa",
      "payload": "prayank: dandelion lite has basically nothing to do with dandelion (in terms of implementation complexity)",
      "action": false,
      "timestamp": "2021-02-23T21:17:00+00:00"
    },
    {
      "id": "cf13bcb707d546759a763c27c4d3871b",
      "sender": "aj",
      "payload": "prayank: there's a link in that twitter thread to the irc conversation last week",
      "action": false,
      "timestamp": "2021-02-23T21:17:08+00:00"
    },
    {
      "id": "4fde1b308821489dbf525dfe656080eb",
      "sender": "gleb",
      "payload": "aj: Erlay does something really similar to lite, actually.",
      "action": false,
      "timestamp": "2021-02-23T21:17:10+00:00"
    },
    {
      "id": "6d3efdf96872479091f005057cec97f0",
      "sender": "glozow",
      "payload": "i don't think the bip is updated for dandelion++",
      "action": false,
      "timestamp": "2021-02-23T21:17:12+00:00"
    },
    {
      "id": "c59ddc467f6a4d959e1a0322bd8075ce",
      "sender": "glozow",
      "payload": "is it?",
      "action": false,
      "timestamp": "2021-02-23T21:17:14+00:00"
    },
    {
      "id": "82e29e0a6f94499aa84f3c3ff8143498",
      "sender": "prayank",
      "payload": "sipa: Okay",
      "action": false,
      "timestamp": "2021-02-23T21:17:21+00:00"
    },
    {
      "id": "a8c02b13220a46ee809e1415825f064d",
      "sender": "sipa",
      "payload": "the bip is dandelion++ afaik",
      "action": false,
      "timestamp": "2021-02-23T21:17:21+00:00"
    },
    {
      "id": "2e50da8818fc47d28a3d79e5710df771",
      "sender": "sipa",
      "payload": "my impression from dandelion lite is that it's basically 1% of the work to get 80% of the benefits (under vaguely reasonable assumptions)",
      "action": false,
      "timestamp": "2021-02-23T21:17:36+00:00"
    },
    {
      "id": "0533d89b535a4c59849c5301c7741088",
      "sender": "aj",
      "payload": "sipa: looks more like 40%-50% of the benefits to me",
      "action": false,
      "timestamp": "2021-02-23T21:18:10+00:00"
    },
    {
      "id": "e0b124e3631c46d580ef8ee1d1b26bc7",
      "sender": "sipa",
      "payload": "okay.",
      "action": false,
      "timestamp": "2021-02-23T21:18:16+00:00"
    },
    {
      "id": "afbe0959f9d44a82a5dde7351077cc12",
      "sender": "ariard",
      "payload": "so the model is alice initial-broadcast to bob, it's testmempoolaccepted to not let any fingerprint in bob's mempool and stems to caroll, an outbound?",
      "action": false,
      "timestamp": "2021-02-23T21:18:16+00:00"
    },
    {
      "id": "309341cd071c4a5a8742c3aed77560dd",
      "sender": "glozow",
      "payload": "i think bob floods, no?",
      "action": false,
      "timestamp": "2021-02-23T21:18:39+00:00"
    },
    {
      "id": "cf0d01df6c9749bd8418d433ef04e273",
      "sender": "lightlike",
      "payload": "would it be either dandelion or erlay, or would both work together?",
      "action": false,
      "timestamp": "2021-02-23T21:18:50+00:00"
    },
    {
      "id": "41989080ff75429aa2de9019a760e29d",
      "sender": "aj",
      "payload": "for lite, bob floods",
      "action": false,
      "timestamp": "2021-02-23T21:18:51+00:00"
    },
    {
      "id": "fd94b007a30841ecb243d1eb21a21704",
      "sender": "sipa",
      "payload": "there is no stempool in lite, right? you just remember in the wallet itself, and the rebroadcast uses the full broadcast",
      "action": false,
      "timestamp": "2021-02-23T21:18:58+00:00"
    },
    {
      "id": "bb17e2baf76640ee8bfe27671d99ad90",
      "sender": "ariard",
      "payload": "okay gotcha",
      "action": false,
      "timestamp": "2021-02-23T21:18:59+00:00"
    },
    {
      "id": "53efcff1c9044a7688f59e0511bfdced",
      "sender": "gleb",
      "payload": "lightlike: they should work together just fine",
      "action": false,
      "timestamp": "2021-02-23T21:19:06+00:00"
    },
    {
      "id": "422c2852e3c44dfcbc0f03c5b943ca89",
      "sender": "glozow",
      "payload": "what if bob black-holes it?",
      "action": false,
      "timestamp": "2021-02-23T21:19:16+00:00"
    },
    {
      "id": "624ceaa1e8f74ec6be8febfd44105b08",
      "sender": "glozow",
      "payload": "doesn't relay it, i mean",
      "action": false,
      "timestamp": "2021-02-23T21:19:22+00:00"
    },
    {
      "id": "0098965932104af4b8f44f8e245fd25e",
      "sender": "sipa",
      "payload": "glozow: rebroadcast takes care of it, just like in dandelion (correct me if i'm wrong, aj, i'm going from very vague memory)",
      "action": false,
      "timestamp": "2021-02-23T21:19:40+00:00"
    },
    {
      "id": "81b90f32538e4d8f855962b0f2d2bef2",
      "sender": "aj",
      "payload": "glozow: you hit the wallet rebroadcast timer and do a flood, probably",
      "action": false,
      "timestamp": "2021-02-23T21:19:49+00:00"
    },
    {
      "id": "f175cc5e759342ca962b2589205e7e4f",
      "sender": "glozow",
      "payload": "doesn't rebroadcast not run for 12 hours at least?",
      "action": false,
      "timestamp": "2021-02-23T21:19:56+00:00"
    },
    {
      "id": "3231cc2956e0451081f89edac1967c2c",
      "sender": "jnewbery",
      "payload": "can you summarise what the 40-50% benefit is?",
      "action": false,
      "timestamp": "2021-02-23T21:19:58+00:00"
    },
    {
      "id": "67161fc040fd4fc493ef18be2603d975",
      "sender": "aj",
      "payload": "sipa: i don't think those details are really specced anywhere",
      "action": false,
      "timestamp": "2021-02-23T21:20:01+00:00"
    },
    {
      "id": "630264466dcc40768940e0ce5e809abd",
      "sender": "gleb",
      "payload": "black holes also can be detected and disconnected after one occasion.",
      "action": false,
      "timestamp": "2021-02-23T21:20:20+00:00"
    },
    {
      "id": "30f09afc65ce4e58ab48c93331d0e606",
      "sender": "aj",
      "payload": "jnewbery: the statistics used are \"precision\" and \"recall\" which measure how likely an attacker is to be able to pinpoint the originator of a tx",
      "action": false,
      "timestamp": "2021-02-23T21:20:34+00:00"
    },
    {
      "id": "7cd2dba6aa594016bf75d3da78d6a6be",
      "sender": "jnewbery",
      "payload": "why is relaying to one outbound peer better than relaying to 2, or 8?",
      "action": false,
      "timestamp": "2021-02-23T21:21:18+00:00"
    },
    {
      "id": "ac5dbc0c172e43298c3465dd0f1a181a",
      "sender": "sipa",
      "payload": "glozow: that'd need to be adjusted then; iirc dandelion has a delay of just a few seconds",
      "action": false,
      "timestamp": "2021-02-23T21:21:30+00:00"
    },
    {
      "id": "89605556745b499eb600d2a5b990a9d7",
      "sender": "gleb",
      "payload": "jnewbery: other 7 of your conns + inbounds have worse idea that it originated from you",
      "action": false,
      "timestamp": "2021-02-23T21:22:05+00:00"
    },
    {
      "id": "b8d1b17f2d42476dbcf2ae66cb6f8d01",
      "sender": "gleb",
      "payload": "Rather than when you relay to all of them",
      "action": false,
      "timestamp": "2021-02-23T21:22:15+00:00"
    },
    {
      "id": "5ef182aa567847d6897ca30d97996ff6",
      "sender": "amiti",
      "payload": "I think an implementation of dandelion lite would want to add logic for checking if the txn successfully relayed / a quicker rebroadcast if not.",
      "action": false,
      "timestamp": "2021-02-23T21:22:28+00:00"
    },
    {
      "id": "4715e6792b4c4774b8cc46e8c1261893",
      "sender": "aj",
      "payload": "jnewbery: stemming to one outbound peer is what's modelled in the sim and paper; i don't think it's clear if there's a best value to use",
      "action": false,
      "timestamp": "2021-02-23T21:22:35+00:00"
    },
    {
      "id": "d3f818198bbc413c9e9c964a81791a72",
      "sender": "glozow",
      "payload": "sipa: sorry i meant, i think currently rebroadcast is on 12-hour-ish timer, but dandelion++ spec has a several second timer. trying to wrap my head around what needs to be implemented for dandelion lite, perhaps would need to have a timer for rebroadcast-just-incase",
      "action": false,
      "timestamp": "2021-02-23T21:22:42+00:00"
    },
    {
      "id": "83a67dac01b44ce19b9f97def05bba44",
      "sender": "ariard",
      "payload": "amiti: quite easy by probing your own mempool to see if you get an announcement back?",
      "action": false,
      "timestamp": "2021-02-23T21:23:07+00:00"
    },
    {
      "id": "bd8ed20f05a04cfca4a6ebe8a2c12c74",
      "sender": "amiti",
      "payload": "yup, exactly",
      "action": false,
      "timestamp": "2021-02-23T21:23:15+00:00"
    },
    {
      "id": "f37e806de4b14642abc1298b32dd42fc",
      "sender": "gleb",
      "payload": "jnewbery: oh sorry, I guess you ask about the exact choice, yeah, 2 could be better than 1..",
      "action": false,
      "timestamp": "2021-02-23T21:23:17+00:00"
    },
    {
      "id": "29e584b270924e8a8b478c03ae1aaa40",
      "sender": "amiti",
      "payload": "that just doesn't exist yet",
      "action": false,
      "timestamp": "2021-02-23T21:23:25+00:00"
    },
    {
      "id": "9bd678c412e24c70bf188db8338fdb87",
      "sender": "gleb",
      "payload": "glozow: I was also wondering if rebroadcast here should happen in 10 seconds",
      "action": false,
      "timestamp": "2021-02-23T21:23:56+00:00"
    },
    {
      "id": "968239c738444d6b96ef43ffcef12617",
      "sender": "sipa",
      "payload": "glozow: this would be a separate rebroadcast mechanism i believe",
      "action": false,
      "timestamp": "2021-02-23T21:24:07+00:00"
    },
    {
      "id": "86507bfb084f431286aea56d7ffad62a",
      "sender": "gleb",
      "payload": "I don't see why we should wait 12 hours?",
      "action": false,
      "timestamp": "2021-02-23T21:24:09+00:00"
    },
    {
      "id": "c8f5d40d190e4c06be655dc443032226",
      "sender": "amiti",
      "payload": "aj: is it easy to run the simulation with 2 outbounds and compare?",
      "action": false,
      "timestamp": "2021-02-23T21:24:24+00:00"
    },
    {
      "id": "16135d17880748eeb29b3a9add80efc4",
      "sender": "sipa",
      "payload": "because the dandelion lite \"stem\" relay can't insert into the mempool",
      "action": false,
      "timestamp": "2021-02-23T21:24:26+00:00"
    },
    {
      "id": "25bf8821218441bbae20489b6907b1c8",
      "sender": "glozow",
      "payload": "gleb: I mean the current rebroadcast behavior on master, without adding any dandelion stuff",
      "action": false,
      "timestamp": "2021-02-23T21:24:51+00:00"
    },
    {
      "id": "e79f580f14534992a14f419a6c4ba315",
      "sender": "ariard",
      "payload": "i think the rebroadcast should be considered in function of opening a one-shot for the connection",
      "action": false,
      "timestamp": "2021-02-23T21:25:10+00:00"
    },
    {
      "id": "7f3c81754cbf4879bac8da279f15d22b",
      "sender": "aj",
      "payload": "amiti: the sim chooses an anonymity graph with 4 outbounds for each node, and selects one of those outbounds for relay. changing 4 to 2 or 8 is easy, but selecting more than one outbound requires code changes...",
      "action": false,
      "timestamp": "2021-02-23T21:25:29+00:00"
    },
    {
      "id": "fa80ffc54b5148d5b0483eadc70d0cc3",
      "sender": "gleb",
      "payload": "ariard: one shot wouldn't work at all, unless nodes don't do that for foreign transactions?",
      "action": false,
      "timestamp": "2021-02-23T21:25:39+00:00"
    },
    {
      "id": "c71bcec222e142a7b86d2be8fd5f1e3f",
      "sender": "gleb",
      "payload": "because it's obvious one-shot is a tx source",
      "action": false,
      "timestamp": "2021-02-23T21:25:48+00:00"
    },
    {
      "id": "f671d8282bcd4983b8492b31b92b1f65",
      "sender": "gleb",
      "payload": "unless tor",
      "action": false,
      "timestamp": "2021-02-23T21:25:51+00:00"
    },
    {
      "id": "51692e73ef674380a5f71c5b57819250",
      "sender": "aj",
      "payload": "gleb: yeah, tor or i2p for oneshot",
      "action": false,
      "timestamp": "2021-02-23T21:26:17+00:00"
    },
    {
      "id": "c944f2360de24a688b6fe2824fa03a13",
      "sender": "amiti",
      "payload": "aj: gotcha",
      "action": false,
      "timestamp": "2021-02-23T21:26:45+00:00"
    },
    {
      "id": "d2d4a3e8e3f5423ab988b5cdd0d1d722",
      "sender": "gleb",
      "payload": "aj: sorry, is this relevant? Are we talking about oneshot over tor as a way to do d lite?",
      "action": false,
      "timestamp": "2021-02-23T21:27:00+00:00"
    },
    {
      "id": "0611fdeb957e449bb58d8499f5c3f30c",
      "sender": "ariard",
      "payload": "gleb: don't we already assume bob has an easier job to guess alice is the source if you mass-connect?",
      "action": false,
      "timestamp": "2021-02-23T21:27:22+00:00"
    },
    {
      "id": "b1987d7a2b8b427cb0c4e3cd254f3d35",
      "sender": "gleb",
      "payload": "ariard: Sure, but lite would help against that even without one-shot tor",
      "action": false,
      "timestamp": "2021-02-23T21:27:53+00:00"
    },
    {
      "id": "2bf745d1851e4ca0a9b0aae268af7301",
      "sender": "aj",
      "payload": "gleb: i thnk the idea is dandelion-lite should work even if your node doesn't do tor/i2p at least. (people talk about lots of things :)",
      "action": false,
      "timestamp": "2021-02-23T21:28:13+00:00"
    },
    {
      "id": "689ed4a406724ca387384bd752d6c8b9",
      "sender": "gleb",
      "payload": "aj: without oneshot then. oneshot without tor doesn't work.",
      "action": false,
      "timestamp": "2021-02-23T21:28:37+00:00"
    },
    {
      "id": "6ae24e7b85264a2daabce46e089b965d",
      "sender": "aj",
      "payload": "gleb: yep",
      "action": false,
      "timestamp": "2021-02-23T21:28:43+00:00"
    },
    {
      "id": "5558c598c4874f669c884361615de13c",
      "sender": "jnewbery",
      "payload": "aj: do you need help with anything? Would you like people to review a proposal or something else?",
      "action": false,
      "timestamp": "2021-02-23T21:29:26+00:00"
    },
    {
      "id": "59efebda70b14c66b17682076da4ca4f",
      "sender": "aj",
      "payload": "jnewbery: no, just wanted to update people on what's going on. i don't have a particular plan on what's next at this point",
      "action": false,
      "timestamp": "2021-02-23T21:30:05+00:00"
    },
    {
      "id": "2f51e3c3ad4a4b238bbfb28e9576fd4b",
      "sender": "ariard",
      "payload": "gleb: could you do one shot without tor for a low % of foreign transactions ?",
      "action": false,
      "timestamp": "2021-02-23T21:30:15+00:00"
    },
    {
      "id": "5551ed2302ec48e1b4ab987ad0b0c474",
      "sender": "amiti",
      "payload": "aj: so do I have this right that your current impression that we could implement lite without any protocol changes, code not being too invasive, and get ~40-50% of benefits? what are next steps?",
      "action": false,
      "timestamp": "2021-02-23T21:30:18+00:00"
    },
    {
      "id": "2b81b0098e92450583884537166fe798",
      "sender": "amiti",
      "payload": "oh, you just answered part of that",
      "action": false,
      "timestamp": "2021-02-23T21:30:34+00:00"
    },
    {
      "id": "d0e642f927c04b7f84a73e45e04e355b",
      "sender": "gleb",
      "payload": "I'd be willing to help. And as a separate thing, aj, we should see how to marry it with erlay in practice, once you reach that point.",
      "action": false,
      "timestamp": "2021-02-23T21:30:35+00:00"
    },
    {
      "id": "8cf70b4ca57c4b54b9fadc4ab2036f0d",
      "sender": "gleb",
      "payload": "ariard: that's something was never discussed. I see that as a measure *on top*, but I'd not rely on this solo.",
      "action": false,
      "timestamp": "2021-02-23T21:31:27+00:00"
    },
    {
      "id": "636c667b115944749590da7e38453203",
      "sender": "aj",
      "payload": "amiti: yes, i think that's right. not sure if more sims are worth doing first; otherwise figuring out how to be able to stem to some peers without contaminating how you respond to the peers you don't stem too would probably be the first bit of implementation",
      "action": false,
      "timestamp": "2021-02-23T21:31:42+00:00"
    },
    {
      "id": "52999c89dfc840efb24738a7cd858715",
      "sender": "jnewbery",
      "payload": "aj: hopefully shouldn't be too difficult to update FindTxForGetData. We've done something similar before",
      "action": false,
      "timestamp": "2021-02-23T21:32:56+00:00"
    },
    {
      "id": "92092a36ca694851a99c50b731eaa758",
      "sender": "aj",
      "payload": "jnewbery: i think working out the spec would be harder than implementing it...",
      "action": false,
      "timestamp": "2021-02-23T21:33:25+00:00"
    },
    {
      "id": "7b3b5cc58cb945e0ab70866efb664998",
      "sender": "sipa",
      "payload": "haha",
      "action": false,
      "timestamp": "2021-02-23T21:33:41+00:00"
    },
    {
      "id": "6c95b743a26941b18b58243dac90758f",
      "sender": "gleb",
      "payload": "ariard: that's a cool idea to add noise against any kind of spying. But i think the problem with oneshot-no-tor is that it's success is a function of how ready we are to dos our own network :)",
      "action": false,
      "timestamp": "2021-02-23T21:33:42+00:00"
    },
    {
      "id": "e175a9470c454adf97c22807851cf33d",
      "sender": "jnewbery",
      "payload": "yup",
      "action": false,
      "timestamp": "2021-02-23T21:33:43+00:00"
    },
    {
      "id": "422ade1fa19144b0abacd2dd5881781d",
      "sender": "amiti",
      "payload": "jnewbery: something similar? what are you thinking of?",
      "action": false,
      "timestamp": "2021-02-23T21:33:51+00:00"
    },
    {
      "id": "ae376db4e98e42c4b36f328bbd46beb5",
      "sender": "jnewbery",
      "payload": "m_recently_announced_invs",
      "action": false,
      "timestamp": "2021-02-23T21:35:30+00:00"
    },
    {
      "id": "1f9df5f2e7a24df593147ebfa1b6321c",
      "sender": "jnewbery",
      "payload": "maybe it just works already",
      "action": false,
      "timestamp": "2021-02-23T21:35:52+00:00"
    },
    {
      "id": "4e88203f12c84f24970ec47bcbf3e53c",
      "sender": "ariard",
      "payload": "gleb: yeah I know...kinda some trade-offs we're hitting with new rebroadcast, more noise, more bandwidth",
      "action": false,
      "timestamp": "2021-02-23T21:35:58+00:00"
    },
    {
      "id": "0ffb5131f1e646359c160571b940fc44",
      "sender": "jnewbery",
      "payload": "move on to the next topic?",
      "action": false,
      "timestamp": "2021-02-23T21:37:44+00:00"
    },
    {
      "id": "efd828ab9e9343b3991e1910c63cda63",
      "sender": "aj",
      "payload": "sounds good",
      "action": false,
      "timestamp": "2021-02-23T21:37:48+00:00"
    },
    {
      "id": "e912cff0f88d421eaf3b96c694b196fc",
      "sender": "jnewbery",
      "payload": "#topic Orphan reprocessing (jnewbery)",
      "action": false,
      "timestamp": "2021-02-23T21:38:04+00:00"
    },
    {
      "id": "00439ab29851495aa5b0f90e0534d02f",
      "sender": "core-meetingbot",
      "payload": "topic: Orphan reprocessing (jnewbery)",
      "action": false,
      "timestamp": "2021-02-23T21:38:04+00:00"
    },
    {
      "id": "246a6ac763b148f4b231af355f1bafc9",
      "sender": "jnewbery",
      "payload": "This is something that recently came up again in #21224",
      "action": false,
      "timestamp": "2021-02-23T21:38:20+00:00"
    },
    {
      "id": "2aefff730c6041ac8e44ffe4aab322aa",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/21224 | [p2p] Halt processing of unrequested transactions by ariard \u00c3\u0082\u00c2\u00b7 Pull Request #21224 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2021-02-23T21:38:22+00:00"
    },
    {
      "id": "a02b7d3f718140ddb3fc26f18a798e1c",
      "sender": "jnewbery",
      "payload": "we currently reprocess orphan transactions in the context of the node that provided the parent",
      "action": false,
      "timestamp": "2021-02-23T21:38:38+00:00"
    },
    {
      "id": "6f3913a6c9954862853ec3076215e3d7",
      "sender": "jnewbery",
      "payload": "ie node A sends us an orphan transaction, node B sends us its parent, we later process the orphan transaction next time we call ProcessMessages() for node B",
      "action": false,
      "timestamp": "2021-02-23T21:39:09+00:00"
    },
    {
      "id": "1f4f5ddeb4e54ffab202298e12a797db",
      "sender": "jnewbery",
      "payload": "it seems a bit strange that we do this, and aj was proposing we change that as part of, or after, orphan handling is split into txorphange",
      "action": false,
      "timestamp": "2021-02-23T21:39:45+00:00"
    },
    {
      "id": "8cd13d04265d4dc39a136e994603a330",
      "sender": "ariard",
      "payload": "idea would be to assign orphan processing to A only?",
      "action": false,
      "timestamp": "2021-02-23T21:40:25+00:00"
    },
    {
      "id": "2f9a76092dec4c3984434c7bf9fd6ea1",
      "sender": "sipa",
      "payload": "so that means we may punish the peer that provided parent for an invalid orphan received from someone else?",
      "action": false,
      "timestamp": "2021-02-23T21:40:52+00:00"
    },
    {
      "id": "fc6926d122314e23a2d62c872529d42f",
      "sender": "jnewbery",
      "payload": "that seems like a reasonable change to me. We should either process orphan reprocessing in the context of node A, or in some global context (i.e. call PeerManager.DoGenericWork())",
      "action": false,
      "timestamp": "2021-02-23T21:41:06+00:00"
    },
    {
      "id": "fb1e307db1e24406b68b248f15d6600e",
      "sender": "aj",
      "payload": "today, we still lookup the original peer when figuring out who to punish",
      "action": false,
      "timestamp": "2021-02-23T21:41:16+00:00"
    },
    {
      "id": "677dd5b14c8243d79b13429fa71b6f3a",
      "sender": "jnewbery",
      "payload": "sipa: no, we already punish the peer who provided the orphan if it's consensus invalid",
      "action": false,
      "timestamp": "2021-02-23T21:41:29+00:00"
    },
    {
      "id": "fe30bdc1c29e40a8b0db5a4da6a786ed",
      "sender": "sipa",
      "payload": "then what do you mean by \"in the context of\" ?",
      "action": false,
      "timestamp": "2021-02-23T21:41:53+00:00"
    },
    {
      "id": "1272c7591e9b499e9d7caa43160c7dc9",
      "sender": "ariard",
      "payload": "hmmm I would rather avoid global context where you can trace back and punish dosy peers",
      "action": false,
      "timestamp": "2021-02-23T21:41:58+00:00"
    },
    {
      "id": "009c1189300f4f02878351e76c1a69ac",
      "sender": "jnewbery",
      "payload": "see OrphanTx.frompeer (https://github.com/bitcoin/bitcoin/blob/78effb37f35ff09733e79497bd6b06d355272d79/src/net_processing.cpp#L151-L154)",
      "action": false,
      "timestamp": "2021-02-23T21:42:06+00:00"
    },
    {
      "id": "f093a1c9c4b64174806a2242202aaec0",
      "sender": "jnewbery",
      "payload": "sipa: we process the transaction the next time we call ProcessMessages(node B)",
      "action": false,
      "timestamp": "2021-02-23T21:42:24+00:00"
    },
    {
      "id": "36190e80c26c4f55b092af4e217a2115",
      "sender": "ariard",
      "payload": "*can't",
      "action": false,
      "timestamp": "2021-02-23T21:42:29+00:00"
    },
    {
      "id": "1eeb2530be614e508705cb7f59fb6797",
      "sender": "aj",
      "payload": "sipa: we process the tx when we call ProcessMessages for peer B at present (because the child tx goes into the orphan work set of whoever provided the parent)",
      "action": false,
      "timestamp": "2021-02-23T21:42:33+00:00"
    },
    {
      "id": "d9acc4c2885a4490b57f9fd062dc6db7",
      "sender": "amiti",
      "payload": "I think \"in the context of\" refers to which node we allocate ProcessMessage time to",
      "action": false,
      "timestamp": "2021-02-23T21:42:37+00:00"
    },
    {
      "id": "3178dd27cb4f4120bf0a41084805f71c",
      "sender": "sipa",
      "payload": "ah, i see",
      "action": false,
      "timestamp": "2021-02-23T21:42:48+00:00"
    },
    {
      "id": "9bd26cbb995b4a1888f3e0ce685d383e",
      "sender": "aj",
      "payload": "the idea would be to move the orphan work sets out of the Peer mapping and into a new map in the txorphanage, which can just be sorted by the frompeer, and an entry selected from it during frompeer's ProcessMessages",
      "action": false,
      "timestamp": "2021-02-23T21:44:24+00:00"
    },
    {
      "id": "8d9e1ff20ad146b29d916c9ec5f5ca37",
      "sender": "jnewbery",
      "payload": "sipa: last time this kind of change was proposed you had concerns about the fact it wouldn't be observationally equivalent: http://www.erisian.com.au/bitcoin-core-dev/log-2020-07-02.html#l-325",
      "action": false,
      "timestamp": "2021-02-23T21:44:37+00:00"
    },
    {
      "id": "5d81073af6854e0aa8a86fbb8e589cda",
      "sender": "aj",
      "payload": "moving the orphan work sets out of Peer also allows g_cs_orphans to be moved into txorphanage and stop being a global",
      "action": false,
      "timestamp": "2021-02-23T21:44:53+00:00"
    },
    {
      "id": "0c328c182db54c37ba5268cd7a1dbe24",
      "sender": "jnewbery",
      "payload": "aj: I like this change a lot :)",
      "action": false,
      "timestamp": "2021-02-23T21:45:10+00:00"
    },
    {
      "id": "1dfc55bcf9654a6f9990857cb752e236",
      "sender": "jnewbery",
      "payload": "my last proposal was to move orphan reprocessing to a global work queue: ttps://github.com/bitcoin/bitcoin/pull/19364 , but moving it to the work queue of the peer who sent it also seems fine",
      "action": false,
      "timestamp": "2021-02-23T21:46:53+00:00"
    },
    {
      "id": "6a780c2f230441d58a844a301f0addb0",
      "sender": "amiti",
      "payload": "is the core reasoning to prevent the sorta attack mentioned in this comment: https://github.com/bitcoin/bitcoin/pull/21224#issuecomment-781741925, where a peer who sends a valid txn that activates lots of invalid orphans would take up our CPU time instead of the one who will eventually be punished?",
      "action": false,
      "timestamp": "2021-02-23T21:47:05+00:00"
    },
    {
      "id": "f39eb6ddf2704a7c8f7caa12c081bf31",
      "sender": "ariard",
      "payload": "amiti: I'm not sure the peer who sends a valid txn can be actually the culprit for it",
      "action": false,
      "timestamp": "2021-02-23T21:47:47+00:00"
    },
    {
      "id": "d124d60753c344529d897f3672ddc1bb",
      "sender": "amiti",
      "payload": "ariard: what?",
      "action": false,
      "timestamp": "2021-02-23T21:48:12+00:00"
    },
    {
      "id": "de1268f27d024b3799aa9110d1798cba",
      "sender": "ariard",
      "payload": "a malicious peer, if knowledgeable of tx-relay link between two peers might provoke mempool conflicts to trigger this scenario...",
      "action": false,
      "timestamp": "2021-02-23T21:48:13+00:00"
    },
    {
      "id": "477a19dfb81845959b96391efb76dfed",
      "sender": "ariard",
      "payload": "le'ts say you have alice connected to bob, and mallory to both of them, you send tx A to alice, tx A' to bob",
      "action": false,
      "timestamp": "2021-02-23T21:48:47+00:00"
    },
    {
      "id": "034e2000d56e4d5c9698ad825da72c85",
      "sender": "sipa",
      "payload": "jnewbery: i haven't paid attention to the latest discussion; i just hope the motivation is more than \"this results in cleaner code for us\" if changes observable behavior",
      "action": false,
      "timestamp": "2021-02-23T21:48:58+00:00"
    },
    {
      "id": "ef9f7bb0660444fca018e79012973dfe",
      "sender": "ariard",
      "payload": "you send a set of childrens from tx A, will be relayed to bob and stored as orphan",
      "action": false,
      "timestamp": "2021-02-23T21:49:20+00:00"
    },
    {
      "id": "cc1f39a6431d463faa5fe1c63ebf7a76",
      "sender": "ariard",
      "payload": "receiving orphans on bob side, should trigger him to fetch again tx A and thus do the work on alice account",
      "action": false,
      "timestamp": "2021-02-23T21:50:54+00:00"
    },
    {
      "id": "e5d2b88b5a6d4a0cbde6f5a3518649b7",
      "sender": "aj",
      "payload": "(i think it's \"add latency to Alice's transactions\" more than \"use up Alice's CPU time\")",
      "action": false,
      "timestamp": "2021-02-23T21:51:54+00:00"
    },
    {
      "id": "cedc31c7608e483fab6f1665f4d41343",
      "sender": "amiti",
      "payload": "aj: ok, yeah, that makes sense",
      "action": false,
      "timestamp": "2021-02-23T21:52:13+00:00"
    },
    {
      "id": "80820d0b12b2465cade5db4dc8d05d5a",
      "sender": "amiti",
      "payload": "ariard: I think you're saying that an honest peer can send a parent to invalid orphans received from a different peer?",
      "action": false,
      "timestamp": "2021-02-23T21:52:42+00:00"
    },
    {
      "id": "cde839e0a435452b93f69bbeeab2170a",
      "sender": "ariard",
      "payload": "aj: do we actually have this notion of peer CPU time? I don't think so...",
      "action": false,
      "timestamp": "2021-02-23T21:53:02+00:00"
    },
    {
      "id": "6cc179ee8e5d471283d8930c95f7ae1b",
      "sender": "jnewbery",
      "payload": "ariard: not yet. That maybe leads nicely into the next topic",
      "action": false,
      "timestamp": "2021-02-23T21:53:39+00:00"
    },
    {
      "id": "a52b2ca1d1c64ed89409c04d41508837",
      "sender": "jnewbery",
      "payload": "#topic Peer rate-limiting (jnewbery)",
      "action": false,
      "timestamp": "2021-02-23T21:53:59+00:00"
    },
    {
      "id": "02ce42e1c14b4b14af972ccc81e9ddaf",
      "sender": "core-meetingbot",
      "payload": "topic: Peer rate-limiting (jnewbery)",
      "action": false,
      "timestamp": "2021-02-23T21:54:00+00:00"
    },
    {
      "id": "f3e3e604059346e5ac79128917f279be",
      "sender": "ariard",
      "payload": "amiti: orphans can be valid there too, and it can work as received from a different peer but not exactly the scenario I was describing",
      "action": false,
      "timestamp": "2021-02-23T21:54:15+00:00"
    },
    {
      "id": "41dbbc6b8b1d44c4bc736ec35a95c69d",
      "sender": "jnewbery",
      "payload": "Again, this came up in the discussion of #21224",
      "action": false,
      "timestamp": "2021-02-23T21:54:18+00:00"
    },
    {
      "id": "629a9c5269a04f9d8655445c01d97cb3",
      "sender": "aj",
      "payload": "ariard: Mallort constructs tx A, and invalid children of A: B1, B2, B3, B4, ... Mallory relays B1..Bn to Bob. Mallory relays A to Alice. Once Bob receives A from Alice, he'll have high latency for the next tx from Alice",
      "action": false,
      "timestamp": "2021-02-23T21:54:19+00:00"
    },
    {
      "id": "cf1e50857a384b628f35121119378f94",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/21224 | [p2p] Halt processing of unrequested transactions by ariard \u00c3\u0082\u00c2\u00b7 Pull Request #21224 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2021-02-23T21:54:19+00:00"
    },
    {
      "id": "fdb50e77c4114204980ae0a7ea8300ad",
      "sender": "ariard",
      "payload": "amiti: the scenario described by aj is the one you were thinking of, mine orphans are announced to alice (note they're considered as orphan but valid txn by alice)",
      "action": false,
      "timestamp": "2021-02-23T21:55:23+00:00"
    },
    {
      "id": "496eac336c3a44eebe2435c86622359a",
      "sender": "ariard",
      "payload": "AFAICT",
      "action": false,
      "timestamp": "2021-02-23T21:55:29+00:00"
    },
    {
      "id": "4626ebf2070c48a4b37bc39f8a44077d",
      "sender": "jnewbery",
      "payload": "aj: I agree. It makes perfect sense that we don't slow down processing for Alice because of transactions that Bob relayed",
      "action": false,
      "timestamp": "2021-02-23T21:56:01+00:00"
    },
    {
      "id": "8c906de934a24cd0bc2150acaf067e23",
      "sender": "ariard",
      "payload": "*are not considred as orphan (damn english)",
      "action": false,
      "timestamp": "2021-02-23T21:56:12+00:00"
    },
    {
      "id": "bc843c90211e4f4287db5f7fe05a51e6",
      "sender": "jnewbery",
      "payload": "*that Mallory relayed",
      "action": false,
      "timestamp": "2021-02-23T21:56:18+00:00"
    },
    {
      "id": "4c72de28dabe4a568acbb5918dd9f0e7",
      "sender": "aj",
      "payload": "ariard: bob and alice will relay A and A' to each other, reject them as double spends, and then Alice will reject the children rather than treat them as orphans because they have a rejected parent, i think?",
      "action": false,
      "timestamp": "2021-02-23T21:56:22+00:00"
    },
    {
      "id": "6609cae68c7744cba83f601d206e47b3",
      "sender": "ariard",
      "payload": "aj: at first sight but you can play with rbf and add a grandparent to A and A' to make it work",
      "action": false,
      "timestamp": "2021-02-23T21:57:01+00:00"
    },
    {
      "id": "502542a4ef964b83b7c6f423f5caa9f7",
      "sender": "amiti",
      "payload": "yeah, the scenario aj described is my understanding of the reasoning behind why we would change which peer context we process a parent in.",
      "action": false,
      "timestamp": "2021-02-23T21:58:02+00:00"
    },
    {
      "id": "6582be2457224a88a9c87aa0ee4b6fca",
      "sender": "ariard",
      "payload": "aj: or if A' has been announced through wtxid-relay are we going to add to rejection filter its txid? orphan parent are fetched through txid",
      "action": false,
      "timestamp": "2021-02-23T21:58:46+00:00"
    },
    {
      "id": "5d8d41c7bc6449c89fb218f49c288ec6",
      "sender": "jnewbery",
      "payload": "ok, that's time!",
      "action": false,
      "timestamp": "2021-02-23T22:00:55+00:00"
    },
    {
      "id": "0b119a8078834f41bcb90d57a9f3a0cb",
      "sender": "ariard",
      "payload": "aj: I should craft a functional test with the scenario, easier way to debate about it :)",
      "action": false,
      "timestamp": "2021-02-23T22:00:58+00:00"
    },
    {
      "id": "75af04768f274544a6cba06ca15d0d7e",
      "sender": "jnewbery",
      "payload": "thanks everyone!",
      "action": false,
      "timestamp": "2021-02-23T22:01:03+00:00"
    },
    {
      "id": "adbaae4208724702894ce0c06f056361",
      "sender": "jnewbery",
      "payload": "#endmeeting",
      "action": false,
      "timestamp": "2021-02-23T22:01:07+00:00"
    }
  ],
  "events": [
    {
      "event_type": "START_MEETING",
      "message": {
        "id": "f41a439b7009453c939bf150f8319bbf",
        "sender": "jnewbery",
        "payload": "#startmeeting",
        "action": false,
        "timestamp": "2021-02-23T21:00:18+00:00"
      },
      "operand": null,
      "id": "f41a439b7009453c939bf150f8319bbf",
      "timestamp": "2021-02-23T21:00:18+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "b0489630083a4a279af04fb88459214c",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/23 | CORS support by gavinandresen \u00c3\u0082\u00c2\u00b7 Pull Request #23 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2021-02-23T21:01:39+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/23",
      "id": "b0489630083a4a279af04fb88459214c",
      "timestamp": "2021-02-23T21:01:39+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "975feab94e024426ba6627686e7aa822",
        "sender": "jnewbery",
        "payload": "#topic erlay update (gleb)",
        "action": false,
        "timestamp": "2021-02-23T21:02:14+00:00"
      },
      "operand": "erlay update (gleb)",
      "id": "975feab94e024426ba6627686e7aa822",
      "timestamp": "2021-02-23T21:02:14+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "406bf09eb40447f4835af951c41bc69f",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/18261 | Erlay: bandwidth-efficient transaction relay protocol by naumenkogs \u00c3\u0082\u00c2\u00b7 Pull Request #18261 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2021-02-23T21:02:38+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/18261",
      "id": "406bf09eb40447f4835af951c41bc69f",
      "timestamp": "2021-02-23T21:02:38+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "4b741fea242e4399bd6529dffb341513",
        "sender": "jnewbery",
        "payload": "#topic dandelion update (ajtowns)",
        "action": false,
        "timestamp": "2021-02-23T21:11:59+00:00"
      },
      "operand": "dandelion update (ajtowns)",
      "id": "4b741fea242e4399bd6529dffb341513",
      "timestamp": "2021-02-23T21:11:59+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "eccdc28b600d47018096625611b961c6",
        "sender": "aj",
        "payload": "https://twitter.com/giuliacfanti/status/1362963585471815680 is the twitter thread, and has some graphs",
        "action": false,
        "timestamp": "2021-02-23T21:16:02+00:00"
      },
      "operand": "https://twitter.com/giuliacfanti/status/1362963585471815680",
      "id": "eccdc28b600d47018096625611b961c6",
      "timestamp": "2021-02-23T21:16:02+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "e912cff0f88d421eaf3b96c694b196fc",
        "sender": "jnewbery",
        "payload": "#topic Orphan reprocessing (jnewbery)",
        "action": false,
        "timestamp": "2021-02-23T21:38:04+00:00"
      },
      "operand": "Orphan reprocessing (jnewbery)",
      "id": "e912cff0f88d421eaf3b96c694b196fc",
      "timestamp": "2021-02-23T21:38:04+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "2aefff730c6041ac8e44ffe4aab322aa",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/21224 | [p2p] Halt processing of unrequested transactions by ariard \u00c3\u0082\u00c2\u00b7 Pull Request #21224 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2021-02-23T21:38:22+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/21224",
      "id": "2aefff730c6041ac8e44ffe4aab322aa",
      "timestamp": "2021-02-23T21:38:22+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "a52b2ca1d1c64ed89409c04d41508837",
        "sender": "jnewbery",
        "payload": "#topic Peer rate-limiting (jnewbery)",
        "action": false,
        "timestamp": "2021-02-23T21:53:59+00:00"
      },
      "operand": "Peer rate-limiting (jnewbery)",
      "id": "a52b2ca1d1c64ed89409c04d41508837",
      "timestamp": "2021-02-23T21:53:59+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "cf1e50857a384b628f35121119378f94",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/21224 | [p2p] Halt processing of unrequested transactions by ariard \u00c3\u0082\u00c2\u00b7 Pull Request #21224 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2021-02-23T21:54:19+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/21224",
      "id": "cf1e50857a384b628f35121119378f94",
      "timestamp": "2021-02-23T21:54:19+00:00"
    },
    {
      "event_type": "END_MEETING",
      "message": {
        "id": "adbaae4208724702894ce0c06f056361",
        "sender": "jnewbery",
        "payload": "#endmeeting",
        "action": false,
        "timestamp": "2021-02-23T22:01:07+00:00"
      },
      "operand": null,
      "id": "adbaae4208724702894ce0c06f056361",
      "timestamp": "2021-02-23T22:01:07+00:00"
    }
  ],
  "aliases": {},
  "vote_in_progress": false,
  "motion_index": null
}