{
  "founder": "jonatack",
  "channel": "#bitcoin-core-pr-reviews",
  "network": "libera",
  "id": "946135f39919419cb15f6c44a6710f32",
  "name": "#bitcoin-core-pr-reviews",
  "chair": "jonatack",
  "chairs": [
    "jonatack"
  ],
  "nicks": {
    "jonatack": 104,
    "corebot": 5,
    "stringintech": 18,
    "monlovesmango": 10,
    "yuvic": 15,
    "enochazariah": 17
  },
  "start_time": "2025-05-28T17:00:19.768227+00:00",
  "end_time": "2025-05-28T17:59:47.956695+00:00",
  "active": false,
  "original_topic": "https://bitcoincore.reviews | meetings on the first Wednesday of each month at 17:00 UTC",
  "current_topic": null,
  "messages": [
    {
      "id": "ed146058bf56433daf7a78f4e77ed016",
      "sender": "jonatack",
      "payload": "#startmeeting",
      "action": false,
      "timestamp": "2025-05-28T17:00:19.767834+00:00"
    },
    {
      "id": "206800308ab54df2942723eb131afa88",
      "sender": "corebot",
      "payload": "jonatack: Meeting started at 2025-05-28T17:00+0000",
      "action": false,
      "timestamp": "2025-05-28T17:00:19.774437+00:00"
    },
    {
      "id": "fffd11988d6243a486bda0ef586f23ff",
      "sender": "corebot",
      "payload": "jonatack: Current chairs: jonatack",
      "action": false,
      "timestamp": "2025-05-28T17:00:20.777861+00:00"
    },
    {
      "id": "9da4708a34be42e185fd281376f0d106",
      "sender": "corebot",
      "payload": "jonatack: Useful commands: #action #info #idea #link #topic #motion #vote #close #endmeeting",
      "action": false,
      "timestamp": "2025-05-28T17:00:21.781715+00:00"
    },
    {
      "id": "638dae04df2247aabca2138eee051b7c",
      "sender": "corebot",
      "payload": "jonatack: See also: https://hcoop-meetbot.readthedocs.io/en/stable/",
      "action": false,
      "timestamp": "2025-05-28T17:00:22.785609+00:00"
    },
    {
      "id": "3b9bf0876bb745cf8f2a70b57879f2db",
      "sender": "corebot",
      "payload": "jonatack: Participants should now identify themselves with '#here' or with an alias like '#here FirstLast'",
      "action": false,
      "timestamp": "2025-05-28T17:00:23.789644+00:00"
    },
    {
      "id": "fdbe1aa7ea914fd58a134543046edfa7",
      "sender": "jonatack",
      "payload": "Hi and welcome to this week's review club!",
      "action": false,
      "timestamp": "2025-05-28T17:00:33.327787+00:00"
    },
    {
      "id": "e252724ee67648de8eb52b79778ee2f9",
      "sender": "stringintech",
      "payload": "Hi!",
      "action": false,
      "timestamp": "2025-05-28T17:00:40.979231+00:00"
    },
    {
      "id": "e238288f56ee48a48b9a6ee0f5ed3f15",
      "sender": "monlovesmango",
      "payload": "hello :)",
      "action": false,
      "timestamp": "2025-05-28T17:00:42.418868+00:00"
    },
    {
      "id": "011fe0fdc4e94e968042d4024517e96f",
      "sender": "yuvic",
      "payload": "hi",
      "action": false,
      "timestamp": "2025-05-28T17:00:43.923955+00:00"
    },
    {
      "id": "d09a4b286e2d4412b34f854177ba54e4",
      "sender": "jonatack",
      "payload": "Today we'll be discussing \"p2p: protect addnode peers during IBD\"",
      "action": false,
      "timestamp": "2025-05-28T17:00:52.259398+00:00"
    },
    {
      "id": "00abb283d8554470b965bc3915d6a345",
      "sender": "enochazariah",
      "payload": "hello",
      "action": false,
      "timestamp": "2025-05-28T17:00:54.746870+00:00"
    },
    {
      "id": "827619779f9444f596764333f1115a3e",
      "sender": "jonatack",
      "payload": "Review club url:",
      "action": false,
      "timestamp": "2025-05-28T17:00:57.701628+00:00"
    },
    {
      "id": "2aa02a4ad7024c3697a97d389f5b4a86",
      "sender": "jonatack",
      "payload": "https://bitcoincore.reviews/32051",
      "action": false,
      "timestamp": "2025-05-28T17:01:00.645956+00:00"
    },
    {
      "id": "ac7db8d6f3d04b309f6defcf4592c547",
      "sender": "jonatack",
      "payload": "Bitcoin Core PR url:",
      "action": false,
      "timestamp": "2025-05-28T17:01:04.012365+00:00"
    },
    {
      "id": "e08e85e1afc24130bf0583e179e2ccd4",
      "sender": "jonatack",
      "payload": "https://github.com/bitcoin/bitcoin/pull/32051",
      "action": false,
      "timestamp": "2025-05-28T17:01:06.456710+00:00"
    },
    {
      "id": "75d040406b9140b9b0a660cf1b4cac4c",
      "sender": "jonatack",
      "payload": "Anyone here for the first time? Feel free to say hi, even if you're only observing.",
      "action": false,
      "timestamp": "2025-05-28T17:01:12.663013+00:00"
    },
    {
      "id": "06c0aa28012949bf9fd62492fc43bc22",
      "sender": "jonatack",
      "payload": "This discussion is ad hoc and asynchronous, so feel free to continue conversation on previous questions when we move on, or raise any other questions or thoughts you have.",
      "action": false,
      "timestamp": "2025-05-28T17:01:43.061601+00:00"
    },
    {
      "id": "a5c0e9b1314e4990964b7a0f4d667dc3",
      "sender": "jonatack",
      "payload": "To get the convo warmed up: Anyone know who originally introduced the addnode code into Bitcoin Core?",
      "action": false,
      "timestamp": "2025-05-28T17:02:30.274277+00:00"
    },
    {
      "id": "454051adf7a442298b85d4a486823e51",
      "sender": "jonatack",
      "payload": "stringintech: monlovesmango: yuvic: enochazariah: welcome!",
      "action": false,
      "timestamp": "2025-05-28T17:03:18.371191+00:00"
    },
    {
      "id": "270383b177df4572849eff663fc05312",
      "sender": "monlovesmango",
      "payload": "no idea..",
      "action": false,
      "timestamp": "2025-05-28T17:04:09.436247+00:00"
    },
    {
      "id": "7346a8b00b10489aa5410d835ee40852",
      "sender": "yuvic",
      "payload": "maybe laanwj?",
      "action": false,
      "timestamp": "2025-05-28T17:04:30.200803+00:00"
    },
    {
      "id": "f8c9135753fe4839b6f9607be30d8559",
      "sender": "enochazariah",
      "payload": "i do not know that",
      "action": false,
      "timestamp": "2025-05-28T17:04:32.167081+00:00"
    },
    {
      "id": "98936e9bfd32480a9d1a4ae23a3ad1f5",
      "sender": "stringintech",
      "payload": "satoshi? seeing him in addnode commits in git log :))",
      "action": false,
      "timestamp": "2025-05-28T17:04:49.943023+00:00"
    },
    {
      "id": "bd39459c65c04dd4be4aaf55ff405a0e",
      "sender": "jonatack",
      "payload": ":D if my memory serves, it was gregory maxwell (\"gmax\" in the poll at https://x.com/jonatack/status/1927768398630387973)",
      "action": false,
      "timestamp": "2025-05-28T17:05:00.470182+00:00"
    },
    {
      "id": "0acd1766bb894db9bac88572d1e57061",
      "sender": "jonatack",
      "payload": "So",
      "action": false,
      "timestamp": "2025-05-28T17:05:29.208117+00:00"
    },
    {
      "id": "a75b588c417b43bda2b7661a5fbd9603",
      "sender": "jonatack",
      "payload": "an interesting observation, I have found, from out in the field in Central America,",
      "action": false,
      "timestamp": "2025-05-28T17:05:31.513813+00:00"
    },
    {
      "id": "12a00c84307649029c1c5c441e020cb3",
      "sender": "jonatack",
      "payload": "is that bitcoind in general is quite robust in dealing with a hostile environment of poor or intermittent internet connection",
      "action": false,
      "timestamp": "2025-05-28T17:05:39.155839+00:00"
    },
    {
      "id": "0fc7ec4086a842f08a17c4ce6c922467",
      "sender": "jonatack",
      "payload": "e.g. where browsing the internet might be painfully slow or no longer really viable, but your bitcoind node survives/thrives quite well",
      "action": false,
      "timestamp": "2025-05-28T17:05:51.786074+00:00"
    },
    {
      "id": "ceeddc060cc14049be173786d8c8835f",
      "sender": "jonatack",
      "payload": "in contrast",
      "action": false,
      "timestamp": "2025-05-28T17:06:10.568351+00:00"
    },
    {
      "id": "2ff0a02f795f4f1dbb41a2e831064957",
      "sender": "jonatack",
      "payload": "the stalling/timeout logic seems less tolerant and adapted, to a slow hostile environment",
      "action": false,
      "timestamp": "2025-05-28T17:06:21.647829+00:00"
    },
    {
      "id": "21ce2612a54a41329761f703207b5e95",
      "sender": "jonatack",
      "payload": "as it lacks the ability to monitor and adapt accordingly",
      "action": false,
      "timestamp": "2025-05-28T17:06:26.254418+00:00"
    },
    {
      "id": "def1dbbc0fac4b1487b6665db9a8bf4f",
      "sender": "jonatack",
      "payload": "which, as noted in the notes, mzumsande was looking at improving",
      "action": false,
      "timestamp": "2025-05-28T17:06:48.168560+00:00"
    },
    {
      "id": "e60e3ff107ac42ebbb2979475076b1d9",
      "sender": "jonatack",
      "payload": "still, I noticed the disconnections were heavily affecting some of my addnode peers that were being targeted for no fault of their own, some of which were low latency (like cjdns peers) or medium/higher latency (like tor and i2p peers)",
      "action": false,
      "timestamp": "2025-05-28T17:07:02.950808+00:00"
    },
    {
      "id": "416c597a76b64640b6bf86502e180924",
      "sender": "jonatack",
      "payload": "which motivated this pull request.",
      "action": false,
      "timestamp": "2025-05-28T17:07:04.952448+00:00"
    },
    {
      "id": "4e5299871e644f379c59210f8d1532e7",
      "sender": "jonatack",
      "payload": "Did anyone get the chance to review the notes and/or PR (y/n)?",
      "action": false,
      "timestamp": "2025-05-28T17:07:19.616682+00:00"
    },
    {
      "id": "6aae2a14e456451ca2a897d9591fb6d2",
      "sender": "stringintech",
      "payload": "y",
      "action": false,
      "timestamp": "2025-05-28T17:07:34.381099+00:00"
    },
    {
      "id": "eeafff3cafca48539aadff4711eae6c9",
      "sender": "monlovesmango",
      "payload": "yes",
      "action": false,
      "timestamp": "2025-05-28T17:07:36.272010+00:00"
    },
    {
      "id": "c534b5a00ac540ed90578a9ff548261f",
      "sender": "yuvic",
      "payload": "y",
      "action": false,
      "timestamp": "2025-05-28T17:07:36.679709+00:00"
    },
    {
      "id": "03ca6e0754084b7aa1e28cf88e5e96ff",
      "sender": "enochazariah",
      "payload": "yes",
      "action": false,
      "timestamp": "2025-05-28T17:07:38.887294+00:00"
    },
    {
      "id": "2f34a76d27e6466bb08e0426bfdcbdb0",
      "sender": "jonatack",
      "payload": "excellent",
      "action": false,
      "timestamp": "2025-05-28T17:07:47.296308+00:00"
    },
    {
      "id": "2a1c014628a64567bb129661c0f49165",
      "sender": "jonatack",
      "payload": "I'll add some bonus questions about the code, but let's begin with the more general ones",
      "action": false,
      "timestamp": "2025-05-28T17:08:20.598887+00:00"
    },
    {
      "id": "8660f2fa02ec4a1cb6317e84bf51c646",
      "sender": "jonatack",
      "payload": "1. What is an addnode peer? How can you specify them to your node?",
      "action": false,
      "timestamp": "2025-05-28T17:08:33.304015+00:00"
    },
    {
      "id": "d9b7574a76ae44589c0b990123907609",
      "sender": "jonatack",
      "payload": "(this is a practical question for anyone who runs a node)",
      "action": false,
      "timestamp": "2025-05-28T17:09:27.638434+00:00"
    },
    {
      "id": "3f98e736e3804c6db942fdb197aeb1ea",
      "sender": "yuvic",
      "payload": "peer which we manually add or connect, using addnode rpc or -addnode/-connect config.",
      "action": false,
      "timestamp": "2025-05-28T17:09:29.940026+00:00"
    },
    {
      "id": "9af3f16beef9484ab9d2691f77f846ce",
      "sender": "jonatack",
      "payload": "yes! and why would you want to do that, as a node runner",
      "action": false,
      "timestamp": "2025-05-28T17:10:19.968264+00:00"
    },
    {
      "id": "8ac3f1dbad2d41c3b0a8a010dea1a3a9",
      "sender": "enochazariah",
      "payload": "peer that a node can connect to, it can be speified to the node by using the command line",
      "action": false,
      "timestamp": "2025-05-28T17:10:20.244324+00:00"
    },
    {
      "id": "56ca926ddf6949cc93535aa3cc5d45ae",
      "sender": "jonatack",
      "payload": "right, either via CLI/RPC addnode (onetry for a one-shot attempt, or \"add\" to add it to the addnode list)",
      "action": false,
      "timestamp": "2025-05-28T17:11:01.929155+00:00"
    },
    {
      "id": "3ad6c4901189464d8d78173c5bf936b9",
      "sender": "monlovesmango",
      "payload": "so you can connect to a peer that you know to be honest",
      "action": false,
      "timestamp": "2025-05-28T17:11:03.055972+00:00"
    },
    {
      "id": "be4171664ad4461d8defcf0e08f76ff8",
      "sender": "yuvic",
      "payload": "as I trust that peer or also to sync up faster during IBD",
      "action": false,
      "timestamp": "2025-05-28T17:11:21.630373+00:00"
    },
    {
      "id": "609e4cdb9167427aba769acfef136da9",
      "sender": "stringintech",
      "payload": "to maintain connections to nodes I trust in case for example the core peer selection fails for some reason",
      "action": false,
      "timestamp": "2025-05-28T17:11:22.625172+00:00"
    },
    {
      "id": "882e48a9464041f1969553fe0d3bea56",
      "sender": "enochazariah",
      "payload": "I think a reason why someone would want to add node to add more trust in the network, verify don't trust",
      "action": false,
      "timestamp": "2025-05-28T17:11:31.335730+00:00"
    },
    {
      "id": "66f13839c53f4361970a1561a4c671c0",
      "sender": "jonatack",
      "payload": "or in your bitcoin.conf file with addnode=<peer> ... one per line",
      "action": false,
      "timestamp": "2025-05-28T17:11:33.517298+00:00"
    },
    {
      "id": "d3cd849a46e44667b71d84ab10cc4893",
      "sender": "jonatack",
      "payload": "So: to ensure a connection to a *trusted* peer",
      "action": false,
      "timestamp": "2025-05-28T17:12:13.861819+00:00"
    },
    {
      "id": "96d3e5a6e69b4da1b63fabcbbefdc231",
      "sender": "jonatack",
      "payload": "What is a fundamental protection that a trusted peer can provide to your node?",
      "action": false,
      "timestamp": "2025-05-28T17:12:30.757433+00:00"
    },
    {
      "id": "4a11859fe92b438b8b86e84631748e3f",
      "sender": "jonatack",
      "payload": "assuming they are an honest peer becaue you know/trust them",
      "action": false,
      "timestamp": "2025-05-28T17:12:50.408955+00:00"
    },
    {
      "id": "9aa7e113cd704023809e53321e1856d1",
      "sender": "stringintech",
      "payload": "it can help prevent the node from being isolated from the rest of the network (not having the knowledge of the best chain anymore) by malicious peers",
      "action": false,
      "timestamp": "2025-05-28T17:13:23.563834+00:00"
    },
    {
      "id": "2cb9b89d566745929b075f4f8dd958c8",
      "sender": "yuvic",
      "payload": "yes to sync with the best chain",
      "action": false,
      "timestamp": "2025-05-28T17:13:48.613690+00:00"
    },
    {
      "id": "4aab87fb40a74ff7bd28b4c7bdaf0464",
      "sender": "monlovesmango",
      "payload": "would probably provide protection against a sybil attack",
      "action": false,
      "timestamp": "2025-05-28T17:13:49.847625+00:00"
    },
    {
      "id": "d3449360aad24c30ab998807ff44a395",
      "sender": "enochazariah",
      "payload": "protection from isolation",
      "action": false,
      "timestamp": "2025-05-28T17:13:56.653823+00:00"
    },
    {
      "id": "5896ea0dd55e45e09a93708765c581a2",
      "sender": "jonatack",
      "payload": "right!",
      "action": false,
      "timestamp": "2025-05-28T17:14:01.794060+00:00"
    },
    {
      "id": "8494cf3d996f4c8e9956b49a221af918",
      "sender": "jonatack",
      "payload": "https://river.com/learn/terms/e/eclipse-attack/",
      "action": false,
      "timestamp": "2025-05-28T17:14:03.793412+00:00"
    },
    {
      "id": "4f5c3823d0e4433ea2c3213a472bea80",
      "sender": "jonatack",
      "payload": "\"An eclipse attack targets particular nodes in a network by surrounding them and obscuring their view of the entire network. For example, if a Bitcoin node has eight connections to other nodes, and an attacker controls all eight of those nodes, the attacker can refuse to relay any new blocks that miners produce. Although the rest of the network continues to process new blocks, the",
      "action": false,
      "timestamp": "2025-05-28T17:14:16.001342+00:00"
    },
    {
      "id": "bee961336ef240378d2de83e256ec207",
      "sender": "jonatack",
      "payload": "victim node will be unaware that blocks are coming in.\"",
      "action": false,
      "timestamp": "2025-05-28T17:14:17.986627+00:00"
    },
    {
      "id": "7d2868dd1db54d56abcc1e8faca608c0",
      "sender": "jonatack",
      "payload": "It only takes one single honest peer connection to break out of an eclipe attack",
      "action": false,
      "timestamp": "2025-05-28T17:14:47.566918+00:00"
    },
    {
      "id": "f33bf39b180d420fa1f6f831316e6e52",
      "sender": "monlovesmango",
      "payload": "ah so there is a term for it hah",
      "action": false,
      "timestamp": "2025-05-28T17:14:51.567458+00:00"
    },
    {
      "id": "56a5e43520b941859e3a1eda4ac24f00",
      "sender": "jonatack",
      "payload": "yes",
      "action": false,
      "timestamp": "2025-05-28T17:15:12.202439+00:00"
    },
    {
      "id": "e3a788ab9a814d3795a686f7bf73e77a",
      "sender": "yuvic",
      "payload": "yes eclipse attack",
      "action": false,
      "timestamp": "2025-05-28T17:15:21.079445+00:00"
    },
    {
      "id": "90a1d04eb49c4dcbb5ee694b1283e1e0",
      "sender": "jonatack",
      "payload": "So, by adding a trusted peer, your node cannot be successfully eclipsed unless your addnode peer connections are also eclipsed",
      "action": false,
      "timestamp": "2025-05-28T17:15:43.800416+00:00"
    },
    {
      "id": "46b09102d4244d8e8400c254be5617d0",
      "sender": "stringintech",
      "payload": "then if we are choosing more than one addnode peer, they should be also geographically diverse so that for example if one region is compromised, our node can still maintain connections to rest of the network...",
      "action": false,
      "timestamp": "2025-05-28T17:17:01.798651+00:00"
    },
    {
      "id": "f257b746926a405a95aafe2d7687ad45",
      "sender": "jonatack",
      "payload": "Therefore, it's a good idea to add some trusted peers using the addnode config option or rpc/cli",
      "action": false,
      "timestamp": "2025-05-28T17:17:04.825573+00:00"
    },
    {
      "id": "49d1a79454cf49b0a6fb5f3f075dedac",
      "sender": "jonatack",
      "payload": "stringintech: sgtm",
      "action": false,
      "timestamp": "2025-05-28T17:17:22.507863+00:00"
    },
    {
      "id": "6e790273bf5443c78e7eca26c40024ab",
      "sender": "jonatack",
      "payload": "You can have up to 8 addnode peer connections simultaneously",
      "action": false,
      "timestamp": "2025-05-28T17:17:39.021733+00:00"
    },
    {
      "id": "a7cc213ea834427da808c74ed79fd441",
      "sender": "jonatack",
      "payload": "In addition to the limit of 8 autamatic full outbound conns and 2 block-relay-only ones",
      "action": false,
      "timestamp": "2025-05-28T17:18:00.970433+00:00"
    },
    {
      "id": "2f3c2f8524384bed885c314ab8d07670",
      "sender": "jonatack",
      "payload": "(along with transient connections, like feelers or extra block-relay-only conns",
      "action": false,
      "timestamp": "2025-05-28T17:18:40.656491+00:00"
    },
    {
      "id": "5ea7caf4d8f64712bd237b1bf031d042",
      "sender": "jonatack",
      "payload": "or addr_fetch ones)",
      "action": false,
      "timestamp": "2025-05-28T17:19:11.061730+00:00"
    },
    {
      "id": "84ca59cac1f04e4082cbbf7a4fd33f18",
      "sender": "jonatack",
      "payload": "see src/node/connection_types.h for details",
      "action": false,
      "timestamp": "2025-05-28T17:19:31.981540+00:00"
    },
    {
      "id": "68e58095ecca4c24a2909162ec32afa0",
      "sender": "stringintech",
      "payload": "Thanks for the details",
      "action": false,
      "timestamp": "2025-05-28T17:19:50.929652+00:00"
    },
    {
      "id": "4c3bae6b174b4541b5aed239da144209",
      "sender": "jonatack",
      "payload": "Now, onto the code",
      "action": false,
      "timestamp": "2025-05-28T17:19:57.874783+00:00"
    },
    {
      "id": "24ced825c358412c9cb084da779bf841",
      "sender": "jonatack",
      "payload": "What function contains the Bitcoin Core stalling and timeout logic?",
      "action": false,
      "timestamp": "2025-05-28T17:20:02.178034+00:00"
    },
    {
      "id": "1bfe0aaa0f714b28b6095eed7a2f0dd6",
      "sender": "stringintech",
      "payload": "PeerManagerImpl::SendMessages()",
      "action": false,
      "timestamp": "2025-05-28T17:20:33.717393+00:00"
    },
    {
      "id": "f557a59b5255457590546826ff9ef048",
      "sender": "jonatack",
      "payload": "this wasn't a question to prepare in advance, but you can search the codebase right now if you like",
      "action": false,
      "timestamp": "2025-05-28T17:20:34.649478+00:00"
    },
    {
      "id": "902c8ff33f2d46f5b04305924009ed5a",
      "sender": "enochazariah",
      "payload": "SendMessages",
      "action": false,
      "timestamp": "2025-05-28T17:20:35.067315+00:00"
    },
    {
      "id": "623a74a8ee7142f3ae6a8d5453d028aa",
      "sender": "enochazariah",
      "payload": "in PeerManagerImpl",
      "action": false,
      "timestamp": "2025-05-28T17:20:47.127342+00:00"
    },
    {
      "id": "184888d331d74ccd8f29c072f7b1db97",
      "sender": "jonatack",
      "payload": "excellent",
      "action": false,
      "timestamp": "2025-05-28T17:20:47.546774+00:00"
    },
    {
      "id": "5fccd967c58a4bc1885d663685a63c58",
      "sender": "yuvic",
      "payload": "SendMessages",
      "action": false,
      "timestamp": "2025-05-28T17:20:49.075438+00:00"
    },
    {
      "id": "d6a460797f5245129ec52f6abb60e50d",
      "sender": "jonatack",
      "payload": "From where is SendMessages() called?",
      "action": false,
      "timestamp": "2025-05-28T17:21:01.585499+00:00"
    },
    {
      "id": "b6c2dcde2daf48dc875f95c3a29e6ce3",
      "sender": "jonatack",
      "payload": "(who it its caller)",
      "action": false,
      "timestamp": "2025-05-28T17:21:06.583844+00:00"
    },
    {
      "id": "14a12abbd10c4c23ad03b6210fe8d5de",
      "sender": "stringintech",
      "payload": "connection manager",
      "action": false,
      "timestamp": "2025-05-28T17:21:26.003837+00:00"
    },
    {
      "id": "2af89b6e9a35429fb68e269c07908bce",
      "sender": "jonatack",
      "payload": "stringintech: can you elaborate?",
      "action": false,
      "timestamp": "2025-05-28T17:22:02.889813+00:00"
    },
    {
      "id": "dd1ef487fa9448a9aa89c4e3e3dacb3c",
      "sender": "jonatack",
      "payload": "it is called from a thread, currently inside src/net.cpp",
      "action": false,
      "timestamp": "2025-05-28T17:22:58.748188+00:00"
    },
    {
      "id": "2f6eaaf1a09c4dadb5ac7a06e5062d61",
      "sender": "stringintech",
      "payload": "I should go back for source for detail",
      "action": false,
      "timestamp": "2025-05-28T17:23:15.487941+00:00"
    },
    {
      "id": "511101c7cd6646cb896bfd744fc16bce",
      "sender": "stringintech",
      "payload": "but I guess we would loop over peers",
      "action": false,
      "timestamp": "2025-05-28T17:23:15.988780+00:00"
    },
    {
      "id": "b6962255438c4cfda319de8e22fe4097",
      "sender": "stringintech",
      "payload": "can call this after ProcessMessages",
      "action": false,
      "timestamp": "2025-05-28T17:23:16.488551+00:00"
    },
    {
      "id": "86d5cf3a1cf34d31ba1b2ac234df3d57",
      "sender": "enochazariah",
      "payload": "Not sure, but i think THe ThreadMessageHandler is the method that calls the SendMessages",
      "action": false,
      "timestamp": "2025-05-28T17:23:24.527525+00:00"
    },
    {
      "id": "0148290a2332495f902df7666d3d0562",
      "sender": "jonatack",
      "payload": "correct for both",
      "action": false,
      "timestamp": "2025-05-28T17:23:32.969712+00:00"
    },
    {
      "id": "18daac5c14c1467ca0e1d51de05f1df9",
      "sender": "enochazariah",
      "payload": "*SendMessage",
      "action": false,
      "timestamp": "2025-05-28T17:23:35.807442+00:00"
    },
    {
      "id": "e4c6ceaeecb74c6d9788d4c30fcb3b67",
      "sender": "jonatack",
      "payload": "void CConnman::ThreadMessageHandler()",
      "action": false,
      "timestamp": "2025-05-28T17:23:41.593399+00:00"
    },
    {
      "id": "c27d297138ce4652911587014a76470a",
      "sender": "jonatack",
      "payload": "that calls ProcessMessages() and then SendMessages() for each peer, if not flagged for disconnection",
      "action": false,
      "timestamp": "2025-05-28T17:24:46.115720+00:00"
    },
    {
      "id": "fb391bece9714a2aacbe5d39c6baa2f2",
      "sender": "jonatack",
      "payload": "Now, on to the PR",
      "action": false,
      "timestamp": "2025-05-28T17:25:01.632194+00:00"
    },
    {
      "id": "84a0a2464921411182417788b0aec818",
      "sender": "jonatack",
      "payload": "I was pleasantly surprised by pinheadz's review here https://github.com/bitcoin/bitcoin/pull/32051#pullrequestreview-2864676242",
      "action": false,
      "timestamp": "2025-05-28T17:25:53.139224+00:00"
    },
    {
      "id": "cc4699dc51ae40b099cb863231f07015",
      "sender": "jonatack",
      "payload": "\"I believe this also closes an 11-year-old issue: https://github.com/bitcoin/bitcoin/issues/5097\"",
      "action": false,
      "timestamp": "2025-05-28T17:26:16.911246+00:00"
    },
    {
      "id": "f45323e232f04dfeaa1a016141aed6f4",
      "sender": "yuvic",
      "payload": "yes that was interesting",
      "action": false,
      "timestamp": "2025-05-28T17:27:10.328172+00:00"
    },
    {
      "id": "84ddc3e5ba1c493590e7513f9fa73269",
      "sender": "jonatack",
      "payload": "and also:",
      "action": false,
      "timestamp": "2025-05-28T17:27:21.188587+00:00"
    },
    {
      "id": "a0ee1326555645a090964bc255810acc",
      "sender": "jonatack",
      "payload": "https://github.com/bitcoin/bitcoin/issues/9213",
      "action": false,
      "timestamp": "2025-05-28T17:27:23.190781+00:00"
    },
    {
      "id": "add21dbd95c345d89d05d7f604c8a266",
      "sender": "jonatack",
      "payload": "that I need to read and look into TBH",
      "action": false,
      "timestamp": "2025-05-28T17:27:35.180320+00:00"
    },
    {
      "id": "975bafb077fb498f982cd4937e877385",
      "sender": "stringintech",
      "payload": "Nice!",
      "action": false,
      "timestamp": "2025-05-28T17:27:54.131662+00:00"
    },
    {
      "id": "bbf961d8257c4737b9284e18a5d5d2ae",
      "sender": "jonatack",
      "payload": "(as well as the review comments in https://github.com/bitcoin/bitcoin/pull/25880)",
      "action": false,
      "timestamp": "2025-05-28T17:28:40.029933+00:00"
    },
    {
      "id": "7a64e093e25f46f1bf1ee0fdfc6d674c",
      "sender": "jonatack",
      "payload": "Back to this PR",
      "action": false,
      "timestamp": "2025-05-28T17:29:14.726618+00:00"
    },
    {
      "id": "871406990c6b4f4aa64f883c8d38887f",
      "sender": "jonatack",
      "payload": "The PR as it is currently, is actually not well-named",
      "action": false,
      "timestamp": "2025-05-28T17:29:33.405242+00:00"
    },
    {
      "id": "c9e078d2759f4378abee33075e57ba80",
      "sender": "jonatack",
      "payload": "because only the first commit affects the IBD issues that I observed",
      "action": false,
      "timestamp": "2025-05-28T17:29:37.954893+00:00"
    },
    {
      "id": "2f00f7eb36714f4ba8f617ede546e4a3",
      "sender": "jonatack",
      "payload": "that first commit gives addnode peers more time. apart from that, it doesn't protect them from disconnection.",
      "action": false,
      "timestamp": "2025-05-28T17:29:42.726653+00:00"
    },
    {
      "id": "342e806d8dce41c9a0624839e0ddfb17",
      "sender": "stringintech",
      "payload": "I had a question: Is the PR intentionally focusing on \u201c-addnode\u201d peers and not \u201c-connect\u201d peers?",
      "action": false,
      "timestamp": "2025-05-28T17:30:37.637821+00:00"
    },
    {
      "id": "82d265fae70a4e21bd20966e55cb16a7",
      "sender": "jonatack",
      "payload": "I'd be curious to hear if you have any thoughts or suggestions on the changes",
      "action": false,
      "timestamp": "2025-05-28T17:30:53.179624+00:00"
    },
    {
      "id": "a82e76bc5a9a49a59c88ade67ed274d1",
      "sender": "jonatack",
      "payload": "stringintech: good question. Yes, I was focusing on addnode peers.",
      "action": false,
      "timestamp": "2025-05-28T17:31:22.534690+00:00"
    },
    {
      "id": "f6052afee42743e4af90b2521cf0fa56",
      "sender": "monlovesmango",
      "payload": "have you been able to test disconnection frequency after increasing timeout allowed?",
      "action": false,
      "timestamp": "2025-05-28T17:31:44.751583+00:00"
    },
    {
      "id": "06c8f49ded2e4d4eb494571ff07e9136",
      "sender": "jonatack",
      "payload": "Making a note to verify the effect on a -connect peer.",
      "action": false,
      "timestamp": "2025-05-28T17:31:46.267523+00:00"
    },
    {
      "id": "a646ed3bfcea4f5d971c17c46177a1b2",
      "sender": "jonatack",
      "payload": "monlovesmango: yes, I saw much fewer disconnections with the ping times of my peers with my internet speed",
      "action": false,
      "timestamp": "2025-05-28T17:32:39.340123+00:00"
    },
    {
      "id": "91017e544e36481e814def6c95d7bd72",
      "sender": "jonatack",
      "payload": "from 100 or more per minute to a few an hour",
      "action": false,
      "timestamp": "2025-05-28T17:33:05.362278+00:00"
    },
    {
      "id": "a878df025d21462e81066b53ce025312",
      "sender": "monlovesmango",
      "payload": "nice",
      "action": false,
      "timestamp": "2025-05-28T17:33:14.054995+00:00"
    },
    {
      "id": "49f8f75a542b43b1bc272c011749f0bd",
      "sender": "jonatack",
      "payload": "it still took more than a month for that node to sync...",
      "action": false,
      "timestamp": "2025-05-28T17:33:40.923239+00:00"
    },
    {
      "id": "30dcd6cfa22b484981578b09d5fb1ed6",
      "sender": "yuvic",
      "payload": "I had a similar question as mzumsande's comment on the pr -> https://github.com/bitcoin/bitcoin/pull/32051/commits/3463a7f4813c3eece5ba9a260670a76e3f8d38ab#r1999313868",
      "action": false,
      "timestamp": "2025-05-28T17:34:12.536800+00:00"
    },
    {
      "id": "7842d00c6244427ba1b147bb7db87fda",
      "sender": "jonatack",
      "payload": "like 5 weeks, but all those addnode disconnections were not helping, as those peers were being re-connected right away again afterward",
      "action": false,
      "timestamp": "2025-05-28T17:34:28.915599+00:00"
    },
    {
      "id": "3dce826f5ced49a4b6262f56998445d7",
      "sender": "monlovesmango",
      "payload": "if it isn't actually protect them from disconnection then I would say I concept ACK and approach ACK. but if it is protecting from disconnection then I think there needs to be more thought into what desired IBD behavior would be",
      "action": false,
      "timestamp": "2025-05-28T17:34:42.745157+00:00"
    },
    {
      "id": "a5c557e3636b4869a664d6d1df5710d3",
      "sender": "monlovesmango",
      "payload": "jonatack: omg hahah",
      "action": false,
      "timestamp": "2025-05-28T17:34:55.186631+00:00"
    },
    {
      "id": "6738278806d841f593284bbccbcc7d52",
      "sender": "jonatack",
      "payload": "yuvic: yes, the high frequency of disconnections I was seeing during IBD were not of that logic",
      "action": false,
      "timestamp": "2025-05-28T17:36:52.799386+00:00"
    },
    {
      "id": "03b919c7b30549a0b6a08c415f5b2721",
      "sender": "jonatack",
      "payload": "those are disconnections that occur infrequently (for me) after IBD is completed",
      "action": false,
      "timestamp": "2025-05-28T17:37:21.702504+00:00"
    },
    {
      "id": "40343b729f3a4c6ea52fe4dae9dd97f2",
      "sender": "yuvic",
      "payload": "got it!",
      "action": false,
      "timestamp": "2025-05-28T17:38:05.964452+00:00"
    },
    {
      "id": "504a161cbc834e13816ab49b67ba75c6",
      "sender": "jonatack",
      "payload": "I need to consider whether to potentially drop the second (and maybe third) commit to keep it focused on IBD only, when the high number of disconnections I was seeing took place",
      "action": false,
      "timestamp": "2025-05-28T17:38:28.773301+00:00"
    },
    {
      "id": "432dd913b663414eb0b856d8803ac8a4",
      "sender": "jonatack",
      "payload": "or, alternatively, try to implement his review suggestion to clear the block requests",
      "action": false,
      "timestamp": "2025-05-28T17:39:39.799377+00:00"
    },
    {
      "id": "c3128d7c710b45048e2c8eecb3b03c03",
      "sender": "enochazariah",
      "payload": "I've got a bit of a question",
      "action": false,
      "timestamp": "2025-05-28T17:39:43.544527+00:00"
    },
    {
      "id": "fc983dcc56484f08ac5c641ef9ea30b7",
      "sender": "enochazariah",
      "payload": "does this not raise up a silent stall? i mean, if the system does not have the inhererent mechanism to re-request that block from another peer, then the IBD could effectively stall, preventing a disconnection, but introducing a silent stall",
      "action": false,
      "timestamp": "2025-05-28T17:39:44.044709+00:00"
    },
    {
      "id": "89591ec16e974931b48f4ae57788caa5",
      "sender": "jonatack",
      "payload": "enochazariah: I need to look at that (test coverage could be useful, as well, but maybe non-trivial to do, and only if it is reliable)",
      "action": false,
      "timestamp": "2025-05-28T17:41:32.240504+00:00"
    },
    {
      "id": "229cee7de212471683f846d4307e1a17",
      "sender": "enochazariah",
      "payload": "okay",
      "action": false,
      "timestamp": "2025-05-28T17:42:07.221963+00:00"
    },
    {
      "id": "6d356901c93c4ca1a9636b48832d2a4d",
      "sender": "jonatack",
      "payload": "The review comments turned up valuable history on this that I need to review.",
      "action": false,
      "timestamp": "2025-05-28T17:42:18.216342+00:00"
    },
    {
      "id": "65e2bf36f21840d98b8a2be396c48ba8",
      "sender": "jonatack",
      "payload": "I didn't necessarily expect the PR to be merged quickly as-is, but hoped to gain insight as to what would be best.",
      "action": false,
      "timestamp": "2025-05-28T17:43:18.463580+00:00"
    },
    {
      "id": "e5ea7e524d27400a9e02856f39fc2a9f",
      "sender": "jonatack",
      "payload": "A long-term goal since years that comes up now and then in developer discussions",
      "action": false,
      "timestamp": "2025-05-28T17:44:16.706021+00:00"
    },
    {
      "id": "5231202f31974079a1f7bfa769e34b6c",
      "sender": "jonatack",
      "payload": "is how to score peers based on the resources they consume",
      "action": false,
      "timestamp": "2025-05-28T17:44:47.456940+00:00"
    },
    {
      "id": "f205afc5070d487e99538995a0dbaaa1",
      "sender": "jonatack",
      "payload": "see, for instance: https://github.com/bitcoin/bitcoin/pull/31672",
      "action": false,
      "timestamp": "2025-05-28T17:45:34.641508+00:00"
    },
    {
      "id": "6a8972598fbd430abbfc27717b88be5c",
      "sender": "yuvic",
      "payload": "there was an issue for this",
      "action": false,
      "timestamp": "2025-05-28T17:45:39.987234+00:00"
    },
    {
      "id": "b51fb9e8574b4972a3fbb5c370d0d702",
      "sender": "yuvic",
      "payload": "yes by vasild",
      "action": false,
      "timestamp": "2025-05-28T17:45:46.758159+00:00"
    },
    {
      "id": "c2628648c9ec4d26b3aa924ed4f65429",
      "sender": "jonatack",
      "payload": "yuvic: yes. how to measure this an open question.",
      "action": false,
      "timestamp": "2025-05-28T17:46:08.069526+00:00"
    },
    {
      "id": "aba194b69a3945e5827049f6090bedf8",
      "sender": "jonatack",
      "payload": "i'm not sure how useful the cpu load is, as I have been testing it, and the load seems to often be higher when the peer is first connected, and then go down to normal levels",
      "action": false,
      "timestamp": "2025-05-28T17:47:03.465128+00:00"
    },
    {
      "id": "feb63081db1e4f7c88e40ebd4761d9b1",
      "sender": "jonatack",
      "payload": "and not necessarily indicate a bad peer",
      "action": false,
      "timestamp": "2025-05-28T17:47:40.477789+00:00"
    },
    {
      "id": "40ab9855c8d84fdbb7687c0f03c7467b",
      "sender": "jonatack",
      "payload": "(to be continued)",
      "action": false,
      "timestamp": "2025-05-28T17:47:48.609004+00:00"
    },
    {
      "id": "f015c2a762c0419b9576fb812436adc0",
      "sender": "jonatack",
      "payload": "i haven't seen it yet as useful -- on its own -- to qualify a peer to be disconnected",
      "action": false,
      "timestamp": "2025-05-28T17:48:32.329180+00:00"
    },
    {
      "id": "4ce37318ec0648b887d452f058d224cb",
      "sender": "jonatack",
      "payload": "this perhaps connects to aj towns' review suggestion about scoring peers and using that to scale the number of blocks we request from them",
      "action": false,
      "timestamp": "2025-05-28T17:49:46.015863+00:00"
    },
    {
      "id": "0605e33bdd02485ca458f6e1bd5187d7",
      "sender": "jonatack",
      "payload": "If anyone comes up with test coverage for the stalling or timeout logic here, I'd be very happy to look at it and bring it into the PR",
      "action": false,
      "timestamp": "2025-05-28T17:50:54.042944+00:00"
    },
    {
      "id": "c6a6d6753d47404294a585d3a34fbd4b",
      "sender": "enochazariah",
      "payload": "scoring them and using as an order, so a much higher score would mean higher chances of being requested",
      "action": false,
      "timestamp": "2025-05-28T17:51:00.492591+00:00"
    },
    {
      "id": "16a3fbe1a09045509cb06ac5e12c1bd5",
      "sender": "jonatack",
      "payload": "right now, the changes in this PR do not break any tests...",
      "action": false,
      "timestamp": "2025-05-28T17:51:08.120566+00:00"
    },
    {
      "id": "19b4dbbd9a0f465cb3b653fa20b8f180",
      "sender": "stringintech",
      "payload": "Regarding the timeout logics this PR touches, I could only find p2p_ibd_stalling.py, which covers the IBD block stalling timeout (and should possibly be adapted to reflect the addnode changes). I didn't find any integration tests for the initial header sync timeout and regular block download timeout. Am I right??",
      "action": false,
      "timestamp": "2025-05-28T17:52:04.394924+00:00"
    },
    {
      "id": "ec85ef3e8afa4f33b7502f90085b550c",
      "sender": "yuvic",
      "payload": "yes, test coverage would be interesting",
      "action": false,
      "timestamp": "2025-05-28T17:52:07.261995+00:00"
    },
    {
      "id": "90031d840a4b4c00bff47ff0a7478d35",
      "sender": "jonatack",
      "payload": "stringintech: neat, maybe addnode connections could be added to that functional test file",
      "action": false,
      "timestamp": "2025-05-28T17:53:31.896628+00:00"
    },
    {
      "id": "e11cce9cb4e848289762d37104014fdc",
      "sender": "jonatack",
      "payload": "stringintech: as for the header sync and block download, I have not yet looked",
      "action": false,
      "timestamp": "2025-05-28T17:54:44.144614+00:00"
    },
    {
      "id": "b531b95e0b954617a53c4b495ec9e637",
      "sender": "stringintech",
      "payload": "Hmm... I'd be happy to work on the missing ones (regardless of the PR changes) and open a PR (in case it is out of the scope for this PR of course). If it merges first, the addnode PR could adapt them accordingly too.",
      "action": false,
      "timestamp": "2025-05-28T17:55:12.897984+00:00"
    },
    {
      "id": "9225e2460d9f4d8b8fbf987660bf4715",
      "sender": "stringintech",
      "payload": "Have to double check to see if they are actually missing",
      "action": false,
      "timestamp": "2025-05-28T17:55:40.523685+00:00"
    },
    {
      "id": "4e15c726f95a403a9ae3b01d5ad5886d",
      "sender": "jonatack",
      "payload": "stringintech: that would be great!",
      "action": false,
      "timestamp": "2025-05-28T17:55:47.500503+00:00"
    },
    {
      "id": "36985ae5e16648cfb7e0da93afac338a",
      "sender": "jonatack",
      "payload": "please ping me (on the github PR, or via IRC or DM on twitter/x) if you come up with coverage",
      "action": false,
      "timestamp": "2025-05-28T17:56:36.761530+00:00"
    },
    {
      "id": "29242b7434784a81a4b4a8a54d562ea7",
      "sender": "enochazariah",
      "payload": "stringintech that would be nice",
      "action": false,
      "timestamp": "2025-05-28T17:56:41.900291+00:00"
    },
    {
      "id": "14b3d72fbf3041f9b5ec57c9e498bb5e",
      "sender": "jonatack",
      "payload": "any final thoughts or questions?",
      "action": false,
      "timestamp": "2025-05-28T17:57:43.050685+00:00"
    },
    {
      "id": "6a6490f3ea5346a1bd49be09ba9bea01",
      "sender": "jonatack",
      "payload": "2 minutes left",
      "action": false,
      "timestamp": "2025-05-28T17:57:49.507417+00:00"
    },
    {
      "id": "ef26bc405a324d489d1b4ce89b53217d",
      "sender": "yuvic",
      "payload": "thanks, nothing from my side!",
      "action": false,
      "timestamp": "2025-05-28T17:58:16.630317+00:00"
    },
    {
      "id": "0002a38547874d15a6796946413fb713",
      "sender": "enochazariah",
      "payload": "Nothing from my end",
      "action": false,
      "timestamp": "2025-05-28T17:58:28.039452+00:00"
    },
    {
      "id": "64e9803bb2154f748097f0cce295fd65",
      "sender": "jonatack",
      "payload": "Appreciate you all participating!",
      "action": false,
      "timestamp": "2025-05-28T17:58:42.403448+00:00"
    },
    {
      "id": "ed768499e79f4daf9180cff44a12c837",
      "sender": "jonatack",
      "payload": "Don't hesitate to leave a review comment or feedback on that PR or propose test coverage or improvements to it there",
      "action": false,
      "timestamp": "2025-05-28T17:59:16.202389+00:00"
    },
    {
      "id": "920be45ebab849f1b7faa78c15b09249",
      "sender": "enochazariah",
      "payload": "Thank you jonatack",
      "action": false,
      "timestamp": "2025-05-28T17:59:27.900551+00:00"
    },
    {
      "id": "a9772f24da844013b9bb287e85fc4f05",
      "sender": "stringintech",
      "payload": "Thank you jonatack!",
      "action": false,
      "timestamp": "2025-05-28T17:59:33.915228+00:00"
    },
    {
      "id": "0b5323eec836486d9fe86240daa45f80",
      "sender": "jonatack",
      "payload": "Thank you!",
      "action": false,
      "timestamp": "2025-05-28T17:59:45.660695+00:00"
    },
    {
      "id": "1811ca6d4f894057b05a15ffdabbaea7",
      "sender": "jonatack",
      "payload": "#endmeeting",
      "action": false,
      "timestamp": "2025-05-28T17:59:47.956269+00:00"
    }
  ],
  "events": [
    {
      "event_type": "START_MEETING",
      "message": {
        "id": "ed146058bf56433daf7a78f4e77ed016",
        "sender": "jonatack",
        "payload": "#startmeeting",
        "action": false,
        "timestamp": "2025-05-28T17:00:19.767834+00:00"
      },
      "operand": null,
      "id": "ed146058bf56433daf7a78f4e77ed016",
      "timestamp": "2025-05-28T17:00:19.767834+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "2aa02a4ad7024c3697a97d389f5b4a86",
        "sender": "jonatack",
        "payload": "https://bitcoincore.reviews/32051",
        "action": false,
        "timestamp": "2025-05-28T17:01:00.645956+00:00"
      },
      "operand": "https://bitcoincore.reviews/32051",
      "id": "2aa02a4ad7024c3697a97d389f5b4a86",
      "timestamp": "2025-05-28T17:01:00.645956+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "e08e85e1afc24130bf0583e179e2ccd4",
        "sender": "jonatack",
        "payload": "https://github.com/bitcoin/bitcoin/pull/32051",
        "action": false,
        "timestamp": "2025-05-28T17:01:06.456710+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/pull/32051",
      "id": "e08e85e1afc24130bf0583e179e2ccd4",
      "timestamp": "2025-05-28T17:01:06.456710+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "8494cf3d996f4c8e9956b49a221af918",
        "sender": "jonatack",
        "payload": "https://river.com/learn/terms/e/eclipse-attack/",
        "action": false,
        "timestamp": "2025-05-28T17:14:03.793412+00:00"
      },
      "operand": "https://river.com/learn/terms/e/eclipse-attack/",
      "id": "8494cf3d996f4c8e9956b49a221af918",
      "timestamp": "2025-05-28T17:14:03.793412+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "a0ee1326555645a090964bc255810acc",
        "sender": "jonatack",
        "payload": "https://github.com/bitcoin/bitcoin/issues/9213",
        "action": false,
        "timestamp": "2025-05-28T17:27:23.190781+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/9213",
      "id": "a0ee1326555645a090964bc255810acc",
      "timestamp": "2025-05-28T17:27:23.190781+00:00"
    },
    {
      "event_type": "END_MEETING",
      "message": {
        "id": "1811ca6d4f894057b05a15ffdabbaea7",
        "sender": "jonatack",
        "payload": "#endmeeting",
        "action": false,
        "timestamp": "2025-05-28T17:59:47.956269+00:00"
      },
      "operand": null,
      "id": "1811ca6d4f894057b05a15ffdabbaea7",
      "timestamp": "2025-05-28T17:59:47.956269+00:00"
    }
  ],
  "aliases": {},
  "vote_in_progress": false,
  "motion_index": null
}