{
  "founder": "wumpus",
  "channel": "#bitcoin-core-dev",
  "network": "freenode",
  "id": "b4e05adb218644b3b7cc2dcb2cd2de5b",
  "name": "#bitcoin-core-dev",
  "chair": "wumpus",
  "chairs": [
    "wumpus"
  ],
  "nicks": {
    "wumpus": 39,
    "lightningbot": 2,
    "moneyball": 2,
    "sdaftuar": 4,
    "sipa": 30,
    "achow101": 6,
    "jonasschnelli": 19,
    "promag": 1,
    "jamesob": 11,
    "instagibbs": 6,
    "jnewbery": 4,
    "gribble": 10,
    "phantomcircuit": 1,
    "meshcollider": 2,
    "jimpo": 39,
    "gmaxwell": 19,
    "ryanofsky": 1
  },
  "start_time": "2019-01-10T19:00:32+00:00",
  "end_time": "2019-01-10T19:52:52+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": "rw_config INI vs UniValue (jonasschnelli)",
  "messages": [
    {
      "id": "dccc829fa83148faa7580e9594fe6869",
      "sender": "wumpus",
      "payload": "#startmeeting",
      "action": false,
      "timestamp": "2019-01-10T19:00:32+00:00"
    },
    {
      "id": "60722bcd664140458a8ee2f6ec6e52d6",
      "sender": "lightningbot",
      "payload": "Meeting started Thu Jan 10 19:00:32 2019 UTC.  The chair is wumpus. Information about MeetBot at http://wiki.debian.org/MeetBot.",
      "action": false,
      "timestamp": "2019-01-10T19:00:32+00:00"
    },
    {
      "id": "0d01a975494c460cb953d2bda1f7504d",
      "sender": "lightningbot",
      "payload": "Useful Commands: #action #agreed #help #info #idea #link #topic.",
      "action": false,
      "timestamp": "2019-01-10T19:00:32+00:00"
    },
    {
      "id": "85c1ae4b0d1a4cd5b716409ee51b43c9",
      "sender": "moneyball",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-01-10T19:00:44+00:00"
    },
    {
      "id": "2c812adb047d4dfa8ff091f5130d10f3",
      "sender": "sdaftuar",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-01-10T19:00:45+00:00"
    },
    {
      "id": "e7a9d9d1601f4f40be675befa719a30f",
      "sender": "sipa",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-01-10T19:00:48+00:00"
    },
    {
      "id": "4d132d5d767b4dfb9a30c285b0e38d74",
      "sender": "achow101",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-01-10T19:00:56+00:00"
    },
    {
      "id": "03253039ab704aa68a8e7095ef57a325",
      "sender": "moneyball",
      "payload": "fyi there weren't any proposed topics in IRC the past week",
      "action": false,
      "timestamp": "2019-01-10T19:00:56+00:00"
    },
    {
      "id": "d826f0ae97a844668f5f79eb7fc2a6d2",
      "sender": "jonasschnelli",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-01-10T19:01:00+00:00"
    },
    {
      "id": "234d2e72a1574f848bb35fef78b2d17c",
      "sender": "wumpus",
      "payload": "#bitcoin-core-dev 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",
      "action": false,
      "timestamp": "2019-01-10T19:01:02+00:00"
    },
    {
      "id": "17488bdd1ff34c328d1d6420a95ed631",
      "sender": "promag",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-01-10T19:01:12+00:00"
    },
    {
      "id": "5bc9ddbbbc1b4a628acc2cc951bc93fa",
      "sender": "jamesob",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-01-10T19:01:19+00:00"
    },
    {
      "id": "71433df6f0ef41938674b3bfe1d73332",
      "sender": "wumpus",
      "payload": "any proposed topics now?",
      "action": false,
      "timestamp": "2019-01-10T19:01:31+00:00"
    },
    {
      "id": "e0f3ca23e19a4285976152db54678587",
      "sender": "wumpus",
      "payload": "thanks for keeping track moneyball",
      "action": false,
      "timestamp": "2019-01-10T19:01:42+00:00"
    },
    {
      "id": "2f788f464f914856bf0e02d5a947e887",
      "sender": "achow101",
      "payload": "topic: moving hwi under bitcoin-core org",
      "action": false,
      "timestamp": "2019-01-10T19:01:59+00:00"
    },
    {
      "id": "dcce05ea1ee54e2394208816399c0517",
      "sender": "wumpus",
      "payload": "hwi?",
      "action": false,
      "timestamp": "2019-01-10T19:02:13+00:00"
    },
    {
      "id": "4e66daf60f2042b09498c3747b2b30c6",
      "sender": "achow101",
      "payload": "hardware wallet interface thingy",
      "action": false,
      "timestamp": "2019-01-10T19:02:24+00:00"
    },
    {
      "id": "0073b33b3a67464998bc3db4a7d5751f",
      "sender": "instagibbs",
      "payload": "https://github.com/achow101/HWI",
      "action": false,
      "timestamp": "2019-01-10T19:02:25+00:00"
    },
    {
      "id": "2b62f39907464a0ea4b980c2a3ca12a8",
      "sender": "jnewbery",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-01-10T19:02:26+00:00"
    },
    {
      "id": "5329dc29dfb94517929a5d68a28904b6",
      "sender": "wumpus",
      "payload": "ohh ofc",
      "action": false,
      "timestamp": "2019-01-10T19:02:34+00:00"
    },
    {
      "id": "450904555efc468c8747d4ced9908ad7",
      "sender": "wumpus",
      "payload": "#topic high priority for review",
      "action": false,
      "timestamp": "2019-01-10T19:02:47+00:00"
    },
    {
      "id": "db920278ca524df79e9e6d2eb12d91a4",
      "sender": "wumpus",
      "payload": "https://github.com/bitcoin/bitcoin/projects/8",
      "action": false,
      "timestamp": "2019-01-10T19:02:54+00:00"
    },
    {
      "id": "74a89f9f17a440bbb03cd1c2b2d7f4a7",
      "sender": "sipa",
      "payload": "can i has #14955 ?",
      "action": false,
      "timestamp": "2019-01-10T19:03:02+00:00"
    },
    {
      "id": "f729e7b7025e4df6be3fe4a5bc0d314f",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/14955 | Switch all RNG code to the built-in PRNG by sipa \u00c3\u0082\u00c2\u00b7 Pull Request #14955 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-01-10T19:03:06+00:00"
    },
    {
      "id": "2c250526d8f346ff87849ff75c1280b6",
      "sender": "wumpus",
      "payload": "current ones: #11082 #14491 #14711 #14941 #14938",
      "action": false,
      "timestamp": "2019-01-10T19:03:33+00:00"
    },
    {
      "id": "0eae0b3953a249d8bb7a26fccb1a1c53",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/11082 | Add new bitcoin_rw.conf file that is used for settings modified by this software itself by luke-jr \u00c3\u0082\u00c2\u00b7 Pull Request #11082 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-01-10T19:03:36+00:00"
    },
    {
      "id": "6e43b433aa8c42cfb18083c3db838d3b",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/14491 | Allow descriptor imports with importmulti by MeshCollider \u00c3\u0082\u00c2\u00b7 Pull Request #14491 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-01-10T19:03:38+00:00"
    },
    {
      "id": "d1f7a9d10a7c4da39b213df8b09f375f",
      "sender": "wumpus",
      "payload": "sipa: sure",
      "action": false,
      "timestamp": "2019-01-10T19:03:41+00:00"
    },
    {
      "id": "ff7f05e5f24840d7ad369a0f6fa5768c",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/14711 | Remove uses of chainActive and mapBlockIndex in wallet code by ryanofsky \u00c3\u0082\u00c2\u00b7 Pull Request #14711 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-01-10T19:03:41+00:00"
    },
    {
      "id": "4d17c3a212b84875aa71dfbbafd17bbf",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/14941 | rpc: Make unloadwallet wait for complete wallet unload by promag \u00c3\u0082\u00c2\u00b7 Pull Request #14941 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-01-10T19:03:43+00:00"
    },
    {
      "id": "9615585e1f5947498939734a00e9b68b",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/14938 | Support creating an empty wallet by Sjors \u00c3\u0082\u00c2\u00b7 Pull Request #14938 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-01-10T19:03:45+00:00"
    },
    {
      "id": "dc6d278ea6434aa89dcbfcd686286edf",
      "sender": "sdaftuar",
      "payload": "i'd like to request #15141",
      "action": false,
      "timestamp": "2019-01-10T19:04:06+00:00"
    },
    {
      "id": "947a1caa45294b81b6313ee317e61f9e",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/15141 | Rewrite DoS interface between validation and net_processing by sdaftuar \u00c3\u0082\u00c2\u00b7 Pull Request #15141 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-01-10T19:04:08+00:00"
    },
    {
      "id": "fcbc4750867a4eb2bd966228809016b8",
      "sender": "jnewbery",
      "payload": "I think everyone's scared of reviewing that!",
      "action": false,
      "timestamp": "2019-01-10T19:04:19+00:00"
    },
    {
      "id": "ad016ea58d324ec8bda351b8d0c0cbe1",
      "sender": "sdaftuar",
      "payload": "it's already been reviewed a bunch, just never was merged :(",
      "action": false,
      "timestamp": "2019-01-10T19:04:35+00:00"
    },
    {
      "id": "1d2838d6daa84290b346ac78914dd526",
      "sender": "wumpus",
      "payload": "added",
      "action": false,
      "timestamp": "2019-01-10T19:05:00+00:00"
    },
    {
      "id": "703c9d054590437ab9bf707a17a293fe",
      "sender": "sdaftuar",
      "payload": "thanks",
      "action": false,
      "timestamp": "2019-01-10T19:05:08+00:00"
    },
    {
      "id": "d58118c77cca4b5d810611fc97597b78",
      "sender": "wumpus",
      "payload": "#topic moving hwi under bitcoin-core org (achow101)",
      "action": false,
      "timestamp": "2019-01-10T19:06:10+00:00"
    },
    {
      "id": "a14f05ea3da44dc08d12ab294dfdb4ec",
      "sender": "phantomcircuit",
      "payload": "hi",
      "action": false,
      "timestamp": "2019-01-10T19:06:33+00:00"
    },
    {
      "id": "93220d2e5b9d43dbbc58fc7c91c75e46",
      "sender": "wumpus",
      "payload": "#link https://github.com/achow101/HWI",
      "action": false,
      "timestamp": "2019-01-10T19:06:46+00:00"
    },
    {
      "id": "badac704c7cd449e8236b0e084dd72e3",
      "sender": "jonasschnelli",
      "payload": "Maybe we can discuss #11082 since there was the discussion of JSON vs INI?",
      "action": false,
      "timestamp": "2019-01-10T19:06:47+00:00"
    },
    {
      "id": "9669f8d8cd5a49cf93dae79dbe42411c",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/11082 | Add new bitcoin_rw.conf file that is used for settings modified by this software itself by luke-jr \u00c3\u0082\u00c2\u00b7 Pull Request #11082 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-01-10T19:06:50+00:00"
    },
    {
      "id": "dccb4181db1f410d921c6266131f146e",
      "sender": "meshcollider",
      "payload": "Hi",
      "action": false,
      "timestamp": "2019-01-10T19:06:54+00:00"
    },
    {
      "id": "7affb2fbefec492ab684d48416204186",
      "sender": "achow101",
      "payload": "so hwi is currently under my account. but if we are going to use it for hardware wallet support in core, then perhaps it would be better to have it under a proper github org. the obvious one that comes to mind is bitcoin-core",
      "action": false,
      "timestamp": "2019-01-10T19:07:43+00:00"
    },
    {
      "id": "a8d73c7b76b0401d89efb26d6230490c",
      "sender": "wumpus",
      "payload": "yes, that makes sense",
      "action": false,
      "timestamp": "2019-01-10T19:08:14+00:00"
    },
    {
      "id": "759f766f9c6945f18bef918508512a2f",
      "sender": "achow101",
      "payload": "instagibbs: might have some thoughts on this?",
      "action": false,
      "timestamp": "2019-01-10T19:08:17+00:00"
    },
    {
      "id": "b0fc4706809946b6a7eaa0ae81c8555a",
      "sender": "instagibbs",
      "payload": "nothing against achow101 but also I'm actively using it and would be nice to be put under an established org",
      "action": false,
      "timestamp": "2019-01-10T19:08:25+00:00"
    },
    {
      "id": "0931644f4eb749389ed0301d695314fa",
      "sender": "instagibbs",
      "payload": ";)",
      "action": false,
      "timestamp": "2019-01-10T19:08:28+00:00"
    },
    {
      "id": "7aeced77f1354d4da50b5c2958204389",
      "sender": "instagibbs",
      "payload": "ACK in other words",
      "action": false,
      "timestamp": "2019-01-10T19:08:38+00:00"
    },
    {
      "id": "b5b5d32032e548d8b578591fe07de0a2",
      "sender": "wumpus",
      "payload": "no one seems to be opposed :)",
      "action": false,
      "timestamp": "2019-01-10T19:09:02+00:00"
    },
    {
      "id": "d99d5016f172473a855b4d677c13d173",
      "sender": "instagibbs",
      "payload": "https://github.com/achow101/HWI/issues/91 for further background",
      "action": false,
      "timestamp": "2019-01-10T19:09:31+00:00"
    },
    {
      "id": "a275201e0d2f431fb40c28272acc139e",
      "sender": "meshcollider",
      "payload": "We should give achow merge permission on it imo",
      "action": false,
      "timestamp": "2019-01-10T19:09:43+00:00"
    },
    {
      "id": "b0e3409dbbf14cc09dcf9dc684df67fa",
      "sender": "wumpus",
      "payload": "of course",
      "action": false,
      "timestamp": "2019-01-10T19:09:58+00:00"
    },
    {
      "id": "4d5b5344a30d4543b680452334f59963",
      "sender": "sipa",
      "payload": "achow101: iirc there is a way to 'transfer' a repo to another org, that way github will automatically set up redirects etc",
      "action": false,
      "timestamp": "2019-01-10T19:10:05+00:00"
    },
    {
      "id": "12adbcaf604d45cfb5d1aeca268cc6f9",
      "sender": "sipa",
      "payload": "as opposed to copying it over",
      "action": false,
      "timestamp": "2019-01-10T19:10:09+00:00"
    },
    {
      "id": "793204757aa04418ae1321123a5c3c3e",
      "sender": "instagibbs",
      "payload": "yep, just an organizational thing, with established review/merge norms/contributor docs",
      "action": false,
      "timestamp": "2019-01-10T19:10:23+00:00"
    },
    {
      "id": "18462f36b0a245a395fb52f208dc1976",
      "sender": "wumpus",
      "payload": "he might still want the local clone for his own PRs",
      "action": false,
      "timestamp": "2019-01-10T19:10:25+00:00"
    },
    {
      "id": "17be63c8a28e443998b0011c303b685c",
      "sender": "achow101",
      "payload": "sipa: yes, there's a transfer ownership button",
      "action": false,
      "timestamp": "2019-01-10T19:10:29+00:00"
    },
    {
      "id": "7296e20dfe164446a0293edfdf363896",
      "sender": "jnewbery",
      "payload": "#link https://help.github.com/articles/transferring-a-repository/",
      "action": false,
      "timestamp": "2019-01-10T19:10:53+00:00"
    },
    {
      "id": "f603a68c092645c9a99269ef217808fd",
      "sender": "wumpus",
      "payload": "but could create a new one as well",
      "action": false,
      "timestamp": "2019-01-10T19:10:56+00:00"
    },
    {
      "id": "3d379bc15d574ca5b9f1acb60d557457",
      "sender": "wumpus",
      "payload": "(clone it again after transfering)",
      "action": false,
      "timestamp": "2019-01-10T19:11:09+00:00"
    },
    {
      "id": "503191648a45438381204fcf089c056d",
      "sender": "wumpus",
      "payload": "any other topics?",
      "action": false,
      "timestamp": "2019-01-10T19:11:35+00:00"
    },
    {
      "id": "7a8c03f1dfd84c9cb7ff4503b141f8bc",
      "sender": "jimpo",
      "payload": "BIP 157 index leveldb vs flatfiles?",
      "action": false,
      "timestamp": "2019-01-10T19:11:51+00:00"
    },
    {
      "id": "2d5b45f6e47c4aab89aa9e2c0896c924",
      "sender": "wumpus",
      "payload": "ah yes jonasschnelli had one",
      "action": false,
      "timestamp": "2019-01-10T19:12:08+00:00"
    },
    {
      "id": "ff9a0712a38242e3be5f71e591f8ab64",
      "sender": "jonasschnelli",
      "payload": "not an important one",
      "action": false,
      "timestamp": "2019-01-10T19:12:27+00:00"
    },
    {
      "id": "9ae94af498414233a7253b46f2daad40",
      "sender": "jonasschnelli",
      "payload": "(and my internet connection goes up and down)",
      "action": false,
      "timestamp": "2019-01-10T19:12:40+00:00"
    },
    {
      "id": "0ec6e7dab0b543b2ac3e3a0d0db3ab33",
      "sender": "wumpus",
      "payload": "ok jimpo first then",
      "action": false,
      "timestamp": "2019-01-10T19:12:45+00:00"
    },
    {
      "id": "79e5ae2fdd934a3196406fc216dedb17",
      "sender": "jonasschnelli",
      "payload": "https://github.com/bitcoin/bitcoin/pull/11082#issuecomment-451406061",
      "action": false,
      "timestamp": "2019-01-10T19:12:46+00:00"
    },
    {
      "id": "6d76248799b34a4ea8ca03abb3ae2cfe",
      "sender": "jonasschnelli",
      "payload": "ack",
      "action": false,
      "timestamp": "2019-01-10T19:12:50+00:00"
    },
    {
      "id": "3a714acd39a344d8aabbeb261e598864",
      "sender": "wumpus",
      "payload": "#topic BIP 157 index leveldb vs flatfiles (jimpo)",
      "action": false,
      "timestamp": "2019-01-10T19:12:58+00:00"
    },
    {
      "id": "8ca8d7534fa64a429e3aa4aa8cc78dc8",
      "sender": "jimpo",
      "payload": "So there's some discussion on #14121",
      "action": false,
      "timestamp": "2019-01-10T19:13:00+00:00"
    },
    {
      "id": "68bc71b320af45608bcbb914179ff089",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/14121 | Index for BIP 157 block filters by jimpo \u00c3\u0082\u00c2\u00b7 Pull Request #14121 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-01-10T19:13:03+00:00"
    },
    {
      "id": "c314c70adc8f48e4849290957004d782",
      "sender": "jimpo",
      "payload": "basically there's three options 1) store entire filters along with metadata in separate LevelDB",
      "action": false,
      "timestamp": "2019-01-10T19:13:27+00:00"
    },
    {
      "id": "8385974486db4bc4b84fb4853bfef223",
      "sender": "jimpo",
      "payload": "2) store filter metadata (hash, disk pos) in levelDB and filters in flat files",
      "action": false,
      "timestamp": "2019-01-10T19:13:43+00:00"
    },
    {
      "id": "9d7ae2a8ebd940d8857e9d0a4bae7bda",
      "sender": "jimpo",
      "payload": "3) add filter metadata to CBlockIndex and store filters in flat files, just like undo data",
      "action": false,
      "timestamp": "2019-01-10T19:14:03+00:00"
    },
    {
      "id": "cbcf7b45d0b640c79a9b3004423e31a6",
      "sender": "jimpo",
      "payload": "In terms of perf, #3 is probably the fastest and certainly the fastest with enough IO optimizations",
      "action": false,
      "timestamp": "2019-01-10T19:14:27+00:00"
    },
    {
      "id": "a12d88e7a0d146ef9502ed14f21cf579",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/3 | Encrypt wallet \u00c3\u0082\u00c2\u00b7 Issue #3 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2019-01-10T19:14:30+00:00"
    },
    {
      "id": "89d0b8cb565d438192d1b0c2daa446f2",
      "sender": "sipa",
      "payload": "so the first question is between 1/2 and 3, i think; whether the filters are their own index semantically, or part of the main data structures",
      "action": false,
      "timestamp": "2019-01-10T19:14:35+00:00"
    },
    {
      "id": "505e08e1bfc4405a9f95df350e78b6b6",
      "sender": "jonasschnelli",
      "payload": "What speaks against being part of the main data structure?",
      "action": false,
      "timestamp": "2019-01-10T19:15:10+00:00"
    },
    {
      "id": "dbd8bad20a3d4db985428d495cc7c154",
      "sender": "jimpo",
      "payload": "I prefer 1/2 since I can imagine alternate filter types",
      "action": false,
      "timestamp": "2019-01-10T19:15:14+00:00"
    },
    {
      "id": "c825635a722d4679a157ac04b9479c12",
      "sender": "jonasschnelli",
      "payload": "(like option 3)",
      "action": false,
      "timestamp": "2019-01-10T19:15:21+00:00"
    },
    {
      "id": "74204b05e78f4689ba992fc8ef9ab5bb",
      "sender": "sipa",
      "payload": "and i guess that depends on how they'll be used; if they're mostly optional things that some people want to enable, a separate index is the obvious way to go",
      "action": false,
      "timestamp": "2019-01-10T19:15:22+00:00"
    },
    {
      "id": "a024450be58f481c83c861be291228b2",
      "sender": "jamesob",
      "payload": "jonasschnelli: https://github.com/bitcoin/bitcoin/pull/14121#issuecomment-451838178",
      "action": false,
      "timestamp": "2019-01-10T19:15:29+00:00"
    },
    {
      "id": "1e5f130b20644cb09032d99e5de196a1",
      "sender": "sipa",
      "payload": "but if we envision it may become a consensus rule, having it separate is quite annoying",
      "action": false,
      "timestamp": "2019-01-10T19:15:39+00:00"
    },
    {
      "id": "f05e996d30344ecd9ea2678c1d5d3a51",
      "sender": "jimpo",
      "payload": "metadata is like 76 bytes (2 hashes + disk loc)",
      "action": false,
      "timestamp": "2019-01-10T19:15:55+00:00"
    },
    {
      "id": "1a2f48f143264cf28141771a3746752b",
      "sender": "jonasschnelli",
      "payload": "From what I see is that there are plans to commit the filters at one point so it'll be part of the consensus, right?",
      "action": false,
      "timestamp": "2019-01-10T19:16:19+00:00"
    },
    {
      "id": "34ebcd002ebf45b49900223cf2f90266",
      "sender": "jimpo",
      "payload": "it's more convenient to have it in CBlockIndex if part of consensus rules, yes, but I'm not sure how much worse the separate index is there",
      "action": false,
      "timestamp": "2019-01-10T19:17:06+00:00"
    },
    {
      "id": "3487d67c53ee4504ac663f3a6ba2fd6e",
      "sender": "sipa",
      "payload": "i guess it isn't really",
      "action": false,
      "timestamp": "2019-01-10T19:17:18+00:00"
    },
    {
      "id": "c8e90bbb261448dfbb1575960479fdc0",
      "sender": "jimpo",
      "payload": "would have to do some synchronization or build the filters twice (but that's really fast)",
      "action": false,
      "timestamp": "2019-01-10T19:17:29+00:00"
    },
    {
      "id": "576b1c345c1d4ab5af74388e5234bd92",
      "sender": "jimpo",
      "payload": "like you can validate the consensus rule w/o storing the filter",
      "action": false,
      "timestamp": "2019-01-10T19:17:47+00:00"
    },
    {
      "id": "d6c2595edf5f46e9a729c2b48c043262",
      "sender": "sipa",
      "payload": "it can go from an asynchronously maintained one to a synchronous one perhap at that time, but still remain a separate db/directory",
      "action": false,
      "timestamp": "2019-01-10T19:17:50+00:00"
    },
    {
      "id": "f045daebd8944ec1816b996b75259a58",
      "sender": "jimpo",
      "payload": "if you don't want to",
      "action": false,
      "timestamp": "2019-01-10T19:17:50+00:00"
    },
    {
      "id": "6315862240184e7fb8cc47ee30d2132a",
      "sender": "sipa",
      "payload": "right",
      "action": false,
      "timestamp": "2019-01-10T19:17:55+00:00"
    },
    {
      "id": "b1db7eefdab145f0924915ec88839692",
      "sender": "jimpo",
      "payload": "which is another strong (IMO) argument in favor of 1/2: not everyone needs to or should be forced to store filters",
      "action": false,
      "timestamp": "2019-01-10T19:18:45+00:00"
    },
    {
      "id": "b354e31cc1944421a7a102b3ca8d68d5",
      "sender": "jimpo",
      "payload": "and no need to bloat CBlockIndex if people might disable it",
      "action": false,
      "timestamp": "2019-01-10T19:19:00+00:00"
    },
    {
      "id": "c4ac5c05b2c743bd9a258b234e300747",
      "sender": "sipa",
      "payload": "agree; i forgot about the possibility that even in case of it being consensus, there is no requirement to actually store the filters",
      "action": false,
      "timestamp": "2019-01-10T19:19:15+00:00"
    },
    {
      "id": "cddd4d06e84a40619ab3cb9f932108e6",
      "sender": "sipa",
      "payload": "about the difference between 1 and 2... i prefer the flat files approach slightly (the filters aren't that big that using leveldb is insurmountable, but they're still append-only data like blocks/undo)",
      "action": false,
      "timestamp": "2019-01-10T19:20:22+00:00"
    },
    {
      "id": "eeda156e48a84342851d683cf3f33ead",
      "sender": "sipa",
      "payload": "and i saw you also have a PR to abstract out the flat files stuff, which seems useful in any case",
      "action": false,
      "timestamp": "2019-01-10T19:20:43+00:00"
    },
    {
      "id": "240d37c485784a41ae4ec0ad05519d99",
      "sender": "jimpo",
      "payload": "I do agree that 2 is somewhat conceptually cleaner",
      "action": false,
      "timestamp": "2019-01-10T19:20:54+00:00"
    },
    {
      "id": "5a8e4c43e3924df594063b62b297b0c8",
      "sender": "jimpo",
      "payload": "but it does make the code more complex and is slower right now unless we add a caching layer to the flatfile stuff",
      "action": false,
      "timestamp": "2019-01-10T19:21:13+00:00"
    },
    {
      "id": "6199131e1e7443d591d904b508bcdd2f",
      "sender": "jamesob",
      "payload": "we don't know how much slower though, right? might be negligible",
      "action": false,
      "timestamp": "2019-01-10T19:21:53+00:00"
    },
    {
      "id": "0622677a54e14a79abc69d232f2ada67",
      "sender": "gmaxwell",
      "payload": "I feel sketchy about adding a requirement to store blobs in leveldb, I think in the long run we won't end up using leveldb -- we now no longer need basically any interesting properties of it, it's just a MAP on disk for us now.",
      "action": false,
      "timestamp": "2019-01-10T19:22:01+00:00"
    },
    {
      "id": "6ae1732b0f644f94b1ce9804348b5fb2",
      "sender": "gmaxwell",
      "payload": "I'm confused that its slower or at least why it would be under actual use though.",
      "action": false,
      "timestamp": "2019-01-10T19:22:24+00:00"
    },
    {
      "id": "65f1e9dd0e7f4d0396751e9374c5fcfb",
      "sender": "jamesob",
      "payload": "gmaxwell: we might use snapshotting to alleviate lock contention at some point...",
      "action": false,
      "timestamp": "2019-01-10T19:22:30+00:00"
    },
    {
      "id": "49ec6661d1ba4cf1bc0d85537e211dda",
      "sender": "gmaxwell",
      "payload": "jamesob: you wouldn't say that if you'd actually tested snapshotting.",
      "action": false,
      "timestamp": "2019-01-10T19:22:46+00:00"
    },
    {
      "id": "7e5b7cd68a1c4ccf93c1f37db4f626dc",
      "sender": "jimpo",
      "payload": "just two separate reads instead of 1 for each filter I think",
      "action": false,
      "timestamp": "2019-01-10T19:22:49+00:00"
    },
    {
      "id": "03f3c1fe7ecf484a823df46ac79e5cd8",
      "sender": "sipa",
      "payload": "gmaxwell: but do you think that choosing to use leveldb right now will complicate a hypothetical move to using something else?",
      "action": false,
      "timestamp": "2019-01-10T19:23:07+00:00"
    },
    {
      "id": "8f87e3f976a44fdebd4731b779ab4e10",
      "sender": "jimpo",
      "payload": "but there are certainly ways to reduce that overhead which I haven't experimented with",
      "action": false,
      "timestamp": "2019-01-10T19:23:12+00:00"
    },
    {
      "id": "ece4d21b6be044528b9e73805b6b7e55",
      "sender": "gmaxwell",
      "payload": "jimpo: why two seperate reads?",
      "action": false,
      "timestamp": "2019-01-10T19:23:20+00:00"
    },
    {
      "id": "ff11dd43ed0442109e21e08668e7441c",
      "sender": "jamesob",
      "payload": "1 for leveldb, then 1 for flatfile",
      "action": false,
      "timestamp": "2019-01-10T19:23:28+00:00"
    },
    {
      "id": "46689f78828b449bb32d1dc421c3d5cc",
      "sender": "jimpo",
      "payload": "first read from the leveldb index to get the disk pos, then read the filter from flatfile",
      "action": false,
      "timestamp": "2019-01-10T19:23:36+00:00"
    },
    {
      "id": "0b61073ae6ce4dd4af09338fe4166e2c",
      "sender": "sipa",
      "payload": "well the leveldb part can be in memory, no?",
      "action": false,
      "timestamp": "2019-01-10T19:23:43+00:00"
    },
    {
      "id": "f56bd8078da64007a58dbc7cd82224a8",
      "sender": "sipa",
      "payload": "like CBlockIndex is now",
      "action": false,
      "timestamp": "2019-01-10T19:23:51+00:00"
    },
    {
      "id": "56f6c7f082644f3b98e1cfa602761d68",
      "sender": "gmaxwell",
      "payload": "Ah so it's directly reading the leveldb instead of having the index in memory like the block index is.",
      "action": false,
      "timestamp": "2019-01-10T19:23:54+00:00"
    },
    {
      "id": "083bbdd2cfa04d4b890d42e95a4c78c7",
      "sender": "jimpo",
      "payload": "true, we could keep the whole index in memory",
      "action": false,
      "timestamp": "2019-01-10T19:24:19+00:00"
    },
    {
      "id": "665110ac13634d9b8a1e671f0b72faba",
      "sender": "jimpo",
      "payload": "but shouldn't that be pretty much equivalent to setting the cache on the leveldb high enough?",
      "action": false,
      "timestamp": "2019-01-10T19:24:35+00:00"
    },
    {
      "id": "c7d863515d694c85a60e85ef7a12e774",
      "sender": "gmaxwell",
      "payload": "I would be saying these pointers should just be in the blockindex. But there was some talk about switching this on and off above.",
      "action": false,
      "timestamp": "2019-01-10T19:24:36+00:00"
    },
    {
      "id": "caf1c9a3a8f5488dae44ad410761c796",
      "sender": "gmaxwell",
      "payload": "jimpo: not really, there are a bunch of overheads in the leveldb caching and it's not particularly intelligent.",
      "action": false,
      "timestamp": "2019-01-10T19:25:08+00:00"
    },
    {
      "id": "5355e93684dc416195010087a63fefad",
      "sender": "sipa",
      "payload": "also a leveldb _read_ is not a single disk access",
      "action": false,
      "timestamp": "2019-01-10T19:25:23+00:00"
    },
    {
      "id": "e3fc66975e5f4c4da13635525335f25a",
      "sender": "sipa",
      "payload": "(as opposed to something that hits a cache)",
      "action": false,
      "timestamp": "2019-01-10T19:25:37+00:00"
    },
    {
      "id": "9243de00f2ac4de1bec562df24d61f54",
      "sender": "jimpo",
      "payload": "ok",
      "action": false,
      "timestamp": "2019-01-10T19:26:03+00:00"
    },
    {
      "id": "1b8ccc707de14c349a40cc0202dbee54",
      "sender": "gmaxwell",
      "payload": "it's quasi log(n) plus a bunch of rather expensive bloom filter checks, which is why I was surprised the flatfile was slower..",
      "action": false,
      "timestamp": "2019-01-10T19:26:06+00:00"
    },
    {
      "id": "d080517039504818903ddb7dfd27eb5f",
      "sender": "sipa",
      "payload": "so with index in memory + flatfile you're guaranteed one disk seek always",
      "action": false,
      "timestamp": "2019-01-10T19:26:06+00:00"
    },
    {
      "id": "d394991fbb334e05931974d3ea12aa98",
      "sender": "gmaxwell",
      "payload": "but if your flatfile is a leveldb access plus the file now I see why it couldn't be faster.",
      "action": false,
      "timestamp": "2019-01-10T19:26:21+00:00"
    },
    {
      "id": "64a3d39835824e14b0d3196cda6d748d",
      "sender": "gmaxwell",
      "payload": "since you take the ldb overheads in both cases.",
      "action": false,
      "timestamp": "2019-01-10T19:26:32+00:00"
    },
    {
      "id": "7b58631667ee463ba1117fc14489f9d7",
      "sender": "jimpo",
      "payload": "gmaxwell yes it was leveldb + flatfile",
      "action": false,
      "timestamp": "2019-01-10T19:26:35+00:00"
    },
    {
      "id": "c6b6fcb98fde4ab29e1e441bbd0df934",
      "sender": "jimpo",
      "payload": "OK, so what if we have a leveldb index + flatfiles",
      "action": false,
      "timestamp": "2019-01-10T19:27:43+00:00"
    },
    {
      "id": "5e05aa08a89041d8a0263d5d2e37983f",
      "sender": "jimpo",
      "payload": "then if that's slow we can add logic to pull the whole leveldb index into mem like the CChain structure",
      "action": false,
      "timestamp": "2019-01-10T19:28:04+00:00"
    },
    {
      "id": "7d6a19a89bcf4c21a3fddb4e91abd8bd",
      "sender": "jimpo",
      "payload": "but as a separate structure",
      "action": false,
      "timestamp": "2019-01-10T19:28:10+00:00"
    },
    {
      "id": "4eeb92674e3f4195b691e5e7c4bb754d",
      "sender": "sipa",
      "payload": "is that easier than doing it immediately? (i'm thinking about dealing with the possibility of leveldb read failure outside of startup etc)",
      "action": false,
      "timestamp": "2019-01-10T19:28:54+00:00"
    },
    {
      "id": "f55b9912f5e845189d4d16000acd65ed",
      "sender": "jimpo",
      "payload": "yes, it definitely breaks up the size of the code change",
      "action": false,
      "timestamp": "2019-01-10T19:29:17+00:00"
    },
    {
      "id": "007fc07f77944d978f0bb88271849872",
      "sender": "gmaxwell",
      "payload": "sipa: I think right now our leveldb usage can be replaced with something that very simply serializes the things like blockindexes, and an open-hash table for the utxo set. e.g. like the one the ripple people did... and it would likely be a pretty massive speedup.   I suppose you could just convert this to a flatfile /then/, so it's not the end of the world.  We also take on some increased",
      "action": false,
      "timestamp": "2019-01-10T19:29:22+00:00"
    },
    {
      "id": "6a7ea42641c34ffe9def8bacff805a54",
      "sender": "gmaxwell",
      "payload": "Q/A,dev overhead if we start storing blobs in ldb because thats just a whole other set of access patterns that we need to worry about that might result in misbehaviors (like, what is ldb's peak memory usage look like when storing 40kb blobs in it?)",
      "action": false,
      "timestamp": "2019-01-10T19:29:22+00:00"
    },
    {
      "id": "64ee310374834da0912761f77d2c4fc4",
      "sender": "jamesob",
      "payload": "sipa: if we have leveldb read failures we've got bigger problems than serving block filters, no?",
      "action": false,
      "timestamp": "2019-01-10T19:29:51+00:00"
    },
    {
      "id": "c59df6016bc542d7a541598e75be9592",
      "sender": "jimpo",
      "payload": "is a leveldb read failure significantly more likely than a flatfile read failure?",
      "action": false,
      "timestamp": "2019-01-10T19:30:38+00:00"
    },
    {
      "id": "b3910e7564454289b464a34fc60e1b8a",
      "sender": "sipa",
      "payload": "gmaxwell: ok i see",
      "action": false,
      "timestamp": "2019-01-10T19:30:39+00:00"
    },
    {
      "id": "413699c2b3764917875b505b452c5d86",
      "sender": "sipa",
      "payload": "jimpo: it needs exception handling etc, which i remember was a pain to deal with in the UTXO code",
      "action": false,
      "timestamp": "2019-01-10T19:30:58+00:00"
    },
    {
      "id": "f0125735c7c24d21b0ff845f9a7481f2",
      "sender": "wumpus",
      "payload": "doesn't all i/o need error handling?",
      "action": false,
      "timestamp": "2019-01-10T19:31:43+00:00"
    },
    {
      "id": "ca831ffe480943848dd266c26d97a1f4",
      "sender": "jimpo",
      "payload": "I guess flatfile accesses just return error codes or null vs throwing exceptions? is that what you're saying sipa?",
      "action": false,
      "timestamp": "2019-01-10T19:32:11+00:00"
    },
    {
      "id": "7a4d5418711a4c33bea956d893c28640",
      "sender": "sipa",
      "payload": "sure, but an \"if (!read) return false\" in the startup code is easier than a wrapper database object that catches exceptions etc",
      "action": false,
      "timestamp": "2019-01-10T19:32:22+00:00"
    },
    {
      "id": "de293b68f64a4d3b95f85bcc3a4f16e0",
      "sender": "wumpus",
      "payload": "oh sure the way in which errors are reported will differ",
      "action": false,
      "timestamp": "2019-01-10T19:32:35+00:00"
    },
    {
      "id": "87a4935f4e97449ea347dfac3343c182",
      "sender": "sipa",
      "payload": "anyway, i'm fine with leveldb index + flatfiles, and moving the load into RAM to a later chance",
      "action": false,
      "timestamp": "2019-01-10T19:32:58+00:00"
    },
    {
      "id": "d7d43572bfab4a319bc2060df8c4741f",
      "sender": "wumpus",
      "payload": "one thing at least, for the first iteration it's useful to keep the amount of new code minimal",
      "action": false,
      "timestamp": "2019-01-10T19:33:26+00:00"
    },
    {
      "id": "a8225d8752fe45e9b67207711ae9d1f4",
      "sender": "sipa",
      "payload": "performance at this point doesn't matter that much for this application, but it's nice that in the future it wouldn't be a compatibility break",
      "action": false,
      "timestamp": "2019-01-10T19:33:28+00:00"
    },
    {
      "id": "325faf5ca9c94aea9266f230fc49a719",
      "sender": "gmaxwell",
      "payload": "is the only reason to not store it in the blockindex is to just avoid the size of the blockindex objects increasing when the filter isn't used?",
      "action": false,
      "timestamp": "2019-01-10T19:33:45+00:00"
    },
    {
      "id": "1ba6ea7005934f17876abfca3d18e7ba",
      "sender": "jimpo",
      "payload": "potentially if core supports multiple filter types (dunno how likely that is?)",
      "action": false,
      "timestamp": "2019-01-10T19:34:17+00:00"
    },
    {
      "id": "604457c23e804d389131d5f482acba4e",
      "sender": "sipa",
      "payload": "jimpo: also to simplify building it in the background, i guess?",
      "action": false,
      "timestamp": "2019-01-10T19:34:33+00:00"
    },
    {
      "id": "ec4af52d293b49879dde98ede4c37b30",
      "sender": "wumpus",
      "payload": "so if using leveldb results in much less code than implementing some manual file handling, that might be handier for review, as said it can be optimized later",
      "action": false,
      "timestamp": "2019-01-10T19:34:41+00:00"
    },
    {
      "id": "382d05a99f884afd80d9346784b23a9a",
      "sender": "gmaxwell",
      "payload": "it won't be.",
      "action": false,
      "timestamp": "2019-01-10T19:35:30+00:00"
    },
    {
      "id": "d21b9a71a28c4c15bc11e47c0907e277",
      "sender": "jimpo",
      "payload": "it's a few hundred more lines",
      "action": false,
      "timestamp": "2019-01-10T19:36:10+00:00"
    },
    {
      "id": "63fded2cf0294154835b57f5aeb21806",
      "sender": "jimpo",
      "payload": "*after* the flatfile refactor",
      "action": false,
      "timestamp": "2019-01-10T19:36:18+00:00"
    },
    {
      "id": "cb39e1136dc3403995568e82673abab8",
      "sender": "wumpus",
      "payload": "as long as you don't end up rolling your own k/v store",
      "action": false,
      "timestamp": "2019-01-10T19:36:20+00:00"
    },
    {
      "id": "4cafeddcf41349a889d96b5581001189",
      "sender": "jimpo",
      "payload": "but I think the refactor is good to do anyway",
      "action": false,
      "timestamp": "2019-01-10T19:36:44+00:00"
    },
    {
      "id": "c916bf3b2c104353bfe550b4115333ad",
      "sender": "jamesob",
      "payload": "agree with that",
      "action": false,
      "timestamp": "2019-01-10T19:36:55+00:00"
    },
    {
      "id": "c52a00b8210644a1843e95e0ad8095db",
      "sender": "sipa",
      "payload": "agree, yes",
      "action": false,
      "timestamp": "2019-01-10T19:37:18+00:00"
    },
    {
      "id": "764af329cd4b490eb4d0dca6b9b70f91",
      "sender": "sipa",
      "payload": "gmaxwell: what makes you say so?",
      "action": false,
      "timestamp": "2019-01-10T19:37:28+00:00"
    },
    {
      "id": "8bd858887c4e4f0191ba464da0a84416",
      "sender": "gmaxwell",
      "payload": "The whole process of making these things super optional seems to add a lot of complexity. If instead we didn't think of it that way the filters could just be handled right along side, say, undo data.",
      "action": false,
      "timestamp": "2019-01-10T19:37:50+00:00"
    },
    {
      "id": "5c04cf3f60354ca69d18c083de6a813a",
      "sender": "jimpo",
      "payload": "eh, depends how you think about complexity",
      "action": false,
      "timestamp": "2019-01-10T19:38:21+00:00"
    },
    {
      "id": "4fde2fd0655b4a69a0f68d3418557438",
      "sender": "jimpo",
      "payload": "I consider adding more stuff to CBlockIndex to be more complex than a separate, asynchronous system",
      "action": false,
      "timestamp": "2019-01-10T19:38:36+00:00"
    },
    {
      "id": "77aae55531b54604adf5267ba8cb8d40",
      "sender": "sipa",
      "payload": "gmaxwell: agree, it adds complexity to make it optional and separate, but that's a different question than whether or not everything should be in leveldb or partially in flat files",
      "action": false,
      "timestamp": "2019-01-10T19:38:54+00:00"
    },
    {
      "id": "3e888ffc10d64c4282014f6089b75f09",
      "sender": "jimpo",
      "payload": "otherwise it involves messing around with validation code before there's even a consensus change",
      "action": false,
      "timestamp": "2019-01-10T19:39:05+00:00"
    },
    {
      "id": "271e141ed55348fdb48f44bde754863c",
      "sender": "gmaxwell",
      "payload": "If I drop out support for upgrades and what not, I believe I could add support for including indexes with two dozen lines of code.  Obviously not a fair comparison.",
      "action": false,
      "timestamp": "2019-01-10T19:39:05+00:00"
    },
    {
      "id": "67b39f72fe9842b5a5c45cef4fc36d8d",
      "sender": "wumpus",
      "payload": "right, with decoupling at least changes can be localized and contained, instead of tying everything together",
      "action": false,
      "timestamp": "2019-01-10T19:39:06+00:00"
    },
    {
      "id": "b4e9c0a70b654129b97ad250fbeda640",
      "sender": "gmaxwell",
      "payload": "But building a pile of logical abstractions that add layers and layers is not actually a reduction in complexity.",
      "action": false,
      "timestamp": "2019-01-10T19:39:25+00:00"
    },
    {
      "id": "e7ac840467c8468aaffa017aba5a7d3e",
      "sender": "wumpus",
      "payload": "exactly jimpo",
      "action": false,
      "timestamp": "2019-01-10T19:39:32+00:00"
    },
    {
      "id": "cb0858ad99984311a49c6e84fba19c22",
      "sender": "gmaxwell",
      "payload": "It's decomplexity theater.",
      "action": false,
      "timestamp": "2019-01-10T19:39:34+00:00"
    },
    {
      "id": "ccf9b0c3e5494e508215f237a46cf13a",
      "sender": "sipa",
      "payload": "please",
      "action": false,
      "timestamp": "2019-01-10T19:39:40+00:00"
    },
    {
      "id": "d138efc0145a4fd2b559244beb786606",
      "sender": "wumpus",
      "payload": "is that what he's doing?",
      "action": false,
      "timestamp": "2019-01-10T19:39:55+00:00"
    },
    {
      "id": "be3961095c74483f9b90147f917d5553",
      "sender": "jimpo",
      "payload": "rich hickey would disagree, I think",
      "action": false,
      "timestamp": "2019-01-10T19:40:13+00:00"
    },
    {
      "id": "e2a83eb59537451db5ded953c47a6e3c",
      "sender": "gmaxwell",
      "payload": "and then we just spend our entire lives on pointless refactors shifting around the deckchairs on this fractal of layers, while seldom actually advancing visible functionality, which is exactly what the project has been doing for the last year.",
      "action": false,
      "timestamp": "2019-01-10T19:40:57+00:00"
    },
    {
      "id": "6b7e9fccc43d4f24b18f4a4004641a1a",
      "sender": "wumpus",
      "payload": "I don't think this is construcive anymore",
      "action": false,
      "timestamp": "2019-01-10T19:41:10+00:00"
    },
    {
      "id": "d9e02b1f62764cdea826e492d17d254f",
      "sender": "wumpus",
      "payload": "any other topics?",
      "action": false,
      "timestamp": "2019-01-10T19:41:14+00:00"
    },
    {
      "id": "636b8ac1ddc0418eb316b9b66a542084",
      "sender": "jonasschnelli",
      "payload": "rw_config INI vs UniValue",
      "action": false,
      "timestamp": "2019-01-10T19:41:29+00:00"
    },
    {
      "id": "e09ce1874a6b4caea860760ebe70b101",
      "sender": "jamesob",
      "payload": "operation of cblockindex is consensus critical; atm serving filter blocks is not => decoupling failure of the optional feature from the critical one is safer",
      "action": false,
      "timestamp": "2019-01-10T19:41:36+00:00"
    },
    {
      "id": "46032210badf461abb675eefa3f49bbd",
      "sender": "wumpus",
      "payload": "#topic rw_config INI vs UniValue (jonasschnelli)",
      "action": false,
      "timestamp": "2019-01-10T19:41:49+00:00"
    },
    {
      "id": "0cff35a0e5e3417ea0aebaabb6dab81a",
      "sender": "jonasschnelli",
      "payload": "https://github.com/bitcoin/bitcoin/pull/11082#issuecomment-451406061",
      "action": false,
      "timestamp": "2019-01-10T19:41:53+00:00"
    },
    {
      "id": "6404e5ca4d2043c7879a07298d62f73b",
      "sender": "jonasschnelli",
      "payload": "The current rw_config PR from luke-jr uses .INI file structure (own parser)...",
      "action": false,
      "timestamp": "2019-01-10T19:42:13+00:00"
    },
    {
      "id": "700090bb34154848a3c42dfb30cca207",
      "sender": "jonasschnelli",
      "payload": "The question is, if a simple JSON file wouldn't be simpler and more stable",
      "action": false,
      "timestamp": "2019-01-10T19:42:29+00:00"
    },
    {
      "id": "ed6d1c838af9453f93c484c79cb11a90",
      "sender": "wumpus",
      "payload": "jamesob: FWIW I agree, as long as it is not consensus critical, it's better to have it separate from the consensus critical code, this was the same idea with separating out the other indexes",
      "action": false,
      "timestamp": "2019-01-10T19:42:39+00:00"
    },
    {
      "id": "b90ebe0d09c24078a8bc7210b030789b",
      "sender": "wumpus",
      "payload": "but apparently all of that was pointless \u00c3\u00a2\u00c2\u0080\u00c2\u0094",
      "action": false,
      "timestamp": "2019-01-10T19:43:08+00:00"
    },
    {
      "id": "c69313db26cb4165a867f1ca9d99a257",
      "sender": "jimpo",
      "payload": "JSON is somewhat less human-readable IMO",
      "action": false,
      "timestamp": "2019-01-10T19:43:14+00:00"
    },
    {
      "id": "eaac5d8940b54148b58eaa809a1ceb18",
      "sender": "jonasschnelli",
      "payload": "Yes. But should its main focus be human editable / readable?",
      "action": false,
      "timestamp": "2019-01-10T19:43:38+00:00"
    },
    {
      "id": "11c08af2c2044b2297d2ef58a917035d",
      "sender": "jamesob",
      "payload": "also more annoying to write (e.g. trailing commas on last key causes errors)",
      "action": false,
      "timestamp": "2019-01-10T19:43:46+00:00"
    },
    {
      "id": "0f82982db36b4f5894d1865d1671ab29",
      "sender": "jonasschnelli",
      "payload": "I think using a JSON file is more straight forward since we have the parser/writer logic in place (rather then adding another file format)",
      "action": false,
      "timestamp": "2019-01-10T19:45:44+00:00"
    },
    {
      "id": "cb7be28db1fc42228c64a24347e2633d",
      "sender": "jonasschnelli",
      "payload": "Also, the rw_configs focus AFAIK is \"edit through the application layer\" rather then manually with a text editor",
      "action": false,
      "timestamp": "2019-01-10T19:46:14+00:00"
    },
    {
      "id": "59ed2abfbda8440090137442f8a9c22b",
      "sender": "ryanofsky",
      "payload": "the question isn't really \"do you like ini or json better?\" the question is how do you want to replace QSettings? with a new ini parser, or existing ini parser, or with existing univalue parser?",
      "action": false,
      "timestamp": "2019-01-10T19:46:20+00:00"
    },
    {
      "id": "9b3683acd51a417e922cc7c25ff73e93",
      "sender": "jamesob",
      "payload": "I'm in favor of whatever is less code",
      "action": false,
      "timestamp": "2019-01-10T19:46:34+00:00"
    },
    {
      "id": "b26dac8906474686b5072682530bee28",
      "sender": "jonasschnelli",
      "payload": "UniValue is very likely less code",
      "action": false,
      "timestamp": "2019-01-10T19:46:54+00:00"
    },
    {
      "id": "53ffc5f139054a60ab3c585294c65f2d",
      "sender": "jimpo",
      "payload": "Yeah, I'm on board with JSON",
      "action": false,
      "timestamp": "2019-01-10T19:47:17+00:00"
    },
    {
      "id": "41d86d992bb04aed80453c4ad06740af",
      "sender": "jonasschnelli",
      "payload": "But maybe we pick up the discussion when luke-jr is back or \u00c3\u00a2\u00c2\u0080\u00c2\u0093 if you care \u00c3\u00a2\u00c2\u0080\u00c2\u0093 comment on the PR",
      "action": false,
      "timestamp": "2019-01-10T19:47:33+00:00"
    },
    {
      "id": "fbfde348a49e47e0b8b3947aab904387",
      "sender": "jonasschnelli",
      "payload": "other topics?",
      "action": false,
      "timestamp": "2019-01-10T19:49:12+00:00"
    },
    {
      "id": "8eb96fcef00f4a2fb66f53787ef4ab90",
      "sender": "jamesob",
      "payload": "so can we proceed on jimpo's option (2), i.e. indexing in ldb and storing filters in flatfiles?",
      "action": false,
      "timestamp": "2019-01-10T19:49:33+00:00"
    },
    {
      "id": "5c96a43ebc424bdea6c2f9910db336e3",
      "sender": "wumpus",
      "payload": "jamesob | I'm in favor of whatever is less code   <- same",
      "action": false,
      "timestamp": "2019-01-10T19:50:33+00:00"
    },
    {
      "id": "fb3e8dabc55b4758b07a2e8c5ae87d99",
      "sender": "wumpus",
      "payload": "no other topics?",
      "action": false,
      "timestamp": "2019-01-10T19:51:16+00:00"
    },
    {
      "id": "37a0d996fc964c59a473bf838c58541b",
      "sender": "jnewbery",
      "payload": "reminder: wallet IRC meeting tomorrow",
      "action": false,
      "timestamp": "2019-01-10T19:51:44+00:00"
    },
    {
      "id": "d68ab3f5efb3419bb8bb7e06f02545c2",
      "sender": "wumpus",
      "payload": "#endmeeting",
      "action": false,
      "timestamp": "2019-01-10T19:52:52+00:00"
    }
  ],
  "events": [
    {
      "event_type": "START_MEETING",
      "message": {
        "id": "dccc829fa83148faa7580e9594fe6869",
        "sender": "wumpus",
        "payload": "#startmeeting",
        "action": false,
        "timestamp": "2019-01-10T19:00:32+00:00"
      },
      "operand": null,
      "id": "dccc829fa83148faa7580e9594fe6869",
      "timestamp": "2019-01-10T19:00:32+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "0073b33b3a67464998bc3db4a7d5751f",
        "sender": "instagibbs",
        "payload": "https://github.com/achow101/HWI",
        "action": false,
        "timestamp": "2019-01-10T19:02:25+00:00"
      },
      "operand": "https://github.com/achow101/HWI",
      "id": "0073b33b3a67464998bc3db4a7d5751f",
      "timestamp": "2019-01-10T19:02:25+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "450904555efc468c8747d4ced9908ad7",
        "sender": "wumpus",
        "payload": "#topic high priority for review",
        "action": false,
        "timestamp": "2019-01-10T19:02:47+00:00"
      },
      "operand": "high priority for review",
      "id": "450904555efc468c8747d4ced9908ad7",
      "timestamp": "2019-01-10T19:02:47+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "db920278ca524df79e9e6d2eb12d91a4",
        "sender": "wumpus",
        "payload": "https://github.com/bitcoin/bitcoin/projects/8",
        "action": false,
        "timestamp": "2019-01-10T19:02:54+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/projects/8",
      "id": "db920278ca524df79e9e6d2eb12d91a4",
      "timestamp": "2019-01-10T19:02:54+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "f729e7b7025e4df6be3fe4a5bc0d314f",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/14955 | Switch all RNG code to the built-in PRNG by sipa \u00c3\u0082\u00c2\u00b7 Pull Request #14955 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-01-10T19:03:06+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/14955",
      "id": "f729e7b7025e4df6be3fe4a5bc0d314f",
      "timestamp": "2019-01-10T19:03:06+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "0eae0b3953a249d8bb7a26fccb1a1c53",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/11082 | Add new bitcoin_rw.conf file that is used for settings modified by this software itself by luke-jr \u00c3\u0082\u00c2\u00b7 Pull Request #11082 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-01-10T19:03:36+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/11082",
      "id": "0eae0b3953a249d8bb7a26fccb1a1c53",
      "timestamp": "2019-01-10T19:03:36+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "6e43b433aa8c42cfb18083c3db838d3b",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/14491 | Allow descriptor imports with importmulti by MeshCollider \u00c3\u0082\u00c2\u00b7 Pull Request #14491 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-01-10T19:03:38+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/14491",
      "id": "6e43b433aa8c42cfb18083c3db838d3b",
      "timestamp": "2019-01-10T19:03:38+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "ff7f05e5f24840d7ad369a0f6fa5768c",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/14711 | Remove uses of chainActive and mapBlockIndex in wallet code by ryanofsky \u00c3\u0082\u00c2\u00b7 Pull Request #14711 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-01-10T19:03:41+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/14711",
      "id": "ff7f05e5f24840d7ad369a0f6fa5768c",
      "timestamp": "2019-01-10T19:03:41+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "4d17c3a212b84875aa71dfbbafd17bbf",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/14941 | rpc: Make unloadwallet wait for complete wallet unload by promag \u00c3\u0082\u00c2\u00b7 Pull Request #14941 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-01-10T19:03:43+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/14941",
      "id": "4d17c3a212b84875aa71dfbbafd17bbf",
      "timestamp": "2019-01-10T19:03:43+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "9615585e1f5947498939734a00e9b68b",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/14938 | Support creating an empty wallet by Sjors \u00c3\u0082\u00c2\u00b7 Pull Request #14938 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-01-10T19:03:45+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/14938",
      "id": "9615585e1f5947498939734a00e9b68b",
      "timestamp": "2019-01-10T19:03:45+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "947a1caa45294b81b6313ee317e61f9e",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/15141 | Rewrite DoS interface between validation and net_processing by sdaftuar \u00c3\u0082\u00c2\u00b7 Pull Request #15141 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-01-10T19:04:08+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/15141",
      "id": "947a1caa45294b81b6313ee317e61f9e",
      "timestamp": "2019-01-10T19:04:08+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "d58118c77cca4b5d810611fc97597b78",
        "sender": "wumpus",
        "payload": "#topic moving hwi under bitcoin-core org (achow101)",
        "action": false,
        "timestamp": "2019-01-10T19:06:10+00:00"
      },
      "operand": "moving hwi under bitcoin-core org (achow101)",
      "id": "d58118c77cca4b5d810611fc97597b78",
      "timestamp": "2019-01-10T19:06:10+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "93220d2e5b9d43dbbc58fc7c91c75e46",
        "sender": "wumpus",
        "payload": "#link https://github.com/achow101/HWI",
        "action": false,
        "timestamp": "2019-01-10T19:06:46+00:00"
      },
      "operand": "https://github.com/achow101/HWI",
      "id": "93220d2e5b9d43dbbc58fc7c91c75e46",
      "timestamp": "2019-01-10T19:06:46+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "9669f8d8cd5a49cf93dae79dbe42411c",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/11082 | Add new bitcoin_rw.conf file that is used for settings modified by this software itself by luke-jr \u00c3\u0082\u00c2\u00b7 Pull Request #11082 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-01-10T19:06:50+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/11082",
      "id": "9669f8d8cd5a49cf93dae79dbe42411c",
      "timestamp": "2019-01-10T19:06:50+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "d99d5016f172473a855b4d677c13d173",
        "sender": "instagibbs",
        "payload": "https://github.com/achow101/HWI/issues/91 for further background",
        "action": false,
        "timestamp": "2019-01-10T19:09:31+00:00"
      },
      "operand": "https://github.com/achow101/HWI/issues/91",
      "id": "d99d5016f172473a855b4d677c13d173",
      "timestamp": "2019-01-10T19:09:31+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "7296e20dfe164446a0293edfdf363896",
        "sender": "jnewbery",
        "payload": "#link https://help.github.com/articles/transferring-a-repository/",
        "action": false,
        "timestamp": "2019-01-10T19:10:53+00:00"
      },
      "operand": "https://help.github.com/articles/transferring-a-repository/",
      "id": "7296e20dfe164446a0293edfdf363896",
      "timestamp": "2019-01-10T19:10:53+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "79e5ae2fdd934a3196406fc216dedb17",
        "sender": "jonasschnelli",
        "payload": "https://github.com/bitcoin/bitcoin/pull/11082#issuecomment-451406061",
        "action": false,
        "timestamp": "2019-01-10T19:12:46+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/pull/11082#issuecomment-451406061",
      "id": "79e5ae2fdd934a3196406fc216dedb17",
      "timestamp": "2019-01-10T19:12:46+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "3a714acd39a344d8aabbeb261e598864",
        "sender": "wumpus",
        "payload": "#topic BIP 157 index leveldb vs flatfiles (jimpo)",
        "action": false,
        "timestamp": "2019-01-10T19:12:58+00:00"
      },
      "operand": "BIP 157 index leveldb vs flatfiles (jimpo)",
      "id": "3a714acd39a344d8aabbeb261e598864",
      "timestamp": "2019-01-10T19:12:58+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "68bc71b320af45608bcbb914179ff089",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/14121 | Index for BIP 157 block filters by jimpo \u00c3\u0082\u00c2\u00b7 Pull Request #14121 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-01-10T19:13:03+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/14121",
      "id": "68bc71b320af45608bcbb914179ff089",
      "timestamp": "2019-01-10T19:13:03+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "a12d88e7a0d146ef9502ed14f21cf579",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/3 | Encrypt wallet \u00c3\u0082\u00c2\u00b7 Issue #3 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2019-01-10T19:14:30+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/3",
      "id": "a12d88e7a0d146ef9502ed14f21cf579",
      "timestamp": "2019-01-10T19:14:30+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "46032210badf461abb675eefa3f49bbd",
        "sender": "wumpus",
        "payload": "#topic rw_config INI vs UniValue (jonasschnelli)",
        "action": false,
        "timestamp": "2019-01-10T19:41:49+00:00"
      },
      "operand": "rw_config INI vs UniValue (jonasschnelli)",
      "id": "46032210badf461abb675eefa3f49bbd",
      "timestamp": "2019-01-10T19:41:49+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "0cff35a0e5e3417ea0aebaabb6dab81a",
        "sender": "jonasschnelli",
        "payload": "https://github.com/bitcoin/bitcoin/pull/11082#issuecomment-451406061",
        "action": false,
        "timestamp": "2019-01-10T19:41:53+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/pull/11082#issuecomment-451406061",
      "id": "0cff35a0e5e3417ea0aebaabb6dab81a",
      "timestamp": "2019-01-10T19:41:53+00:00"
    },
    {
      "event_type": "END_MEETING",
      "message": {
        "id": "d68ab3f5efb3419bb8bb7e06f02545c2",
        "sender": "wumpus",
        "payload": "#endmeeting",
        "action": false,
        "timestamp": "2019-01-10T19:52:52+00:00"
      },
      "operand": null,
      "id": "d68ab3f5efb3419bb8bb7e06f02545c2",
      "timestamp": "2019-01-10T19:52:52+00:00"
    }
  ],
  "aliases": {},
  "vote_in_progress": false,
  "motion_index": null
}