{
  "founder": "meshcollider",
  "channel": "#bitcoin-core-dev",
  "network": "freenode",
  "id": "b4b3c8295f7a4a689869df60e2e29e23",
  "name": "#bitcoin-core-dev",
  "chair": "meshcollider",
  "chairs": [
    "meshcollider"
  ],
  "nicks": {
    "meshcollider": 11,
    "lightningbot": 2,
    "achow101": 11,
    "gribble": 1,
    "provoostenator": 2,
    "schmidty": 1,
    "sipa": 45,
    "jb55": 6,
    "bitcoin-git": 1
  },
  "start_time": "2019-07-05T19:00:58+00:00",
  "end_time": "2019-07-05T19:36:41+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": "miniscript update (sipa)",
  "messages": [
    {
      "id": "1465e69ce36f4b4296435a438e0acafa",
      "sender": "meshcollider",
      "payload": "#startmeeting",
      "action": false,
      "timestamp": "2019-07-05T19:00:58+00:00"
    },
    {
      "id": "d90c04ddf1cf4ba59bbbb7eb79bb0a71",
      "sender": "lightningbot",
      "payload": "Meeting started Fri Jul  5 19:00:58 2019 UTC.  The chair is meshcollider. Information about MeetBot at http://wiki.debian.org/MeetBot.",
      "action": false,
      "timestamp": "2019-07-05T19:00:58+00:00"
    },
    {
      "id": "513d30c74ce94aaf889901f0d591df06",
      "sender": "lightningbot",
      "payload": "Useful Commands: #action #agreed #help #info #idea #link #topic.",
      "action": false,
      "timestamp": "2019-07-05T19:00:58+00:00"
    },
    {
      "id": "89acf9cb2a594247bf1b6739579aa03e",
      "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-07-05T19:01:04+00:00"
    },
    {
      "id": "61c7ef86ab52406f97750ded1e6e7059",
      "sender": "achow101",
      "payload": "all I have to say is that #16341 does the wallet restructure and is very large",
      "action": false,
      "timestamp": "2019-07-05T19:01:09+00:00"
    },
    {
      "id": "41ea7fd54ba24a328b7a2c09dce40a27",
      "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-07-05T19:01:11+00:00"
    },
    {
      "id": "f0ed04d89910406f83884f6aa3c1cf7d",
      "sender": "provoostenator",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-07-05T19:01:11+00:00"
    },
    {
      "id": "f784fc6c9415408aac57eddf250e3627",
      "sender": "provoostenator",
      "payload": "achow101: the infamous box? I'll add to my review list.",
      "action": false,
      "timestamp": "2019-07-05T19:01:32+00:00"
    },
    {
      "id": "74f794032bc949fd985e1c1c1fd156e2",
      "sender": "meshcollider",
      "payload": "#topic miniscript update (sipa)",
      "action": false,
      "timestamp": "2019-07-05T19:01:35+00:00"
    },
    {
      "id": "2942bc95c5ff48f8840772031efe7cfe",
      "sender": "schmidty",
      "payload": "hola",
      "action": false,
      "timestamp": "2019-07-05T19:01:40+00:00"
    },
    {
      "id": "3920f23da4254a4aa489843e660e94bb",
      "sender": "sipa",
      "payload": "hi!",
      "action": false,
      "timestamp": "2019-07-05T19:01:41+00:00"
    },
    {
      "id": "c6b677e1e6ea43c2b0a402019f5a8a4f",
      "sender": "sipa",
      "payload": "so me and some colleagues of mine have been working on a way to make more complex bitcoin scripts more accessible, in a project called miniscript",
      "action": false,
      "timestamp": "2019-07-05T19:02:46+00:00"
    },
    {
      "id": "b636fe2eadea4b979afe158f084ecae3",
      "sender": "sipa",
      "payload": "this is about the bitcoin scirpt language as it exists today, without any softforks or other changes to consensus needed (but obviously prepared for those)",
      "action": false,
      "timestamp": "2019-07-05T19:03:19+00:00"
    },
    {
      "id": "75ba052c17a64dc4b691b2ffbe541d3a",
      "sender": "sipa",
      "payload": "the idea is that we can define a subset of script which is composable (so things can be arbitrarily nested, say you can replace a public key anywhere with a \"subexpression\" which corresponds to an arbitrary policy), has properties like correctness and nonmalleability that can be easily reasoned about, and can be targetted by a compiler that converts policies into scripts",
      "action": false,
      "timestamp": "2019-07-05T19:05:03+00:00"
    },
    {
      "id": "8114d0b597dc48549303b8074837d82e",
      "sender": "sipa",
      "payload": "with this, we could make software/hardware wallets support basically arbitrary policies, without even any extensions to psbt",
      "action": false,
      "timestamp": "2019-07-05T19:05:32+00:00"
    },
    {
      "id": "72c05b15e75c42599f04872ffb20807b",
      "sender": "sipa",
      "payload": "there's a website which is still actively being changed: http://bitcoin.sipa.be/miniscript",
      "action": false,
      "timestamp": "2019-07-05T19:06:07+00:00"
    },
    {
      "id": "7b91257b796649d5bd3535d7906cefe8",
      "sender": "sipa",
      "payload": "does this make sense?",
      "action": false,
      "timestamp": "2019-07-05T19:06:30+00:00"
    },
    {
      "id": "f7a964b1c68d46608bdf3879b4e01edc",
      "sender": "achow101",
      "payload": "sipa: is your website the only documentation of miniscript?",
      "action": false,
      "timestamp": "2019-07-05T19:07:10+00:00"
    },
    {
      "id": "d3f1a1d5e9484c8db7167f3ea447d6ee",
      "sender": "sipa",
      "payload": "achow101: andrew and sanket are also working on a rust implementation, which is public i think",
      "action": false,
      "timestamp": "2019-07-05T19:07:30+00:00"
    },
    {
      "id": "31863d060a5e42e9ad4155c96d20e637",
      "sender": "sipa",
      "payload": "but as we're actively changing things yet i prefer to not really have any production code available",
      "action": false,
      "timestamp": "2019-07-05T19:07:44+00:00"
    },
    {
      "id": "072bb4eb15f64c6191d81e6c43f075ff",
      "sender": "meshcollider",
      "payload": "This seems very nice",
      "action": false,
      "timestamp": "2019-07-05T19:09:13+00:00"
    },
    {
      "id": "57a254b4f8bd46cb96d2d8ebf8e2805c",
      "sender": "sipa",
      "payload": "so the different moving parts would be (a) signing logic in core/other software which is miniscript compatible, allowing signing/updating of any valid miniscript-compatible script (b) extension to descriptors that lets you include miniscript expressions, which are kinda engineer-readable but maybe a bit less than descriptors are now... (c) a compiler from policies with probabilities for all",
      "action": false,
      "timestamp": "2019-07-05T19:09:13+00:00"
    },
    {
      "id": "b771c9c93c604e63ae8c8a3a43a5177b",
      "sender": "sipa",
      "payload": "branches/choices to miniscript descriptors",
      "action": false,
      "timestamp": "2019-07-05T19:09:20+00:00"
    },
    {
      "id": "a995829c5c7840228c81ddf6768954a6",
      "sender": "jb55",
      "payload": "I see the aor was replaced with explicit probabilities, is that overkill or are there use cases in mind?",
      "action": false,
      "timestamp": "2019-07-05T19:09:48+00:00"
    },
    {
      "id": "68b5c2b4a9bd49459c35e4757d04a5a6",
      "sender": "sipa",
      "payload": "jb55: it was basically impossible to write a 3-way or where each branch is equally likely",
      "action": false,
      "timestamp": "2019-07-05T19:10:11+00:00"
    },
    {
      "id": "3af09b402c9c4e03aa0872430ffb47c1",
      "sender": "jb55",
      "payload": "ah",
      "action": false,
      "timestamp": "2019-07-05T19:10:32+00:00"
    },
    {
      "id": "edd6dbcb227d4c37af9d7e613d33add1",
      "sender": "sipa",
      "payload": "oh we also came up with a neat algorithm that lets you compute the worst-case satisfaction cost for a miniscript, with annotations on various branches saying \"this key is certainly available, this key will not be available at signing time, this key may be available at signing time\"",
      "action": false,
      "timestamp": "2019-07-05T19:10:50+00:00"
    },
    {
      "id": "e0763547885442fbb0e09841ac362c42",
      "sender": "sipa",
      "payload": "which is useful for fee estimation",
      "action": false,
      "timestamp": "2019-07-05T19:10:59+00:00"
    },
    {
      "id": "9f066673e086480bbb1f758f4eca4234",
      "sender": "bitcoin-git",
      "payload": "[bitcoin] sipsorcery closed pull request #15995: systemd service script: set usable permissions on /etc/bitcoin config dir (master...systemdconfig) https://github.com/bitcoin/bitcoin/pull/15995",
      "action": false,
      "timestamp": "2019-07-05T19:11:28+00:00"
    },
    {
      "id": "3a6be08863744b6382490186a5b7ef32",
      "sender": "sipa",
      "payload": "and the compiler is also good enough now that it can construct scripts that are strictly better than the bolt 3 htlc scripts... but obviously incompatible with them",
      "action": false,
      "timestamp": "2019-07-05T19:11:30+00:00"
    },
    {
      "id": "bdea52ef798c49bb99d2c80321d7f787",
      "sender": "sipa",
      "payload": "it'd be nice to support all actual script people have come up with in the past, but it would require adding a whole bunch of ad-hoc extensions for weird tricks",
      "action": false,
      "timestamp": "2019-07-05T19:12:04+00:00"
    },
    {
      "id": "4b4c9ecadab142a596ae66f629642da4",
      "sender": "achow101",
      "payload": "cool! how close to being finalized do you think it is?",
      "action": false,
      "timestamp": "2019-07-05T19:13:25+00:00"
    },
    {
      "id": "865bd36361d94bce9c339dce6334d28f",
      "sender": "achow101",
      "payload": "(aka when pr?)",
      "action": false,
      "timestamp": "2019-07-05T19:13:32+00:00"
    },
    {
      "id": "e64317358aee4624ae927b850e8fb7b0",
      "sender": "sipa",
      "payload": "i think we're very close to finalizing the design of the language... but we've been saying that for a few weeks now",
      "action": false,
      "timestamp": "2019-07-05T19:13:46+00:00"
    },
    {
      "id": "322fb3e6537e4e16875f280b4b983bee",
      "sender": "sipa",
      "payload": "it'll be some work to convert the hacky code to something PR'able",
      "action": false,
      "timestamp": "2019-07-05T19:14:04+00:00"
    },
    {
      "id": "ea4abcdda67844dabfb6e77be4148f06",
      "sender": "sipa",
      "payload": "but i hope soon",
      "action": false,
      "timestamp": "2019-07-05T19:14:08+00:00"
    },
    {
      "id": "4a0c4080ebfd4f75b294cd622c06deb4",
      "sender": "sipa",
      "payload": "so a motivation for this is for example being able to use a 2-of-3-timelocked-escrow-cool policy as a \"participant\" in a multisig, rather than being restricted to just keys in the multisig",
      "action": false,
      "timestamp": "2019-07-05T19:14:55+00:00"
    },
    {
      "id": "4b5065a1c86249e6b7f19e343e28c37f",
      "sender": "sipa",
      "payload": "more questions? otherwise end topic",
      "action": false,
      "timestamp": "2019-07-05T19:16:04+00:00"
    },
    {
      "id": "9b9f3da9f60d4c8db0f9c7c1639d092d",
      "sender": "achow101",
      "payload": "the policy language is descriptors, right?",
      "action": false,
      "timestamp": "2019-07-05T19:16:30+00:00"
    },
    {
      "id": "4f36a78b9794495a8046c3721dba40ae",
      "sender": "sipa",
      "payload": "nope",
      "action": false,
      "timestamp": "2019-07-05T19:16:50+00:00"
    },
    {
      "id": "0c34c6989950458d9d2324f2bce61094",
      "sender": "sipa",
      "payload": "the thing i envision becoming part of descriptors is a 1-to-1 mapping with script itself",
      "action": false,
      "timestamp": "2019-07-05T19:17:25+00:00"
    },
    {
      "id": "268239c4c3e74173981266f9fe41e7e2",
      "sender": "sipa",
      "payload": "so there is no \"compilation\" step between the descriptor and the script, as that compilation is pretty complex",
      "action": false,
      "timestamp": "2019-07-05T19:17:47+00:00"
    },
    {
      "id": "c10761fba6b3410ab35ebee243d588da",
      "sender": "achow101",
      "payload": "is it policy -> descriptor -> script?",
      "action": false,
      "timestamp": "2019-07-05T19:18:20+00:00"
    },
    {
      "id": "35266b166db746c888812bb21aba09b1",
      "sender": "sipa",
      "payload": "so the policy language is similar, but it has probabilities in it, and only has and/or/threshold/key/hash/time functions",
      "action": false,
      "timestamp": "2019-07-05T19:18:22+00:00"
    },
    {
      "id": "b454ac8865944a8db2fcdd94c860b183",
      "sender": "sipa",
      "payload": "policy -> descriptor <-> script",
      "action": false,
      "timestamp": "2019-07-05T19:18:29+00:00"
    },
    {
      "id": "99b026fe97114174afb5b8a4f268cff4",
      "sender": "achow101",
      "payload": "ah, ok",
      "action": false,
      "timestamp": "2019-07-05T19:18:51+00:00"
    },
    {
      "id": "4f7d203fd6af44af9b8ca4a0fef05fcf",
      "sender": "sipa",
      "payload": "while the descriptor extensions have a ton of different ways of encoding an and/or, depending on context, probabilities, ...",
      "action": false,
      "timestamp": "2019-07-05T19:18:56+00:00"
    },
    {
      "id": "cf5d330f3f054136974a7f3855ec946f",
      "sender": "sipa",
      "payload": "i don't expect the policy language and the compiler to become part of core,",
      "action": false,
      "timestamp": "2019-07-05T19:19:39+00:00"
    },
    {
      "id": "c34fa5b2d74741a082f7116d985262e4",
      "sender": "sipa",
      "payload": "though maybe some analysis functionality may be (e.g. we can extract a policy without probabilities back from the script etc)",
      "action": false,
      "timestamp": "2019-07-05T19:20:26+00:00"
    },
    {
      "id": "0b4d743d45c4455c8309adf347b4942e",
      "sender": "meshcollider",
      "payload": "So what are you planning to PR then?",
      "action": false,
      "timestamp": "2019-07-05T19:20:43+00:00"
    },
    {
      "id": "553a005479a74a43a551d93275bc2c12",
      "sender": "sipa",
      "payload": "ability to sign/update/psbt arbitrary miniscript compatible scripts",
      "action": false,
      "timestamp": "2019-07-05T19:21:08+00:00"
    },
    {
      "id": "244b015fb77f41b8910972c4d16dc2e1",
      "sender": "sipa",
      "payload": "and extensions to descriptors",
      "action": false,
      "timestamp": "2019-07-05T19:21:11+00:00"
    },
    {
      "id": "ab970c21b71e417bba5d3408c835f828",
      "sender": "achow101",
      "payload": "basically replacing the solver and ProduceSignature?",
      "action": false,
      "timestamp": "2019-07-05T19:21:33+00:00"
    },
    {
      "id": "aaa0b64cef34463b9f3921211a2dfb9e",
      "sender": "achow101",
      "payload": "so instead of pattern matching to figure out how to sign and finalize, interpret miniscript/descriptors",
      "action": false,
      "timestamp": "2019-07-05T19:22:00+00:00"
    },
    {
      "id": "9f578e06f5d9469f82b961cd80759dc3",
      "sender": "sipa",
      "payload": "right",
      "action": false,
      "timestamp": "2019-07-05T19:22:05+00:00"
    },
    {
      "id": "a437a6e8c3214cb98eb9fd3d452ae23d",
      "sender": "sipa",
      "payload": "maybe all of the signing code can become delegated to a miniscript module",
      "action": false,
      "timestamp": "2019-07-05T19:22:17+00:00"
    },
    {
      "id": "3a9e4fe2fe4341189a5a8289f5f3fca9",
      "sender": "sipa",
      "payload": "maybe the existing rawtransaction-compatible ones should just stay as legacy code, and only miniscript code gets invoked for more complex things",
      "action": false,
      "timestamp": "2019-07-05T19:22:45+00:00"
    },
    {
      "id": "9ac1433acabf455f90b35db1ad0f27e9",
      "sender": "achow101",
      "payload": "and with native descriptor wallets, people will be able to track whatever weird scripts they want and be able to sign for them",
      "action": false,
      "timestamp": "2019-07-05T19:23:20+00:00"
    },
    {
      "id": "cb381f49dc0e48749a03a70b2e33c706",
      "sender": "sipa",
      "payload": "the conversion from script to miniscript structure is basically an LALR(1) parser (we have a handwritten one that's easier to read, but tools like bison/yacc can generate code to do this trivially)",
      "action": false,
      "timestamp": "2019-07-05T19:23:47+00:00"
    },
    {
      "id": "2a5e75f57353409dbb2effd0667de0a8",
      "sender": "sipa",
      "payload": "yup",
      "action": false,
      "timestamp": "2019-07-05T19:24:11+00:00"
    },
    {
      "id": "a1b79950814043d8aac50919adebe159",
      "sender": "sipa",
      "payload": "and with psbt, you can have even hardware wallets in theory participate in signing",
      "action": false,
      "timestamp": "2019-07-05T19:24:28+00:00"
    },
    {
      "id": "ddea06be62834a9ca7274569de6a738f",
      "sender": "sipa",
      "payload": "though they may freak out with the unconventional scripts, and change detection becomes a lot harder",
      "action": false,
      "timestamp": "2019-07-05T19:24:46+00:00"
    },
    {
      "id": "23c9cf217bab4c2c8329b6e7262bbbf3",
      "sender": "jb55",
      "payload": "sipa: is the conversion from script to policy ever ambiguous?",
      "action": false,
      "timestamp": "2019-07-05T19:25:03+00:00"
    },
    {
      "id": "9c6539957fd64606aef1c83f677971a7",
      "sender": "jb55",
      "payload": "if that makes sense",
      "action": false,
      "timestamp": "2019-07-05T19:25:11+00:00"
    },
    {
      "id": "855ba3e665ee4eb188b5b7ec7dbd2e1d",
      "sender": "sipa",
      "payload": "jb55: if you define an \"abstract policy\" which is a policy but without probabilities in it, you can always derive the abstract policy from a script",
      "action": false,
      "timestamp": "2019-07-05T19:25:41+00:00"
    },
    {
      "id": "f5eef30505224e1fbc941bbad5ba134f",
      "sender": "meshcollider",
      "payload": "Ah that LALR parser point answered my next question",
      "action": false,
      "timestamp": "2019-07-05T19:26:03+00:00"
    },
    {
      "id": "6fac9b8f3a04471b9e1a463e3c448984",
      "sender": "sipa",
      "payload": "in such a way that it's equivalent to the policy fed to the compiler",
      "action": false,
      "timestamp": "2019-07-05T19:26:04+00:00"
    },
    {
      "id": "427c9f2159e142279e664c91a249adb0",
      "sender": "jb55",
      "payload": "sipa: and that is guaranteed to be unique?",
      "action": false,
      "timestamp": "2019-07-05T19:26:43+00:00"
    },
    {
      "id": "28a2d552715643d98a4310c5a1df204f",
      "sender": "sipa",
      "payload": "jb55: though if the compiler gets a lot smarter, this may not be possible anymore (e.g. complex reasoning over booleans/threshold gates to simplify the policy before compiler)",
      "action": false,
      "timestamp": "2019-07-05T19:26:43+00:00"
    },
    {
      "id": "a7a1061b55c443fb919231954f172099",
      "sender": "sipa",
      "payload": "jb55: testing whether two different encodings of the same abstract policy are identical for arbitrary policies is an intractable problem",
      "action": false,
      "timestamp": "2019-07-05T19:27:15+00:00"
    },
    {
      "id": "c5b5f85559374909bc01999a53da7274",
      "sender": "sipa",
      "payload": "like and(a,thresh(2,a,b,c)) is identical to and(a,or(b,c))",
      "action": false,
      "timestamp": "2019-07-05T19:27:56+00:00"
    },
    {
      "id": "0903ac33e87c4fccadf38a85d7babf6f",
      "sender": "sipa",
      "payload": "things like that cannot be generally compared",
      "action": false,
      "timestamp": "2019-07-05T19:28:08+00:00"
    },
    {
      "id": "90fcf7e37c5e496fb037dccc1ce4a7b5",
      "sender": "sipa",
      "payload": "but the compiler (so far) won't ever make such transitions",
      "action": false,
      "timestamp": "2019-07-05T19:28:28+00:00"
    },
    {
      "id": "e408b989902d4018b46781820190a565",
      "sender": "jb55",
      "payload": "right",
      "action": false,
      "timestamp": "2019-07-05T19:29:13+00:00"
    },
    {
      "id": "fb1c8ba758d94d40922132066170b65f",
      "sender": "meshcollider",
      "payload": "Alright this seems very nice, thank you sipa, I need some time to read the website in more detail",
      "action": false,
      "timestamp": "2019-07-05T19:32:50+00:00"
    },
    {
      "id": "4da019d100a5454fa674554943aa6df7",
      "sender": "meshcollider",
      "payload": "Does anyone have any other topics to discuss today?",
      "action": false,
      "timestamp": "2019-07-05T19:33:12+00:00"
    },
    {
      "id": "45a6931401004a529d46a4399c877721",
      "sender": "achow101",
      "payload": "please review wallet boxes and the 3 PRs it depends on",
      "action": false,
      "timestamp": "2019-07-05T19:34:17+00:00"
    },
    {
      "id": "6e40836e50004695bad58049d719aada",
      "sender": "meshcollider",
      "payload": "Yes ^ sorry I haven't reviewed much yet, it's been a crazy week",
      "action": false,
      "timestamp": "2019-07-05T19:34:47+00:00"
    },
    {
      "id": "6e739f705b704ca8bf97e8fcae4ec085",
      "sender": "meshcollider",
      "payload": "#action review wallet box PRs",
      "action": false,
      "timestamp": "2019-07-05T19:36:36+00:00"
    },
    {
      "id": "83084e4e841944b1abf3ab9213c07cca",
      "sender": "meshcollider",
      "payload": "#endmeeting",
      "action": false,
      "timestamp": "2019-07-05T19:36:41+00:00"
    }
  ],
  "events": [
    {
      "event_type": "START_MEETING",
      "message": {
        "id": "1465e69ce36f4b4296435a438e0acafa",
        "sender": "meshcollider",
        "payload": "#startmeeting",
        "action": false,
        "timestamp": "2019-07-05T19:00:58+00:00"
      },
      "operand": null,
      "id": "1465e69ce36f4b4296435a438e0acafa",
      "timestamp": "2019-07-05T19:00:58+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "41ea7fd54ba24a328b7a2c09dce40a27",
        "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-07-05T19:01:11+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/16341",
      "id": "41ea7fd54ba24a328b7a2c09dce40a27",
      "timestamp": "2019-07-05T19:01:11+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "74f794032bc949fd985e1c1c1fd156e2",
        "sender": "meshcollider",
        "payload": "#topic miniscript update (sipa)",
        "action": false,
        "timestamp": "2019-07-05T19:01:35+00:00"
      },
      "operand": "miniscript update (sipa)",
      "id": "74f794032bc949fd985e1c1c1fd156e2",
      "timestamp": "2019-07-05T19:01:35+00:00"
    },
    {
      "event_type": "ACTION",
      "message": {
        "id": "6e739f705b704ca8bf97e8fcae4ec085",
        "sender": "meshcollider",
        "payload": "#action review wallet box PRs",
        "action": false,
        "timestamp": "2019-07-05T19:36:36+00:00"
      },
      "operand": "review wallet box PRs",
      "id": "6e739f705b704ca8bf97e8fcae4ec085",
      "timestamp": "2019-07-05T19:36:36+00:00"
    },
    {
      "event_type": "END_MEETING",
      "message": {
        "id": "83084e4e841944b1abf3ab9213c07cca",
        "sender": "meshcollider",
        "payload": "#endmeeting",
        "action": false,
        "timestamp": "2019-07-05T19:36:41+00:00"
      },
      "operand": null,
      "id": "83084e4e841944b1abf3ab9213c07cca",
      "timestamp": "2019-07-05T19:36:41+00:00"
    }
  ],
  "aliases": {},
  "vote_in_progress": false,
  "motion_index": null
}