{
  "founder": "meshcollider",
  "channel": "#bitcoin-core-dev",
  "network": "freenode",
  "id": "f476d1f37ddb4f8ca92859c9fdcebd1c",
  "name": "#bitcoin-core-dev",
  "chair": "meshcollider",
  "chairs": [
    "meshcollider"
  ],
  "nicks": {
    "meshcollider": 20,
    "lightningbot": 2,
    "provoostenator": 8,
    "achow101": 25,
    "sipa": 12,
    "ariard": 13,
    "jonatack": 3,
    "jnewbery": 1,
    "gribble": 3,
    "kanzure": 1,
    "elichai2": 1,
    "emilengler": 3
  },
  "start_time": "2019-08-02T19:00:21+00:00",
  "end_time": "2019-08-02T19:31:49+00:00",
  "active": false,
  "original_topic": "Bitcoin Core development discussion and commit log | This is the channel for developing Bitcoin Core. 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 https://gist.github.com/moneyball/071d608fdae217c2a6d7c35955881d8a",
  "current_topic": "Avoiding the [ci skip]s in #16341",
  "messages": [
    {
      "id": "94476518229b4b3785ddf08e7b5d6a3e",
      "sender": "meshcollider",
      "payload": "#startmeeting",
      "action": false,
      "timestamp": "2019-08-02T19:00:21+00:00"
    },
    {
      "id": "842b62e7d5644bd0bfa466179c199996",
      "sender": "lightningbot",
      "payload": "Meeting started Fri Aug  2 19:00:21 2019 UTC.  The chair is meshcollider. Information about MeetBot at http://wiki.debian.org/MeetBot.",
      "action": false,
      "timestamp": "2019-08-02T19:00:21+00:00"
    },
    {
      "id": "dafa1d4cd2994d24a944ad122cbfbf14",
      "sender": "lightningbot",
      "payload": "Useful Commands: #action #agreed #help #info #idea #link #topic.",
      "action": false,
      "timestamp": "2019-08-02T19:00:21+00:00"
    },
    {
      "id": "ed8fb36aa52f45b981f4160e1dae3ace",
      "sender": "meshcollider",
      "payload": "#bitcoin-core-dev Wallet Meeting: wumpus sipa gmaxwell jonasschnelli morcos luke-jr sdaftuar jtimon cfields petertodd kanzure bluematt instagibbs phantomcircuit codeshark michagogo marcofalke paveljanik NicolasDorier jl2012 achow101 meshcollider jnewbery maaku fanquake promag provoostenator aj Chris_Stewart_5 dongcarl gwillen jamesob ken281221 ryanofsky gleb moneyball",
      "action": false,
      "timestamp": "2019-08-02T19:00:27+00:00"
    },
    {
      "id": "949584148f9f4cba9586f50f3bc54585",
      "sender": "provoostenator",
      "payload": "hi\\",
      "action": false,
      "timestamp": "2019-08-02T19:00:32+00:00"
    },
    {
      "id": "f0a932ae5a2c4bb3952efa5138ca033a",
      "sender": "achow101",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-08-02T19:00:32+00:00"
    },
    {
      "id": "e1044b9bc1eb4381b5bfb2b7e118c891",
      "sender": "sipa",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-08-02T19:00:35+00:00"
    },
    {
      "id": "b93935a96df245d9b3a862920727b148",
      "sender": "ariard",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-08-02T19:01:06+00:00"
    },
    {
      "id": "77037a49042a45e5a9daefde493bb8a9",
      "sender": "meshcollider",
      "payload": "any topics? :)",
      "action": false,
      "timestamp": "2019-08-02T19:01:07+00:00"
    },
    {
      "id": "5e1fe2c247e94b04a1c52229bde2a1ad",
      "sender": "jonatack",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-08-02T19:01:09+00:00"
    },
    {
      "id": "c703800f887b4220bf3ba58585f4db89",
      "sender": "jnewbery",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-08-02T19:01:27+00:00"
    },
    {
      "id": "0727a2ceea6f4f5786174bd80c209a62",
      "sender": "achow101",
      "payload": "Big news is #16528 opened last night for native descriptor wallets",
      "action": false,
      "timestamp": "2019-08-02T19:01:39+00:00"
    },
    {
      "id": "8e9ff906efde4c10bfca6ef70b5f956b",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/16528 | [WIP] Native Descriptor Wallets (take 2) by achow101 \u00c3\u0082\u00c2\u00b7 Pull Request #16528 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-08-02T19:01:42+00:00"
    },
    {
      "id": "90eb49f2205440a797f9839056adab42",
      "sender": "achow101",
      "payload": "only 107 commits :p",
      "action": false,
      "timestamp": "2019-08-02T19:01:52+00:00"
    },
    {
      "id": "81b026a1232747bfaa93a443e8d02651",
      "sender": "ariard",
      "payload": "working on a rework of rescan logic https://gist.github.com/ariard/89f9bcc3a7ab9576fc6d15d251032cfa",
      "action": false,
      "timestamp": "2019-08-02T19:01:53+00:00"
    },
    {
      "id": "29f9a634276e466591c0f13b65c6110d",
      "sender": "sipa",
      "payload": "achow101: wow",
      "action": false,
      "timestamp": "2019-08-02T19:02:14+00:00"
    },
    {
      "id": "8fe24d458c2f48eb9cb5abce3795d1e4",
      "sender": "ariard",
      "payload": "thanks to feedbacks design from ryanosfky",
      "action": false,
      "timestamp": "2019-08-02T19:02:17+00:00"
    },
    {
      "id": "b023462e099e485498e9388a1064cf7c",
      "sender": "sipa",
      "payload": "ariard: tip for remembering his nickname: ryan of sky",
      "action": false,
      "timestamp": "2019-08-02T19:02:40+00:00"
    },
    {
      "id": "46495fdecb5f4a96adfdb659928dc793",
      "sender": "ariard",
      "payload": "s/ryanosfky/ryanofsky/g",
      "action": false,
      "timestamp": "2019-08-02T19:02:42+00:00"
    },
    {
      "id": "143ff14d12c243daaa32f5e1889e12ff",
      "sender": "ariard",
      "payload": "sipa: already heard this one",
      "action": false,
      "timestamp": "2019-08-02T19:02:53+00:00"
    },
    {
      "id": "2965944fe8ba49658f92cbf2c10b32f1",
      "sender": "meshcollider",
      "payload": "achow101: The 107 commits include the legacy rework PR right :p",
      "action": false,
      "timestamp": "2019-08-02T19:03:12+00:00"
    },
    {
      "id": "81e578e06b344b05829f26ed1bb00e0c",
      "sender": "achow101",
      "payload": "<provoostenator> For todays wallet meeting, it would be good to brainstorm if there's a way to avoid all the [ci skip] commits in #16341.",
      "action": false,
      "timestamp": "2019-08-02T19:03:18+00:00"
    },
    {
      "id": "c8c4a32825b745d48b280d462f556074",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/16341 | Introduce ScriptPubKeyMan interface and use it for key and script management (aka wallet boxes) by achow101 \u00c3\u0082\u00c2\u00b7 Pull Request #16341 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-08-02T19:03:21+00:00"
    },
    {
      "id": "184359ee6bee41528a536361054e45c8",
      "sender": "achow101",
      "payload": "meshcollider: yes",
      "action": false,
      "timestamp": "2019-08-02T19:03:22+00:00"
    },
    {
      "id": "0f9ddbfd77954ab7acb102f78515e693",
      "sender": "kanzure",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-08-02T19:03:29+00:00"
    },
    {
      "id": "fcc491c2611142e7b44bcf6c933ac9cf",
      "sender": "achow101",
      "payload": "I think provoostenator has the only topic suggestion today",
      "action": false,
      "timestamp": "2019-08-02T19:03:41+00:00"
    },
    {
      "id": "01380395e12645e980f030cec941318a",
      "sender": "provoostenator",
      "payload": "Yes, maybe it's impossible, but's pretty daunting to review otherwise",
      "action": false,
      "timestamp": "2019-08-02T19:03:48+00:00"
    },
    {
      "id": "6579cb552290406eb6b53fb1e93993f3",
      "sender": "meshcollider",
      "payload": "Let's start with that then",
      "action": false,
      "timestamp": "2019-08-02T19:04:03+00:00"
    },
    {
      "id": "97b8e08bbb904dbb927ebaa6d31ceaa2",
      "sender": "achow101",
      "payload": "I had a look at doing that, and it gave me a headache",
      "action": false,
      "timestamp": "2019-08-02T19:04:26+00:00"
    },
    {
      "id": "6946e19785fa4b85968e6944a5f5ff09",
      "sender": "meshcollider",
      "payload": "#topic Avoiding the [ci skip]s in #16341",
      "action": false,
      "timestamp": "2019-08-02T19:04:47+00:00"
    },
    {
      "id": "a8170f0eca0d416f927d0bb8d3ecff68",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/16341 | Introduce ScriptPubKeyMan interface and use it for key and script management (aka wallet boxes) by achow101 \u00c3\u0082\u00c2\u00b7 Pull Request #16341 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-08-02T19:04:49+00:00"
    },
    {
      "id": "72b555174d2140f6ae604a03989719d9",
      "sender": "achow101",
      "payload": "the problem is that a lot of functions are dependent on other ones, so there would need to be a pretty big commit just to add those",
      "action": false,
      "timestamp": "2019-08-02T19:05:11+00:00"
    },
    {
      "id": "6f16057f7b8e46e29978c2c0cf56dd0f",
      "sender": "meshcollider",
      "payload": "Yeah I thought the whole reason you put them there in the first place was because we decided it was better than one massive commit that doesn't break stuff",
      "action": false,
      "timestamp": "2019-08-02T19:05:39+00:00"
    },
    {
      "id": "b23028a0e650470992c8166f4f9f0ea7",
      "sender": "achow101",
      "payload": "then as you add them into the wallet, things start becoming inconsistent if not all of the things that can effect each other are also added at the same time. these inconsistencies also result in test failures",
      "action": false,
      "timestamp": "2019-08-02T19:05:41+00:00"
    },
    {
      "id": "d40faf3132b44b549887d8757c59a013",
      "sender": "achow101",
      "payload": "One idea I had was to combine implementation of the function in LegacyScriptPubKeyMan and replacement in CWallet, but still leave the CWallet stuff there to operate in parallel",
      "action": false,
      "timestamp": "2019-08-02T19:06:52+00:00"
    },
    {
      "id": "744fb0e723f9444a8800bd8376ce860e",
      "sender": "provoostenator",
      "payload": "That's what I was thinking as well",
      "action": false,
      "timestamp": "2019-08-02T19:07:50+00:00"
    },
    {
      "id": "2e35915440ed4a15aae804d9b3b156e6",
      "sender": "achow101",
      "payload": "but that seemed kind of pointless because the new code wasn't really doing anything, and we would still need to have the gigantic \"delete all the old things\" commit at the end",
      "action": false,
      "timestamp": "2019-08-02T19:07:51+00:00"
    },
    {
      "id": "671fd7eea25c4906a58131dbcdd16535",
      "sender": "provoostenator",
      "payload": "Maybe start with a bunch dummy methods in the LegacyScriptPubKeyMan and then move stuff over?",
      "action": false,
      "timestamp": "2019-08-02T19:08:07+00:00"
    },
    {
      "id": "9eaf1ef00b264b6eb29847c1a5d0e348",
      "sender": "provoostenator",
      "payload": "Then in the end you still need to delete some calls, but no implementations.",
      "action": false,
      "timestamp": "2019-08-02T19:08:38+00:00"
    },
    {
      "id": "3791bf06a6264f35a586fabed7f44653",
      "sender": "achow101",
      "payload": "there is also some consistency issues with doing that because the wallet files could be overwritten by two different code paths and become inconsistent, also failing tests",
      "action": false,
      "timestamp": "2019-08-02T19:08:39+00:00"
    },
    {
      "id": "bb5ca60856134912896f806fac5f016a",
      "sender": "meshcollider",
      "payload": "It's the moving which is the problem",
      "action": false,
      "timestamp": "2019-08-02T19:08:41+00:00"
    },
    {
      "id": "f0e513c5bc7b4ff79421d1ccd75e1c3e",
      "sender": "elichai2",
      "payload": "crazy idea. PR into PR? (that way they could be reviewed seperatly but merged into master together)",
      "action": false,
      "timestamp": "2019-08-02T19:08:43+00:00"
    },
    {
      "id": "2c178294e8544d848e7a120103cd6dce",
      "sender": "sipa",
      "payload": "we must go deeper.",
      "action": false,
      "timestamp": "2019-08-02T19:09:31+00:00"
    },
    {
      "id": "8fab178dba0842a1bacc3c34ba68c94f",
      "sender": "achow101",
      "payload": "elichai2: they're all separate commits, so it shouldn't actually be that hard to review separately",
      "action": false,
      "timestamp": "2019-08-02T19:09:39+00:00"
    },
    {
      "id": "1ad67f4215a644deaad2c726a38cfd3f",
      "sender": "achow101",
      "payload": "provoostenator: I don't believe that there is a way to avoid having [ci skip] commits because tests will fail",
      "action": false,
      "timestamp": "2019-08-02T19:10:44+00:00"
    },
    {
      "id": "8948403fec1f4e0190654a40479ec45f",
      "sender": "meshcollider",
      "payload": "Ease of review > Travis passing on every single commit, as long as the tests pass at the end of the PR I think it's fine :)",
      "action": false,
      "timestamp": "2019-08-02T19:11:29+00:00"
    },
    {
      "id": "1f96b029683744b0bd50910a002fea08",
      "sender": "provoostenator",
      "payload": "meshcollider: agree",
      "action": false,
      "timestamp": "2019-08-02T19:11:40+00:00"
    },
    {
      "id": "65b1f317bd57464cb1daf30565d6b877",
      "sender": "achow101",
      "payload": "a lot of the commits are really small too",
      "action": false,
      "timestamp": "2019-08-02T19:11:58+00:00"
    },
    {
      "id": "be93a17bcb4e4a349ecfeed471a75a1a",
      "sender": "provoostenator",
      "payload": "Currently the dimmed-zebra can't help",
      "action": false,
      "timestamp": "2019-08-02T19:12:21+00:00"
    },
    {
      "id": "74b2422135fd424a9c69ed0c2d63ea05",
      "sender": "provoostenator",
      "payload": "Which makes it super tedious to check if the new function bodies are the same",
      "action": false,
      "timestamp": "2019-08-02T19:12:36+00:00"
    },
    {
      "id": "c145f06e8b7a4be49b1f741f6bd656b0",
      "sender": "sipa",
      "payload": "having intermediary commits that pass CI is helpful for review, as you can be sure about things like \"this method changes, did all call sites get updated too?\" without needing much work",
      "action": false,
      "timestamp": "2019-08-02T19:12:41+00:00"
    },
    {
      "id": "b963392b099041db8e504bd8af52af84",
      "sender": "achow101",
      "payload": "having them all pass tests would be nice, makes bisect not suck",
      "action": false,
      "timestamp": "2019-08-02T19:13:12+00:00"
    },
    {
      "id": "ec33c3aaccc0497f906158fbc3a0baef",
      "sender": "sipa",
      "payload": "yeah",
      "action": false,
      "timestamp": "2019-08-02T19:13:19+00:00"
    },
    {
      "id": "3ba7f4d1b33c48e291357ddc5411956f",
      "sender": "sipa",
      "payload": "not saying it's a strict requirement, though it's certainly very helpful as a policy",
      "action": false,
      "timestamp": "2019-08-02T19:13:32+00:00"
    },
    {
      "id": "b43b96b2b8ba4ebea26d60236bc40e65",
      "sender": "achow101",
      "payload": "I spent a lot of time finding a bug that was introduced in one of the [ci skip] commits but bisect wasn't as helpful since the tests wouldn't get to the part where the bug was triggered",
      "action": false,
      "timestamp": "2019-08-02T19:13:47+00:00"
    },
    {
      "id": "b9f669b2c06a49c7907f8b9b7ef71606",
      "sender": "achow101",
      "payload": "but even then, having them all pass tests wouldn't be helpful since the new code isn't the one that's actually doing the work. it would still just be the old stuff and bisecting would just point you to the gigantic \"change everything over\" commit",
      "action": false,
      "timestamp": "2019-08-02T19:14:54+00:00"
    },
    {
      "id": "6600ae1e221e4735a02fede2abe88d67",
      "sender": "jonatack",
      "payload": "at least the [ci skip] comments signal when the failure is to be expected, so there's that... but from a review perspective hygienic commits are much better",
      "action": false,
      "timestamp": "2019-08-02T19:15:24+00:00"
    },
    {
      "id": "6f107956d86849c185ec964e3d526256",
      "sender": "jonatack",
      "payload": "commit messages could contain the steps",
      "action": false,
      "timestamp": "2019-08-02T19:15:58+00:00"
    },
    {
      "id": "3633d14c995e4ebcb2a0fe142658b258",
      "sender": "meshcollider",
      "payload": "achow101: can CWallet just have an instance of a LegacyScriptPubkeyManager inside it right from the start and call methods inside it as they're moved into it?",
      "action": false,
      "timestamp": "2019-08-02T19:17:53+00:00"
    },
    {
      "id": "6ec6ace2424c483f88ad3fcbc17fac3d",
      "sender": "meshcollider",
      "payload": "And then do some inheritance refactoring at the end",
      "action": false,
      "timestamp": "2019-08-02T19:18:24+00:00"
    },
    {
      "id": "dba94ad802e14348b21e2be804d758e1",
      "sender": "meshcollider",
      "payload": "Then the massive \"move everything over\" commit would just be deleting methods like foo(){ legacy.foo(); }",
      "action": false,
      "timestamp": "2019-08-02T19:18:54+00:00"
    },
    {
      "id": "79ba9a2309594f94b9824f257e338f0f",
      "sender": "achow101",
      "payload": "no because methods are dependent on other ones",
      "action": false,
      "timestamp": "2019-08-02T19:19:25+00:00"
    },
    {
      "id": "8d39ecbe0ae24e54af0bb21374b85a1e",
      "sender": "achow101",
      "payload": "for example, I thought that AddKey would be easy, it should be mostly by itself, right? Nope. Requres AddCryptedKey to be implemented, which requires Encryption stuff to be implemented. For some reason it also requires watch only things so you need to have setWatchOnly, HaveWatchOnly, RemoveWatchOnly",
      "action": false,
      "timestamp": "2019-08-02T19:20:44+00:00"
    },
    {
      "id": "d8b6fdf0f8134278a8a53a570196d47a",
      "sender": "achow101",
      "payload": "and you need AddKey for loading keys in the first place!",
      "action": false,
      "timestamp": "2019-08-02T19:21:13+00:00"
    },
    {
      "id": "3d4215a3651c48cf964c924372604918",
      "sender": "sipa",
      "payload": "fun.",
      "action": false,
      "timestamp": "2019-08-02T19:21:32+00:00"
    },
    {
      "id": "c041833243d84c0ba056af7b8f5cefec",
      "sender": "meshcollider",
      "payload": "Yeah... I think the [ci skip] are here to stay then",
      "action": false,
      "timestamp": "2019-08-02T19:22:44+00:00"
    },
    {
      "id": "037e57e9526e45cdb18df6f0211e794a",
      "sender": "meshcollider",
      "payload": "Does anyone else want to discuss anything this week?",
      "action": false,
      "timestamp": "2019-08-02T19:23:06+00:00"
    },
    {
      "id": "28b9fc9f8cf14688b6b502cc4311f048",
      "sender": "achow101",
      "payload": "(If you couldn't tell, I was very annoyed by this and spent a while cursing the person who wrote this code, which was probably sipa :p)",
      "action": false,
      "timestamp": "2019-08-02T19:24:07+00:00"
    },
    {
      "id": "d417c4bda55842758c8d2c59a72673a7",
      "sender": "sipa",
      "payload": "hides.",
      "action": true,
      "timestamp": "2019-08-02T19:24:16+00:00"
    },
    {
      "id": "0b0afc4f448c4ea68c5845b7af68e73f",
      "sender": "ariard",
      "payload": "meshcollider: if anyone has thoughts on this https://gist.github.com/ariard/89f9bcc3a7ab9576fc6d15d251032cfa it would be welcomed",
      "action": false,
      "timestamp": "2019-08-02T19:25:31+00:00"
    },
    {
      "id": "b7c4f0f0d4954aad9afb861183d84fbb",
      "sender": "ariard",
      "payload": "(not necessarily now)",
      "action": false,
      "timestamp": "2019-08-02T19:25:53+00:00"
    },
    {
      "id": "6ee10e8ea41a45148422797725310ec8",
      "sender": "achow101",
      "payload": "it would be nice for rescan (and other wallet things) to not need cs_main",
      "action": false,
      "timestamp": "2019-08-02T19:26:25+00:00"
    },
    {
      "id": "24746fb3dd4c480f85bdfcf1bfda3110",
      "sender": "meshcollider",
      "payload": "#action Read and feedback on ariard's proposal",
      "action": false,
      "timestamp": "2019-08-02T19:26:31+00:00"
    },
    {
      "id": "76c1079a241f4b7baaa4a390a4c6cd89",
      "sender": "ariard",
      "payload": "main idea is just to use a common thread between index and ChainClient to provide blocks in one sequence instead of redoing the work multiple times",
      "action": false,
      "timestamp": "2019-08-02T19:26:39+00:00"
    },
    {
      "id": "cddf54fb41874de6876389ba3fc4b955",
      "sender": "achow101",
      "payload": "there's been a lot of complaints I've seen recently about RPCs taking a while, probably because cs_main is held by ~everything",
      "action": false,
      "timestamp": "2019-08-02T19:26:57+00:00"
    },
    {
      "id": "681048f19c5b4ceaa6c7307cca237764",
      "sender": "ariard",
      "payload": "achow101: yes that's the end of goal, not relying at all on cs_main",
      "action": false,
      "timestamp": "2019-08-02T19:26:58+00:00"
    },
    {
      "id": "5f04e9653c3f4932b9b3942fab048bb8",
      "sender": "ariard",
      "payload": "but will need multiple PRs to get there to avoid to big diff",
      "action": false,
      "timestamp": "2019-08-02T19:27:15+00:00"
    },
    {
      "id": "9897af6b8e5d45b68b85266fdbc07421",
      "sender": "ariard",
      "payload": "first step move all logic in a thread, future steps  worker thread pool + cache what we need to avoid locking",
      "action": false,
      "timestamp": "2019-08-02T19:27:52+00:00"
    },
    {
      "id": "6688cda7cc0947299f3c489d8bcc3531",
      "sender": "ariard",
      "payload": "hope to submit code next week, people will get a better idea",
      "action": false,
      "timestamp": "2019-08-02T19:28:47+00:00"
    },
    {
      "id": "d58e1b0930564d1fabd3402255cfffa4",
      "sender": "emilengler",
      "payload": "By the way, what does the LOCK and cs_main mean? I see this nearly everywhere when I look in the code",
      "action": false,
      "timestamp": "2019-08-02T19:29:03+00:00"
    },
    {
      "id": "2ef07ca37fd24dcd9363433a1f7daaac",
      "sender": "meshcollider",
      "payload": "ariard: sounds good!",
      "action": false,
      "timestamp": "2019-08-02T19:29:05+00:00"
    },
    {
      "id": "683210b245ec4f25935ee87552a376c0",
      "sender": "emilengler",
      "payload": "And why it needs to be in the curly brackets",
      "action": false,
      "timestamp": "2019-08-02T19:29:09+00:00"
    },
    {
      "id": "ec33f591d61240478f7aa72173221368",
      "sender": "achow101",
      "payload": "emilengler: cs_main is one of the locks, while one thread holds it, no other thread can acquire it. it is used to protect things from concurrency issues like race conditions. LOCK(cs_main) is the way to acquire cs_main, if it is held by someone else, the thread will wait",
      "action": false,
      "timestamp": "2019-08-02T19:30:03+00:00"
    },
    {
      "id": "23993a57e3cf40679d58095e0774c2d5",
      "sender": "sipa",
      "payload": "emilengler: RAII",
      "action": false,
      "timestamp": "2019-08-02T19:30:04+00:00"
    },
    {
      "id": "1d31222136224180b835a49d600d56e1",
      "sender": "meshcollider",
      "payload": "emilengler: cs_main is something which only one thread can \"hold\" at once, making sure stuff which it protects isn't written twice at the same time or something which would result in race conditions",
      "action": false,
      "timestamp": "2019-08-02T19:30:17+00:00"
    },
    {
      "id": "e9c4e3eb20be44dcae1fe1a3d5c0a4a5",
      "sender": "sipa",
      "payload": "emilengler: it introduces a lock in the scope it's defined at; it automatically unlocks when it goes out of scope",
      "action": false,
      "timestamp": "2019-08-02T19:30:26+00:00"
    },
    {
      "id": "35d8dfa2ca87473fa608c878cc0a56de",
      "sender": "sipa",
      "payload": "emilengler: it's a general concept in C++ called RAII",
      "action": false,
      "timestamp": "2019-08-02T19:30:36+00:00"
    },
    {
      "id": "c003d97acb73440cb0cb0ee0eccd6379",
      "sender": "ariard",
      "payload": "have a look in sync.h and threadsafety.h",
      "action": false,
      "timestamp": "2019-08-02T19:30:39+00:00"
    },
    {
      "id": "01bdd91e624d4ca197eebcfd63f6d21f",
      "sender": "meshcollider",
      "payload": "Anyway I think this wraps up the meeting",
      "action": false,
      "timestamp": "2019-08-02T19:31:13+00:00"
    },
    {
      "id": "2aeecbd3776d4a97b475ae46340dbd1a",
      "sender": "emilengler",
      "payload": "Ok so it is more a C++ thing? I usually don't work that often with multiple threads",
      "action": false,
      "timestamp": "2019-08-02T19:31:35+00:00"
    },
    {
      "id": "18bb4929cb9a4f3da8169776a0e0d792",
      "sender": "meshcollider",
      "payload": "We can read the proposal and PR outside",
      "action": false,
      "timestamp": "2019-08-02T19:31:47+00:00"
    },
    {
      "id": "2bda26d7838643a28f188103de56a879",
      "sender": "meshcollider",
      "payload": "#endmeeting",
      "action": false,
      "timestamp": "2019-08-02T19:31:49+00:00"
    }
  ],
  "events": [
    {
      "event_type": "START_MEETING",
      "message": {
        "id": "94476518229b4b3785ddf08e7b5d6a3e",
        "sender": "meshcollider",
        "payload": "#startmeeting",
        "action": false,
        "timestamp": "2019-08-02T19:00:21+00:00"
      },
      "operand": null,
      "id": "94476518229b4b3785ddf08e7b5d6a3e",
      "timestamp": "2019-08-02T19:00:21+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "8e9ff906efde4c10bfca6ef70b5f956b",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/16528 | [WIP] Native Descriptor Wallets (take 2) by achow101 \u00c3\u0082\u00c2\u00b7 Pull Request #16528 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-08-02T19:01:42+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/16528",
      "id": "8e9ff906efde4c10bfca6ef70b5f956b",
      "timestamp": "2019-08-02T19:01:42+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "c8c4a32825b745d48b280d462f556074",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/16341 | Introduce ScriptPubKeyMan interface and use it for key and script management (aka wallet boxes) by achow101 \u00c3\u0082\u00c2\u00b7 Pull Request #16341 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-08-02T19:03:21+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/16341",
      "id": "c8c4a32825b745d48b280d462f556074",
      "timestamp": "2019-08-02T19:03:21+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "6946e19785fa4b85968e6944a5f5ff09",
        "sender": "meshcollider",
        "payload": "#topic Avoiding the [ci skip]s in #16341",
        "action": false,
        "timestamp": "2019-08-02T19:04:47+00:00"
      },
      "operand": "Avoiding the [ci skip]s in #16341",
      "id": "6946e19785fa4b85968e6944a5f5ff09",
      "timestamp": "2019-08-02T19:04:47+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "a8170f0eca0d416f927d0bb8d3ecff68",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/16341 | Introduce ScriptPubKeyMan interface and use it for key and script management (aka wallet boxes) by achow101 \u00c3\u0082\u00c2\u00b7 Pull Request #16341 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-08-02T19:04:49+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/16341",
      "id": "a8170f0eca0d416f927d0bb8d3ecff68",
      "timestamp": "2019-08-02T19:04:49+00:00"
    },
    {
      "event_type": "ACTION",
      "message": {
        "id": "24746fb3dd4c480f85bdfcf1bfda3110",
        "sender": "meshcollider",
        "payload": "#action Read and feedback on ariard's proposal",
        "action": false,
        "timestamp": "2019-08-02T19:26:31+00:00"
      },
      "operand": "Read and feedback on ariard's proposal",
      "id": "24746fb3dd4c480f85bdfcf1bfda3110",
      "timestamp": "2019-08-02T19:26:31+00:00"
    },
    {
      "event_type": "END_MEETING",
      "message": {
        "id": "2bda26d7838643a28f188103de56a879",
        "sender": "meshcollider",
        "payload": "#endmeeting",
        "action": false,
        "timestamp": "2019-08-02T19:31:49+00:00"
      },
      "operand": null,
      "id": "2bda26d7838643a28f188103de56a879",
      "timestamp": "2019-08-02T19:31:49+00:00"
    }
  ],
  "aliases": {},
  "vote_in_progress": false,
  "motion_index": null
}