{
  "founder": "wumpus",
  "channel": "#bitcoin-core-dev",
  "network": "freenode",
  "id": "ae7be6f21eb74256863d101e47612a69",
  "name": "#bitcoin-core-dev",
  "chair": "wumpus",
  "chairs": [
    "wumpus"
  ],
  "nicks": {
    "wumpus": 87,
    "lightningbot": 2,
    "luke-jr": 12,
    "gmaxwell": 58,
    "cfields": 20,
    "morcos": 18,
    "gribble": 4,
    "paveljanik": 5,
    "kanzure": 3,
    "petertodd": 5,
    "sipa": 66,
    "jonasschnelli": 15,
    "jtimon": 12,
    "achow101": 4,
    "CodeShark": 1,
    "instagibbs": 9,
    "rabidus": 1,
    "bitcoin-git": 1,
    "Victorsueca": 6
  },
  "start_time": "2017-02-16T19:02:37+00:00",
  "end_time": "2017-02-16T20:01:55+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: https://botbot.me/freenode/bitcoin-core-dev, http://www.erisian.com.au/bitcoin-core-dev/",
  "current_topic": "clocks",
  "messages": [
    {
      "id": "a0965e2817dc4cccbcf1cecd9d33472c",
      "sender": "wumpus",
      "payload": "#startmeeting",
      "action": false,
      "timestamp": "2017-02-16T19:02:37+00:00"
    },
    {
      "id": "71ed844a48934579b3e24a4349defc27",
      "sender": "lightningbot",
      "payload": "Meeting started Thu Feb 16 19:02:37 2017 UTC.  The chair is wumpus. Information about MeetBot at http://wiki.debian.org/MeetBot.",
      "action": false,
      "timestamp": "2017-02-16T19:02:37+00:00"
    },
    {
      "id": "07da9525785445f0b462b08a43a54799",
      "sender": "lightningbot",
      "payload": "Useful Commands: #action #agreed #help #info #idea #link #topic.",
      "action": false,
      "timestamp": "2017-02-16T19:02:37+00:00"
    },
    {
      "id": "ecd5d2ad2e60441d9e7a12fd1892ca80",
      "sender": "wumpus",
      "payload": "jonasschnelli: well it's a magic option value but it's only for the option, it doesn't get represented internally as 1",
      "action": false,
      "timestamp": "2017-02-16T19:02:58+00:00"
    },
    {
      "id": "9d699de6c4f744758cab71ecec53c582",
      "sender": "luke-jr",
      "payload": "tbh, I've had second thoughts about the manual pruning design (seems it'd be nicer to do \"automatic pruning always, but with named barriers that must confirm being done up to <height> before pruning it\"), but that's beyond this topic",
      "action": false,
      "timestamp": "2017-02-16T19:03:01+00:00"
    },
    {
      "id": "3b1d7038a1c84d88b17328d8f11e3e29",
      "sender": "wumpus",
      "payload": "jonasschnelli: I think the reason or choosing 1 was that -prune will work",
      "action": false,
      "timestamp": "2017-02-16T19:03:18+00:00"
    },
    {
      "id": "af6064544040443ba1e8aaae749d854e",
      "sender": "wumpus",
      "payload": "luke-jr: I like the current manual pruning from an API point of view",
      "action": false,
      "timestamp": "2017-02-16T19:03:27+00:00"
    },
    {
      "id": "7137d908bbdf46ca911748739873e801",
      "sender": "luke-jr",
      "payload": "s/always/always in pruning mode/",
      "action": false,
      "timestamp": "2017-02-16T19:03:28+00:00"
    },
    {
      "id": "060458cfec0342dfada8fb9ad72a46e3",
      "sender": "gmaxwell",
      "payload": "#bitcoin-core-dev Meeting: wumpus sipa gmaxwell jonasschnelli morcos luke-jr btcdrak sdaftuar jtimon cfields petertodd kanzure bluematt instagibbs phantomcircuit codeshark michagogo marcofalke paveljanik NicolasDorier",
      "action": false,
      "timestamp": "2017-02-16T19:03:33+00:00"
    },
    {
      "id": "30baf374b4314b2c84bd7014122988b3",
      "sender": "luke-jr",
      "payload": "wumpus: yes, but it doesn't scale well if you have 2 external apps using the node",
      "action": false,
      "timestamp": "2017-02-16T19:03:44+00:00"
    },
    {
      "id": "caa5fa76f07f4945b6c71ffb6524bea8",
      "sender": "cfields",
      "payload": "hi",
      "action": false,
      "timestamp": "2017-02-16T19:04:02+00:00"
    },
    {
      "id": "7327e610a8ee4795acd9362550ed52f5",
      "sender": "wumpus",
      "payload": "luke-jr: it's very simple. Automatic pruning is disabled and the client/admin can choose what to prune. Also useful for testing the pruning stuff without too much complexity",
      "action": false,
      "timestamp": "2017-02-16T19:04:05+00:00"
    },
    {
      "id": "a531550f32ae49f1ac6bcb6632714762",
      "sender": "wumpus",
      "payload": "luke-jr: the implementation is convoluted though",
      "action": false,
      "timestamp": "2017-02-16T19:04:12+00:00"
    },
    {
      "id": "eac17496674c452b82091cf340b7577f",
      "sender": "morcos",
      "payload": "wumpus: i think two more are needed for 0.14, both very small  #9760 and #9761  (9761 is already included in one of the marked ones)",
      "action": false,
      "timestamp": "2017-02-16T19:04:16+00:00"
    },
    {
      "id": "4a6d0f292f1a4777b9419c679c87b636",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/9760 | [wallet] Remove importmulti always-true check by ryanofsky \u00c3\u0082\u00c2\u00b7 Pull Request #9760 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2017-02-16T19:04:17+00:00"
    },
    {
      "id": "7a0568c4398f4bdaa2c71e39ade17024",
      "sender": "paveljanik",
      "payload": "proposed topic: release status, where can we help...",
      "action": false,
      "timestamp": "2017-02-16T19:04:18+00:00"
    },
    {
      "id": "6aa41e1c92f94ed2842d4b352bf9de1c",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/9761 | Use 2 hour grace period for key timestamps in importmulti rescans by ryanofsky \u00c3\u0082\u00c2\u00b7 Pull Request #9761 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2017-02-16T19:04:19+00:00"
    },
    {
      "id": "6c211fc262454816b8ea40157f053a40",
      "sender": "wumpus",
      "payload": "luke-jr: but I'm happy someone implemented it anyhow",
      "action": false,
      "timestamp": "2017-02-16T19:04:22+00:00"
    },
    {
      "id": "61fa888eac604eb6af5ca6ccc5113e8b",
      "sender": "luke-jr",
      "payload": "nods",
      "action": true,
      "timestamp": "2017-02-16T19:04:27+00:00"
    },
    {
      "id": "eae8ab94141f458cad148b3aeb7d8e7c",
      "sender": "kanzure",
      "payload": "hi.",
      "action": false,
      "timestamp": "2017-02-16T19:04:41+00:00"
    },
    {
      "id": "e57e6851558745f599c5b377afe972b5",
      "sender": "petertodd",
      "payload": "wumpus: same: my OpenTimestamps servers actually need this feature",
      "action": false,
      "timestamp": "2017-02-16T19:04:47+00:00"
    },
    {
      "id": "39ceb219a9a244b4a8c6a39aeb20b5f0",
      "sender": "wumpus",
      "payload": "release status: running as hard as we can but staying in the same place",
      "action": false,
      "timestamp": "2017-02-16T19:04:58+00:00"
    },
    {
      "id": "d845e7af28354ba1a2a5c988fa1cde02",
      "sender": "sipa",
      "payload": "i think we're very close.",
      "action": false,
      "timestamp": "2017-02-16T19:05:09+00:00"
    },
    {
      "id": "ffe4f7a8ed2c4ba7a9da8b91ea048e84",
      "sender": "morcos",
      "payload": "wumpus: boo!  we're not staying in the same place",
      "action": false,
      "timestamp": "2017-02-16T19:05:13+00:00"
    },
    {
      "id": "cf412cd795ca4400a28416ad513ac59a",
      "sender": "gmaxwell",
      "payload": "I am becoming increasingly happy with the release.",
      "action": false,
      "timestamp": "2017-02-16T19:05:19+00:00"
    },
    {
      "id": "4d288c9fb17a41c897750f3c6eef684a",
      "sender": "sipa",
      "payload": "let's be optimistic: everything we're fixing is an improvememt",
      "action": false,
      "timestamp": "2017-02-16T19:05:29+00:00"
    },
    {
      "id": "3a384cb3781c4e5c88ea523c809b70e9",
      "sender": "gmaxwell",
      "payload": "Two weeks ago I was chewing my nails feeling like we were at risk of shipping something that wouldn't meet our standards of quality, and now I am not worried. :)",
      "action": false,
      "timestamp": "2017-02-16T19:05:51+00:00"
    },
    {
      "id": "45c262149a204cf7a027b8d22bc9671a",
      "sender": "jonasschnelli",
      "payload": "hah. Good.",
      "action": false,
      "timestamp": "2017-02-16T19:06:05+00:00"
    },
    {
      "id": "3bf60b3924bd44e9835566bf0231b858",
      "sender": "wumpus",
      "payload": "but I think we need to decide when we can do release candidate 1, which is a test release anyway, when rc1 is out it's bound to find more issues",
      "action": false,
      "timestamp": "2017-02-16T19:06:06+00:00"
    },
    {
      "id": "ba565d2450d847b780f0f26d6fbed1da",
      "sender": "sipa",
      "payload": "i think we can do rc1 today?",
      "action": false,
      "timestamp": "2017-02-16T19:06:32+00:00"
    },
    {
      "id": "526b01a23fc14616b6289b0bf3cf3ab9",
      "sender": "gmaxwell",
      "payload": "I would be fine doing it _now_, now.  There are AFAIK not anything in the pipe which are disruptive enough issues that they'd degrade our rc1 learning, though a rc2 will be guarenteed.",
      "action": false,
      "timestamp": "2017-02-16T19:06:52+00:00"
    },
    {
      "id": "f475610a20be445cbbfb116b5069e760",
      "sender": "paveljanik",
      "payload": "rc1 for the weekend is fine!",
      "action": false,
      "timestamp": "2017-02-16T19:06:53+00:00"
    },
    {
      "id": "8b52a9a2095b4bf899d90e915d24b5ee",
      "sender": "sipa",
      "payload": "or at least branch off today",
      "action": false,
      "timestamp": "2017-02-16T19:06:56+00:00"
    },
    {
      "id": "75477437b7de42849800c2c36d2a70a1",
      "sender": "luke-jr",
      "payload": "I don't think we have any critical problems blocking a rc1",
      "action": false,
      "timestamp": "2017-02-16T19:06:59+00:00"
    },
    {
      "id": "23f508acb007457d89dd805263208600",
      "sender": "jtimon",
      "payload": "sipa: why branch of if we can't rc1 ?",
      "action": false,
      "timestamp": "2017-02-16T19:07:17+00:00"
    },
    {
      "id": "937f4858b72b4a4cb264e742e387717b",
      "sender": "wumpus",
      "payload": "I don't think so either",
      "action": false,
      "timestamp": "2017-02-16T19:07:19+00:00"
    },
    {
      "id": "77deff37aec248a98af74079d57d329d",
      "sender": "cfields",
      "payload": "no more blockers from me either",
      "action": false,
      "timestamp": "2017-02-16T19:07:24+00:00"
    },
    {
      "id": "501bf68cebbb499fb3fcd32a9f15a8e2",
      "sender": "luke-jr",
      "payload": "jtimon: to begin merging for 0.15?",
      "action": false,
      "timestamp": "2017-02-16T19:07:26+00:00"
    },
    {
      "id": "bd91039beace4295b532a667df5d2bc8",
      "sender": "wumpus",
      "payload": "right, because more and more pulls for 0.15 are waiting",
      "action": false,
      "timestamp": "2017-02-16T19:07:40+00:00"
    },
    {
      "id": "14b160c220f44b47afdc6de2c2a5b945",
      "sender": "jtimon",
      "payload": "nods",
      "action": true,
      "timestamp": "2017-02-16T19:07:40+00:00"
    },
    {
      "id": "671a7dc0c99d41ca8624ff7f78d57c86",
      "sender": "jonasschnelli",
      "payload": "IMO the two import multi fixes are not critical and can go in after rc1 (or even in 0.15 in the worst case).",
      "action": false,
      "timestamp": "2017-02-16T19:07:58+00:00"
    },
    {
      "id": "3a99cc3594414f669b3688f440323bd0",
      "sender": "gmaxwell",
      "payload": "all you naughty people not banging away at getting 0.14 ready to go.",
      "action": false,
      "timestamp": "2017-02-16T19:08:08+00:00"
    },
    {
      "id": "246f83513b814193a30ef85b0e797802",
      "sender": "morcos",
      "payload": "jonasschnelli: well lets decide that",
      "action": false,
      "timestamp": "2017-02-16T19:08:29+00:00"
    },
    {
      "id": "fa09c535873c42f193e740c5baceee3d",
      "sender": "gmaxwell",
      "payload": "jonasschnelli: I think 0.15 would be really unfortunate since they're interface changes that users may have to accomidate in their software. (and also are covering corner cases that could result in funds losses)",
      "action": false,
      "timestamp": "2017-02-16T19:08:40+00:00"
    },
    {
      "id": "b6036d9f55114beaa9259af5a872e8fa",
      "sender": "wumpus",
      "payload": "I think the fixes are all important, and should get either into 0.14.0 or backported to the 0.14 branch if they don't, but not everything should be regarded as yet another thing to hold up rc1",
      "action": false,
      "timestamp": "2017-02-16T19:08:42+00:00"
    },
    {
      "id": "fb821a1739684138a5cf4c9232b7a9a6",
      "sender": "morcos",
      "payload": "yesterday people were saying it was bad to release with something that coudl silently not find funds",
      "action": false,
      "timestamp": "2017-02-16T19:08:43+00:00"
    },
    {
      "id": "02af86cf15ad48c4bb72fac4d5db2fe9",
      "sender": "gmaxwell",
      "payload": "but no reason to hold rc1 for them. They're well understood.",
      "action": false,
      "timestamp": "2017-02-16T19:09:03+00:00"
    },
    {
      "id": "e82dff6336ef4bfd88b7bc6402e7490c",
      "sender": "jonasschnelli",
      "payload": "Yes. I think the should be in 0.14. Just worst case if we spun of rc1 and chaincode-labs colabses. :)",
      "action": false,
      "timestamp": "2017-02-16T19:09:28+00:00"
    },
    {
      "id": "dc328debdd6c41bbb21fcc553c33a6f9",
      "sender": "wumpus",
      "payload": "anyhow tomorrow sounds good to me, let's try to get in what we can get in",
      "action": false,
      "timestamp": "2017-02-16T19:09:29+00:00"
    },
    {
      "id": "a1b3d6923e954787af21c0b1e80dd454",
      "sender": "gmaxwell",
      "payload": "it's not like someone is going to encounter one of them running rc1 and leave us going \"shit was that the know issue or something else?\"",
      "action": false,
      "timestamp": "2017-02-16T19:09:31+00:00"
    },
    {
      "id": "09c7252c580a47b98cde4301a0aa8f71",
      "sender": "luke-jr",
      "payload": "#9619 is a fix, but not really critical since anyone affected needs a workaround in 0.13 anyway (just pushed an amend-with-no-changes because the Travis error seems impossible)",
      "action": false,
      "timestamp": "2017-02-16T19:09:32+00:00"
    },
    {
      "id": "6e2f6756373a44288d54a9962cd38797",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/9619 | Bugfix: RPC/Mining: GBT should return 1 MB sizelimit before segwit activates by luke-jr \u00c3\u0082\u00c2\u00b7 Pull Request #9619 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2017-02-16T19:09:33+00:00"
    },
    {
      "id": "c58e3e45bcc24c319ba373a7ff50efea",
      "sender": "achow101",
      "payload": "what's the point of making an rc1 if we're going to need rc2 anyways?",
      "action": false,
      "timestamp": "2017-02-16T19:09:34+00:00"
    },
    {
      "id": "2f0b6c09dbd2486295ffe0e999c78a72",
      "sender": "sipa",
      "payload": "achow101: exposure",
      "action": false,
      "timestamp": "2017-02-16T19:09:42+00:00"
    },
    {
      "id": "2105df18bb3f428ead7ae753f8d216f2",
      "sender": "gmaxwell",
      "payload": "achow101: to start getting people using it.",
      "action": false,
      "timestamp": "2017-02-16T19:09:46+00:00"
    },
    {
      "id": "507a32c113084407a1bb12deb5aaa661",
      "sender": "wumpus",
      "payload": "achow101: get the code actually tested?",
      "action": false,
      "timestamp": "2017-02-16T19:09:50+00:00"
    },
    {
      "id": "ea9733a9135f4cbba419606d54caf126",
      "sender": "gmaxwell",
      "payload": "more*",
      "action": false,
      "timestamp": "2017-02-16T19:09:52+00:00"
    },
    {
      "id": "28cf61a0251d4de7b12ae8cef50bb479",
      "sender": "wumpus",
      "payload": "what is the point of doing rc1 at all if not?",
      "action": false,
      "timestamp": "2017-02-16T19:09:56+00:00"
    },
    {
      "id": "bf9713d2ebbb48148c75db9c963754b0",
      "sender": "kanzure",
      "payload": "and seeking bug reports",
      "action": false,
      "timestamp": "2017-02-16T19:09:57+00:00"
    },
    {
      "id": "7efff1b67ece4cad99c1e6d55a62b4eb",
      "sender": "jonasschnelli",
      "payload": "I think we should plan enough time to fix stuff that gets report after rc1...",
      "action": false,
      "timestamp": "2017-02-16T19:09:57+00:00"
    },
    {
      "id": "964602fd184845da8259566e20d5b9ee",
      "sender": "sipa",
      "payload": "jonasschnelli: the release schedule already has 2 weeks left",
      "action": false,
      "timestamp": "2017-02-16T19:10:18+00:00"
    },
    {
      "id": "a5b6dbdff1e642bf987eafdd81d4a522",
      "sender": "wumpus",
      "payload": "achow101: I don't think it ever happened that a major release didn'tneed a rc2",
      "action": false,
      "timestamp": "2017-02-16T19:10:33+00:00"
    },
    {
      "id": "2e77af21d2da466eaa7abee5b6cfb397",
      "sender": "luke-jr",
      "payload": "2 weeks can go fast",
      "action": false,
      "timestamp": "2017-02-16T19:10:35+00:00"
    },
    {
      "id": "4349b8a441ce4b73813202a9d11b81db",
      "sender": "jonasschnelli",
      "payload": "Other can work on fixes reported in rc1.",
      "action": false,
      "timestamp": "2017-02-16T19:10:52+00:00"
    },
    {
      "id": "900589c0887c453bb6941b663cfbaf43",
      "sender": "gmaxwell",
      "payload": "achow101: what we generally don't want to do is to ship an RC1 with issues bad enough that it will harm the testers seriously, or which will fail in mysterious ways that we can't learn from.  E.g. if we had a known crash fix, we would hold rc1, so that we wouldn't worry that every user crash report might have been an unknown issue.",
      "action": false,
      "timestamp": "2017-02-16T19:10:54+00:00"
    },
    {
      "id": "1f534e9a48c146b18985614274710539",
      "sender": "jonasschnelli",
      "payload": "*Others",
      "action": false,
      "timestamp": "2017-02-16T19:10:57+00:00"
    },
    {
      "id": "47e9cd802df5488c8414c2e99cd110f6",
      "sender": "morcos",
      "payload": "my only concern is that if we do rc1 everyone will be distracted with that and not this last few remaining PR's..  but i guess i don't really care either way",
      "action": false,
      "timestamp": "2017-02-16T19:11:05+00:00"
    },
    {
      "id": "0c9b32e23f444fae80fede8d90c688a4",
      "sender": "cfields",
      "payload": "wumpus: just forget the bump to v0.14 again and thereby guarantee an rc2 :p",
      "action": false,
      "timestamp": "2017-02-16T19:11:08+00:00"
    },
    {
      "id": "c00ce3b5afcd4f0dbea121043eff9dbe",
      "sender": "wumpus",
      "payload": "cfields: lol exactly",
      "action": false,
      "timestamp": "2017-02-16T19:11:38+00:00"
    },
    {
      "id": "f45da1af751d48c9917fe5bf75adb7c2",
      "sender": "morcos",
      "payload": "seems like if someone would just review those PR's we might be able to get them merged today",
      "action": false,
      "timestamp": "2017-02-16T19:11:39+00:00"
    },
    {
      "id": "811be648665942b4a453ee1c5ec09695",
      "sender": "gmaxwell",
      "payload": "well I think an RC2 is already guarenteed if we do an rc1 ASAP. But thats fine. Much better than not doing the rc1.",
      "action": false,
      "timestamp": "2017-02-16T19:11:41+00:00"
    },
    {
      "id": "00817a493cab42cb827783db43899af1",
      "sender": "achow101",
      "payload": "ok",
      "action": false,
      "timestamp": "2017-02-16T19:11:49+00:00"
    },
    {
      "id": "d6a24dcfb1af4ce78470dc8eb8f80b31",
      "sender": "wumpus",
      "payload": "a RC2 is guaranteed in any case, not just if we do rc1 asap",
      "action": false,
      "timestamp": "2017-02-16T19:12:04+00:00"
    },
    {
      "id": "bc25c97df4664d8ab5eb70e8aa6f1d92",
      "sender": "wumpus",
      "payload": "that's my point, we don't know of all the issues yet",
      "action": false,
      "timestamp": "2017-02-16T19:12:17+00:00"
    },
    {
      "id": "c6c4c2cbb1da4661b4eed13f7c51f3e5",
      "sender": "morcos",
      "payload": "almost all the complication is in new tests.. reviewing the code changes is pretty simple",
      "action": false,
      "timestamp": "2017-02-16T19:12:26+00:00"
    },
    {
      "id": "96a92fb780414608a16f6ad2927b9b4a",
      "sender": "wumpus",
      "payload": "the only one I doubt about is #9773, at it is still WIP",
      "action": false,
      "timestamp": "2017-02-16T19:13:18+00:00"
    },
    {
      "id": "d54b8999b9cb4176b7692c5a45025c01",
      "sender": "gribble",
      "payload": "https://github.com/bitcoin/bitcoin/issues/9773 | WIP: Return errors from importmulti if complete rescans are not successful (on top of #9761) by ryanofsky \u00c3\u0082\u00c2\u00b7 Pull Request #9773 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
      "action": false,
      "timestamp": "2017-02-16T19:13:20+00:00"
    },
    {
      "id": "39cacdd8ee5441fd857572453aafef46",
      "sender": "luke-jr",
      "payload": "it's a new feature, so we could just say \"don't use this without being aware of the risks\"",
      "action": false,
      "timestamp": "2017-02-16T19:13:44+00:00"
    },
    {
      "id": "0277319cc5044b47b7419de5c46550c2",
      "sender": "paveljanik",
      "payload": "mark it as experimental then?",
      "action": false,
      "timestamp": "2017-02-16T19:14:13+00:00"
    },
    {
      "id": "68bcc0d0672444b29c2566d851f500d5",
      "sender": "sipa",
      "payload": "paveljanik: meh, i think we're close enough to not do that",
      "action": false,
      "timestamp": "2017-02-16T19:14:40+00:00"
    },
    {
      "id": "d0cbb9ec76284755af1346374bf4fc07",
      "sender": "luke-jr",
      "payload": "I mean in rc1 only",
      "action": false,
      "timestamp": "2017-02-16T19:15:15+00:00"
    },
    {
      "id": "f7ccfb365dcc440aba3340bc610c813e",
      "sender": "wumpus",
      "payload": "well even with that change it can be marked as experimental",
      "action": false,
      "timestamp": "2017-02-16T19:15:26+00:00"
    },
    {
      "id": "7912e86effb741e49fbb533cf70a6d29",
      "sender": "wumpus",
      "payload": "it is new code afterall",
      "action": false,
      "timestamp": "2017-02-16T19:15:34+00:00"
    },
    {
      "id": "bebefd91c2c9425388b78b4535718647",
      "sender": "gmaxwell",
      "payload": "I'm not too worried about it in rc1.",
      "action": false,
      "timestamp": "2017-02-16T19:15:39+00:00"
    },
    {
      "id": "a88b3a8f5c794605bf13b83e44144bb3",
      "sender": "wumpus",
      "payload": "there are probably still problems with it that we haven't found, which will be found by people testing it",
      "action": false,
      "timestamp": "2017-02-16T19:16:12+00:00"
    },
    {
      "id": "45614942aa9b490ab0914d189bc08458",
      "sender": "paveljanik",
      "payload": "we can mark it as experimental in the release notes only...",
      "action": false,
      "timestamp": "2017-02-16T19:16:33+00:00"
    },
    {
      "id": "796938b955b84074a7f4447ac8c486bf",
      "sender": "wumpus",
      "payload": "so yes, experimental makes sense. Though a new major release should be considered experimental entirely",
      "action": false,
      "timestamp": "2017-02-16T19:16:33+00:00"
    },
    {
      "id": "510c9d27eaee41bf99250630f20634ce",
      "sender": "gmaxwell",
      "payload": "people running rcs are the least likely to lose funds due to a rescan limitation, and there won't be many of them.",
      "action": false,
      "timestamp": "2017-02-16T19:16:37+00:00"
    },
    {
      "id": "d838e2cd5d314dfebbe597e6056cd4e0",
      "sender": "morcos",
      "payload": "i think it is a mistake to call it experimental",
      "action": false,
      "timestamp": "2017-02-16T19:17:50+00:00"
    },
    {
      "id": "871f60da14b84039afeb1d02ff897467",
      "sender": "morcos",
      "payload": "we don't want to devalue the meaning of that word",
      "action": false,
      "timestamp": "2017-02-16T19:17:56+00:00"
    },
    {
      "id": "f3b90dd627b845e1a6582eba03c97d2c",
      "sender": "wumpus",
      "payload": "ok...",
      "action": false,
      "timestamp": "2017-02-16T19:18:13+00:00"
    },
    {
      "id": "012e8162745b4087b306224d8fc030e0",
      "sender": "morcos",
      "payload": "sometimes we may want to have things that are actually experimental and we don't want people to think we just always say that",
      "action": false,
      "timestamp": "2017-02-16T19:18:17+00:00"
    },
    {
      "id": "79dae34c5ddf45648f8cad6dd9bbf0ed",
      "sender": "wumpus",
      "payload": "\"this feature is experimental level 4\"",
      "action": false,
      "timestamp": "2017-02-16T19:18:40+00:00"
    },
    {
      "id": "faf9768e2a8b437ba9a01f5f1fafd31e",
      "sender": "sipa",
      "payload": "haha",
      "action": false,
      "timestamp": "2017-02-16T19:18:44+00:00"
    },
    {
      "id": "a4b8d016cfd640d7a6978d628301cb34",
      "sender": "kanzure",
      "payload": "nasa technical readiness levels",
      "action": false,
      "timestamp": "2017-02-16T19:18:50+00:00"
    },
    {
      "id": "cba025fa27c246b1bb2c088bdb8d406e",
      "sender": "CodeShark",
      "payload": "The whole thing is experimental :p",
      "action": false,
      "timestamp": "2017-02-16T19:18:54+00:00"
    },
    {
      "id": "0b2dfb1ae64b4ed7aa8ca377f7f83bf7",
      "sender": "morcos",
      "payload": "this is known to the state of CA to be experimental",
      "action": false,
      "timestamp": "2017-02-16T19:18:56+00:00"
    },
    {
      "id": "2f149023e2ff4c9397557f999768d1da",
      "sender": "petertodd",
      "payload": "morcos: \"dangerously experimental\"",
      "action": false,
      "timestamp": "2017-02-16T19:18:56+00:00"
    },
    {
      "id": "10b1e556c7664c02a530a7ab992e551d",
      "sender": "petertodd",
      "payload": "morcos: lol",
      "action": false,
      "timestamp": "2017-02-16T19:19:06+00:00"
    },
    {
      "id": "1838a139fc26457a9bf486f6754b56e3",
      "sender": "gmaxwell",
      "payload": "Yea, thats why I was not supporting expiremental.",
      "action": false,
      "timestamp": "2017-02-16T19:19:23+00:00"
    },
    {
      "id": "300fa1840bce406aa34406b946e77ed4",
      "sender": "instagibbs",
      "payload": "morcos, accounts... deprecated!",
      "action": false,
      "timestamp": "2017-02-16T19:19:54+00:00"
    },
    {
      "id": "906160251e3445078b58102e4b378392",
      "sender": "morcos",
      "payload": "what..  is that an announcement? a question?",
      "action": false,
      "timestamp": "2017-02-16T19:20:13+00:00"
    },
    {
      "id": "7dff756c17fb442295b8647723b94907",
      "sender": "morcos",
      "payload": "i hate accounts",
      "action": false,
      "timestamp": "2017-02-16T19:20:17+00:00"
    },
    {
      "id": "fd0e616122f6489b9da1e71daeee5b8f",
      "sender": "gmaxwell",
      "payload": "For rc1 we can simply say that there are in-flight improvements to that feature link to the PRs. if we really want to... in a reply to the announcement.",
      "action": false,
      "timestamp": "2017-02-16T19:20:21+00:00"
    },
    {
      "id": "217c83aea64a4dc2897e2e4b664777a6",
      "sender": "sipa",
      "payload": "let's just review the outstanding patches, they are tiny",
      "action": false,
      "timestamp": "2017-02-16T19:20:42+00:00"
    },
    {
      "id": "ad637b6ffcc749468af179ec62b05ad2",
      "sender": "instagibbs",
      "payload": "morcos, we use \"deprecated\" in things that are lasting forever in practice, bad joke",
      "action": false,
      "timestamp": "2017-02-16T19:20:42+00:00"
    },
    {
      "id": "06e2f5ad7f584bf7a83d04336daa33ad",
      "sender": "jtimon",
      "payload": "mhm, why 9619 doesn't go in for 0.14?",
      "action": false,
      "timestamp": "2017-02-16T19:20:50+00:00"
    },
    {
      "id": "d6c1d282318f4361ac92a177ff0571a0",
      "sender": "morcos",
      "payload": "oh.. yeah",
      "action": false,
      "timestamp": "2017-02-16T19:20:51+00:00"
    },
    {
      "id": "724aef37482b48dcb3a0022a9714609e",
      "sender": "sipa",
      "payload": "with some luck we can get everything merged",
      "action": false,
      "timestamp": "2017-02-16T19:20:58+00:00"
    },
    {
      "id": "751d043a33134585a0880c0ddb2e02af",
      "sender": "sipa",
      "payload": "branch and rc1 tomorrow",
      "action": false,
      "timestamp": "2017-02-16T19:21:14+00:00"
    },
    {
      "id": "b17e30c417cc4a0cb0110d5ec84b7e79",
      "sender": "wumpus",
      "payload": "gmaxwell: yes, that there is still work in progress, that's better and more clear than the word experimental",
      "action": false,
      "timestamp": "2017-02-16T19:21:15+00:00"
    },
    {
      "id": "78ca9520523a4f2a98d2cfc201dbe3ac",
      "sender": "sipa",
      "payload": "with whatever is in",
      "action": false,
      "timestamp": "2017-02-16T19:21:21+00:00"
    },
    {
      "id": "9c54608a7e2d4bcbbf48564f09933f8c",
      "sender": "morcos",
      "payload": "ok, so can we just pick a time.  wumpus is going to call rc1 tomorrow morning..  it tonight we can convince people to merge a few of these other things... that'll leave less for rc2",
      "action": false,
      "timestamp": "2017-02-16T19:21:33+00:00"
    },
    {
      "id": "6b93c0b4158c44b9b2755c62b0ac5861",
      "sender": "morcos",
      "payload": "that was \"if tonight\"  , if not , then ok",
      "action": false,
      "timestamp": "2017-02-16T19:22:05+00:00"
    },
    {
      "id": "c76b50dacd6d4b9f8aaa4b7da40d9b44",
      "sender": "sipa",
      "payload": "wumpus: is that fine by you?",
      "action": false,
      "timestamp": "2017-02-16T19:22:09+00:00"
    },
    {
      "id": "c057109e88f64a75bb8b864f7761b94c",
      "sender": "wumpus",
      "payload": "yes, that's fine with me",
      "action": false,
      "timestamp": "2017-02-16T19:22:16+00:00"
    },
    {
      "id": "a1d413f579314140a67dabdbbe1afb5d",
      "sender": "wumpus",
      "payload": "I'm okay with another day, let's just not let it slip another week, that next thursday we're again wondering when to do the rc1 :)",
      "action": false,
      "timestamp": "2017-02-16T19:22:48+00:00"
    },
    {
      "id": "c233b85b66004d8ea980192b06fb09f5",
      "sender": "sipa",
      "payload": "next thursday we should be talking about doing rc2",
      "action": false,
      "timestamp": "2017-02-16T19:23:15+00:00"
    },
    {
      "id": "485b327130214058916d6dbf86be247b",
      "sender": "wumpus",
      "payload": "yes, ideally",
      "action": false,
      "timestamp": "2017-02-16T19:23:22+00:00"
    },
    {
      "id": "bb4318d056894977b43b42366b6d92d1",
      "sender": "gmaxwell",
      "payload": "We're at a point where beyond the couple in flight PRs little to no more improvement is happening, which is when we need more input.",
      "action": false,
      "timestamp": "2017-02-16T19:23:30+00:00"
    },
    {
      "id": "a4e88f08690c45c694a99bc705191cf6",
      "sender": "achow101",
      "payload": "so rc1 tomorrow regardless of whether those three prs get merged?",
      "action": false,
      "timestamp": "2017-02-16T19:23:54+00:00"
    },
    {
      "id": "d6893a901bdc43f79f8ccb0264a5fb78",
      "sender": "sipa",
      "payload": "achow101: that's what i suggest, yes",
      "action": false,
      "timestamp": "2017-02-16T19:24:06+00:00"
    },
    {
      "id": "e28383fcada743b5afa6e2338d6a1537",
      "sender": "paveljanik",
      "payload": "+1",
      "action": false,
      "timestamp": "2017-02-16T19:24:12+00:00"
    },
    {
      "id": "8559393ecf9144089b94ee9953361aa3",
      "sender": "achow101",
      "payload": "^",
      "action": false,
      "timestamp": "2017-02-16T19:24:20+00:00"
    },
    {
      "id": "c3714d02fec64c4c91223905e08c7005",
      "sender": "sipa",
      "payload": "are we ok with talking about things beyond 0.14?",
      "action": false,
      "timestamp": "2017-02-16T19:26:14+00:00"
    },
    {
      "id": "f7259dc0f6204b4aa9874bd08bc866ee",
      "sender": "wumpus",
      "payload": "sure!",
      "action": false,
      "timestamp": "2017-02-16T19:26:30+00:00"
    },
    {
      "id": "d7ccd754099642adbc3bdbc0df6e45b4",
      "sender": "luke-jr",
      "payload": "new #topic?",
      "action": false,
      "timestamp": "2017-02-16T19:26:34+00:00"
    },
    {
      "id": "0362cd9a1672486d8bcd4be32411de57",
      "sender": "sipa",
      "payload": "i'd briefly like to talk about randomness",
      "action": false,
      "timestamp": "2017-02-16T19:26:41+00:00"
    },
    {
      "id": "7a742611f9fa4b87a222e7aaef33f7a4",
      "sender": "wumpus",
      "payload": "#topic randomness",
      "action": false,
      "timestamp": "2017-02-16T19:26:54+00:00"
    },
    {
      "id": "10e1e89c7beb4f68abd15208faff09d4",
      "sender": "luke-jr",
      "payload": "that's random.",
      "action": false,
      "timestamp": "2017-02-16T19:26:56+00:00"
    },
    {
      "id": "bcc613c0001f40e1bdb57e43dba3ff4b",
      "sender": "sipa",
      "payload": "we currently have 3 \"levels\" of randomnesz",
      "action": false,
      "timestamp": "2017-02-16T19:27:06+00:00"
    },
    {
      "id": "fb29838a7d1448c49b47e0c89b8193c8",
      "sender": "sipa",
      "payload": "fastrandomcontext, getrandbytes, getsecurerandbytes",
      "action": false,
      "timestamp": "2017-02-16T19:27:21+00:00"
    },
    {
      "id": "db66c8c9df10464894d4be68d0f8ef0a",
      "sender": "sipa",
      "payload": "i'd like to have only 2",
      "action": false,
      "timestamp": "2017-02-16T19:27:28+00:00"
    },
    {
      "id": "dc338e38bf0a408e9b3c973c5759b4b5",
      "sender": "wumpus",
      "payload": "we need a random number of levels of randomness",
      "action": false,
      "timestamp": "2017-02-16T19:27:30+00:00"
    },
    {
      "id": "9c0e62a9cea34731bd25c6989e986fbc",
      "sender": "wumpus",
      "payload": "yes.",
      "action": false,
      "timestamp": "2017-02-16T19:27:42+00:00"
    },
    {
      "id": "586d163183f149419962e1e01206994d",
      "sender": "wumpus",
      "payload": "why are there three?",
      "action": false,
      "timestamp": "2017-02-16T19:27:46+00:00"
    },
    {
      "id": "a58533056e3d498d96241fb79ff421c4",
      "sender": "instagibbs",
      "payload": "can you explain \"getsecurerandbytes\"",
      "action": false,
      "timestamp": "2017-02-16T19:27:49+00:00"
    },
    {
      "id": "3a7ad94693d542daba830e11138a8e9b",
      "sender": "instagibbs",
      "payload": "im going through code now but..",
      "action": false,
      "timestamp": "2017-02-16T19:27:58+00:00"
    },
    {
      "id": "46a22059f22741aa830a9e7cdeba604d",
      "sender": "wumpus",
      "payload": "I mean we need one for wallet keys, I understand that",
      "action": false,
      "timestamp": "2017-02-16T19:27:59+00:00"
    },
    {
      "id": "80a98b81d87543e6ade159a3c22a7143",
      "sender": "sipa",
      "payload": "the last one is used for privaye keys",
      "action": false,
      "timestamp": "2017-02-16T19:28:02+00:00"
    },
    {
      "id": "ffcf922011ea4fe48636a4c5925a7ea5",
      "sender": "jtimon",
      "payload": "why 9619 doesn't go in for 0.14?",
      "action": false,
      "timestamp": "2017-02-16T19:28:04+00:00"
    },
    {
      "id": "3cc32bcfba6842bd8e2f90a8c0184683",
      "sender": "jonasschnelli",
      "payload": "jtimon: wrong topic",
      "action": false,
      "timestamp": "2017-02-16T19:28:22+00:00"
    },
    {
      "id": "730c875cd149431aa7abc59db9cb6abf",
      "sender": "sipa",
      "payload": "it's as secure as getrandbytes if all goes well, but it's more paranoid",
      "action": false,
      "timestamp": "2017-02-16T19:28:27+00:00"
    },
    {
      "id": "1b11449070964802af3c420697a8aa6a",
      "sender": "sipa",
      "payload": "so, i've been playing with a chacha2p based rng instead of fastrandomcontext",
      "action": false,
      "timestamp": "2017-02-16T19:28:47+00:00"
    },
    {
      "id": "9d04d609fa5d49bfbb72dd07b8693868",
      "sender": "jtimon",
      "payload": "jonasschnelli: suggested topic then",
      "action": false,
      "timestamp": "2017-02-16T19:28:51+00:00"
    },
    {
      "id": "a60853385b0e468c877b9e193c9b2e0d",
      "sender": "wumpus",
      "payload": "I think I'm fine with an extra paranoid level for wallet keys",
      "action": false,
      "timestamp": "2017-02-16T19:28:53+00:00"
    },
    {
      "id": "31e8d70106554c0d8bd40f12f0006bc5",
      "sender": "sipa",
      "payload": "*chacha20",
      "action": false,
      "timestamp": "2017-02-16T19:28:56+00:00"
    },
    {
      "id": "9cc8aa7a8d27402abf5e826494f08f99",
      "sender": "sipa",
      "payload": "which takes around 10ns for a 32-bit rand",
      "action": false,
      "timestamp": "2017-02-16T19:29:17+00:00"
    },
    {
      "id": "801469b44c32482696a09072e3ed469a",
      "sender": "wumpus",
      "payload": "it's much more important to have good randomness there then in almost any other place in computing currently",
      "action": false,
      "timestamp": "2017-02-16T19:29:30+00:00"
    },
    {
      "id": "55aab1395b6149a1a48f5e50d8bd9040",
      "sender": "instagibbs",
      "payload": "\"GetStrongRandBytes\" <--- this it?",
      "action": false,
      "timestamp": "2017-02-16T19:29:36+00:00"
    },
    {
      "id": "079037f95a1f40bb8378af1ad3a0b3ec",
      "sender": "rabidus",
      "payload": "return 4",
      "action": false,
      "timestamp": "2017-02-16T19:29:48+00:00"
    },
    {
      "id": "5fc57f1414cf45319dc3609dc24edaac",
      "sender": "sipa",
      "payload": "the current fastrandomcontext takes 1.5ns, but with extra optimizations it can be made comparablr",
      "action": false,
      "timestamp": "2017-02-16T19:29:49+00:00"
    },
    {
      "id": "4cc6c182841348fdbc80c47e66547d8d",
      "sender": "sipa",
      "payload": "and if we have that, i think we can use strong randomnes for everything",
      "action": false,
      "timestamp": "2017-02-16T19:30:08+00:00"
    },
    {
      "id": "66031fcb8da14626ab8caf24cf73ccc5",
      "sender": "wumpus",
      "payload": "for non wallet keys we can probably do with one level",
      "action": false,
      "timestamp": "2017-02-16T19:30:13+00:00"
    },
    {
      "id": "ebe2c5f71ddf4c8499651247038f1a9c",
      "sender": "wumpus",
      "payload": "is that your plan sipa?",
      "action": false,
      "timestamp": "2017-02-16T19:30:19+00:00"
    },
    {
      "id": "20ba83137f8e4ab7a9f5a1f2bbd72527",
      "sender": "sipa",
      "payload": "basically i suggest making all RNGs cryptographic",
      "action": false,
      "timestamp": "2017-02-16T19:30:36+00:00"
    },
    {
      "id": "3a960cee3333498283c7fc78071e36bd",
      "sender": "sipa",
      "payload": "but the fast one is not thread-safe, doesn't reseed, doesn't protect against VM reloads",
      "action": false,
      "timestamp": "2017-02-16T19:30:54+00:00"
    },
    {
      "id": "083d6b1f908049b99ea9dbe97db9f065",
      "sender": "wumpus",
      "payload": "so merge the fastrandomcontext and somewhatmoresecure level, and keeping that and the ultra-paranoid one for wallet keys",
      "action": false,
      "timestamp": "2017-02-16T19:30:55+00:00"
    },
    {
      "id": "7c729de6c1ae4570b5fa4bccb64388e6",
      "sender": "sipa",
      "payload": "i realize the \"only two randomness levels\" is a bit of an abstract goal",
      "action": false,
      "timestamp": "2017-02-16T19:31:36+00:00"
    },
    {
      "id": "d5c38ee055a7418794c020f49493b392",
      "sender": "wumpus",
      "payload": "yes the fastrandomcontext is supposed to only eb used from one thread at a time",
      "action": false,
      "timestamp": "2017-02-16T19:31:45+00:00"
    },
    {
      "id": "840edd8c26374e91a3ce5de0d3e5e6bb",
      "sender": "morcos",
      "payload": "are there any inner loops that use random numbers?",
      "action": false,
      "timestamp": "2017-02-16T19:31:54+00:00"
    },
    {
      "id": "df582705128f4e889d0bd7cbbb594396",
      "sender": "petertodd",
      "payload": "wumpus: the ultra paranoid one can also use the chacha code",
      "action": false,
      "timestamp": "2017-02-16T19:31:58+00:00"
    },
    {
      "id": "67f796c200d14e27872a0177f5a7bd94",
      "sender": "wumpus",
      "payload": "because it's for inner loops",
      "action": false,
      "timestamp": "2017-02-16T19:31:59+00:00"
    },
    {
      "id": "85b9b6dd2b5146429ef5fb7364d83360",
      "sender": "sipa",
      "payload": "yes, the wallet coin selection",
      "action": false,
      "timestamp": "2017-02-16T19:32:05+00:00"
    },
    {
      "id": "88545d75ce21426cab81d5f19a4c368c",
      "sender": "sipa",
      "payload": "i benchmarked it, making it chacha20 doesn't affect its performance",
      "action": false,
      "timestamp": "2017-02-16T19:32:20+00:00"
    },
    {
      "id": "0ad533c240a04e6a9bd93497115f6818",
      "sender": "wumpus",
      "payload": "any locking for synchronization there would be pretty bad",
      "action": false,
      "timestamp": "2017-02-16T19:32:23+00:00"
    },
    {
      "id": "db4842be81494ee2b31e66d5dce5fe11",
      "sender": "wumpus",
      "payload": "there's also an inner random loop in the address selection code IIRC",
      "action": false,
      "timestamp": "2017-02-16T19:32:41+00:00"
    },
    {
      "id": "7e63c11f3eaf45b89a22cb2bdea4c1d8",
      "sender": "jonasschnelli",
      "payload": "Do we need cPRNG for coin selection?",
      "action": false,
      "timestamp": "2017-02-16T19:32:56+00:00"
    },
    {
      "id": "cf3b3d403b644229abbb50f22c49a8be",
      "sender": "sipa",
      "payload": "yup",
      "action": false,
      "timestamp": "2017-02-16T19:32:56+00:00"
    },
    {
      "id": "ed2e8e872c394016b0fb223c020731bb",
      "sender": "wumpus",
      "payload": "sipa: yes chacha20 is fast, but the problem is the thread safety",
      "action": false,
      "timestamp": "2017-02-16T19:33:02+00:00"
    },
    {
      "id": "5d9ff6474d0a4c58b34b2ac735c773f2",
      "sender": "sipa",
      "payload": "jonasschnelli: no, we don't",
      "action": false,
      "timestamp": "2017-02-16T19:33:05+00:00"
    },
    {
      "id": "a3db07c7bc5a4c418a30a8c987fcff9b",
      "sender": "gmaxwell",
      "payload": "sipa wants to reduce the codebase complexity.",
      "action": false,
      "timestamp": "2017-02-16T19:33:14+00:00"
    },
    {
      "id": "9c85dd2c7edb40a9abb58aa97397cf1d",
      "sender": "sipa",
      "payload": "but chacha20 is so fast i don't care",
      "action": false,
      "timestamp": "2017-02-16T19:33:19+00:00"
    },
    {
      "id": "b6a2a851b1f9477db7a42365dd30856e",
      "sender": "wumpus",
      "payload": "if you want to be able to share a random context between threads, you end up with lots of synchronization overhead",
      "action": false,
      "timestamp": "2017-02-16T19:33:21+00:00"
    },
    {
      "id": "fdde30ced34547d889be0a3c681cf9cd",
      "sender": "jonasschnelli",
      "payload": "Yes. This would be good.",
      "action": false,
      "timestamp": "2017-02-16T19:33:23+00:00"
    },
    {
      "id": "3d0f6c06f6914d5199d0316cbf388052",
      "sender": "wumpus",
      "payload": "that's why the inner loops use a non-threadsafe random context, =which doesn't matter as it's only used by one thread",
      "action": false,
      "timestamp": "2017-02-16T19:33:51+00:00"
    },
    {
      "id": "1f399ea9e0844556ba4e6b236639154d",
      "sender": "bitcoin-git",
      "payload": "[bitcoin] gmaxwell opened pull request #9779: Update nMinimumChainWork and defaultAssumeValid. (master...update_chainparams) https://github.com/bitcoin/bitcoin/pull/9779",
      "action": false,
      "timestamp": "2017-02-16T19:34:01+00:00"
    },
    {
      "id": "2f7d030cdfbf455e9886df7bb5deb3ed",
      "sender": "sipa",
      "payload": "having clearer expectations about the rngs may simplify getting rid of openssl later",
      "action": false,
      "timestamp": "2017-02-16T19:34:11+00:00"
    },
    {
      "id": "5b24105e3c024b04bf6a51665c614e0b",
      "sender": "wumpus",
      "payload": "the thread sync overhead is where the overhead would be",
      "action": false,
      "timestamp": "2017-02-16T19:34:18+00:00"
    },
    {
      "id": "2339a8bd7700412f80c07eabfba324f5",
      "sender": "sipa",
      "payload": "though that's not something to discuss now, i think",
      "action": false,
      "timestamp": "2017-02-16T19:34:24+00:00"
    },
    {
      "id": "5d82ca64f72145d990c439fe61ae0284",
      "sender": "wumpus",
      "payload": "so how would you cope with that sipa? or would it all be non-shared context?",
      "action": false,
      "timestamp": "2017-02-16T19:34:38+00:00"
    },
    {
      "id": "b2127d9079794a38a79f3b10c31cb9c1",
      "sender": "sipa",
      "payload": "so 1) replace fastrandomcontext with a bit more featureful chacha20 based one",
      "action": false,
      "timestamp": "2017-02-16T19:35:07+00:00"
    },
    {
      "id": "b5941d3d3cbb4841aecee551961b64a6",
      "sender": "wumpus",
      "payload": "yes, depending on openssl for just randomness is fine, there's no urgent reason to get rid of that, and it seems controversial for some people",
      "action": false,
      "timestamp": "2017-02-16T19:35:39+00:00"
    },
    {
      "id": "310199dd16314432a9256b359517a043",
      "sender": "sipa",
      "payload": "2) see where the current non-strong-getrandbytes can be replaced with fastrandcontexts, and replace everything with getstrongranbytes",
      "action": false,
      "timestamp": "2017-02-16T19:35:47+00:00"
    },
    {
      "id": "69190b84b6454a1a88297e7af44f948d",
      "sender": "wumpus",
      "payload": "that makes sense",
      "action": false,
      "timestamp": "2017-02-16T19:35:50+00:00"
    },
    {
      "id": "ce0486f26b5747a3bd02e2fb7514d962",
      "sender": "gmaxwell",
      "payload": "one of the harder points (beyond threading) is that we need to manage which RNGs are robust against a VM image being snapshotted and restored.  Coinselection using the same randomness again after a VM restore would be harmless.  Choosing a crypto nonce would be much less harmless.  If a RNG needs to be outputing data intially after restore there is unfortunately a runtime cost (esp on ARM).",
      "action": false,
      "timestamp": "2017-02-16T19:36:06+00:00"
    },
    {
      "id": "b57aa99428ad4bf38390e00d6ff4214c",
      "sender": "wumpus",
      "payload": "also I think we need an abstraction for 'kernel randomness', this came up recently in context of OpenBSD, which doesn't have /dev/random/urandom available in all contexts",
      "action": false,
      "timestamp": "2017-02-16T19:36:58+00:00"
    },
    {
      "id": "3c49c1077a38442f896d7d9f6d82bc21",
      "sender": "gmaxwell",
      "payload": "Pieter and I have been debating this a little bit the past could days.",
      "action": false,
      "timestamp": "2017-02-16T19:37:07+00:00"
    },
    {
      "id": "b5d5bf0364d94fdab4f7b551f2c68b2f",
      "sender": "wumpus",
      "payload": "the modern way,sandbox-proof way seems to be to use a specific system call fo that, but it differs per OS unfortunately",
      "action": false,
      "timestamp": "2017-02-16T19:37:23+00:00"
    },
    {
      "id": "0ac5fe428ef0488e8309980e3a58bf85",
      "sender": "sipa",
      "payload": "wumpus: yup, that would go into the (singular) getstrongrandbytes implementation",
      "action": false,
      "timestamp": "2017-02-16T19:37:27+00:00"
    },
    {
      "id": "3b2119daba0e42fc92f082a8f94f3bc7",
      "sender": "cfields",
      "payload": "isn't there an old PR for exactly that abstraction?",
      "action": false,
      "timestamp": "2017-02-16T19:37:27+00:00"
    },
    {
      "id": "c47c816ea4d84d3e805a767f01233e21",
      "sender": "gmaxwell",
      "payload": "wumpus: we do have a function for OS randomness, it should be smarter of course... but it was only fairly recently introduced.",
      "action": false,
      "timestamp": "2017-02-16T19:37:28+00:00"
    },
    {
      "id": "e7c21956926d40888e95f6d59eda4cf8",
      "sender": "Victorsueca",
      "payload": "maybe you could get rid of getrandbytes? so we keep the fast one for simple operations and the secure and paranoid one for important stuff and you can focus on implementing more features on those two",
      "action": false,
      "timestamp": "2017-02-16T19:37:48+00:00"
    },
    {
      "id": "ea7a292f751e497081aeabfdbbe820fc",
      "sender": "gmaxwell",
      "payload": "GetOSRand()",
      "action": false,
      "timestamp": "2017-02-16T19:37:59+00:00"
    },
    {
      "id": "faeabe5ac5b741eab5da799d72a246bd",
      "sender": "wumpus",
      "payload": "(linux also has a \"getrandom\" system call that can be used instead of /dev/urandom, in sandboxes)",
      "action": false,
      "timestamp": "2017-02-16T19:38:06+00:00"
    },
    {
      "id": "3f9c0cd709c2433a87de9bf85e9b3967",
      "sender": "sipa",
      "payload": "Victorsueca: read the above discussion, that is exactly what i am proposing",
      "action": false,
      "timestamp": "2017-02-16T19:38:13+00:00"
    },
    {
      "id": "5ae09512e9ec40c7805fc8345fc456c7",
      "sender": "wumpus",
      "payload": "gmaxwell: ok",
      "action": false,
      "timestamp": "2017-02-16T19:38:22+00:00"
    },
    {
      "id": "11ad04dd76d84e71aeea46fc3c3d6c2f",
      "sender": "gmaxwell",
      "payload": "wumpus: yes, in newer systems. We do mention using that in the PR that implemented GetOSRand I think. (getentropy)",
      "action": false,
      "timestamp": "2017-02-16T19:38:41+00:00"
    },
    {
      "id": "57077c7ee6184c5784e92c26eefbe9fe",
      "sender": "wumpus",
      "payload": "gmaxwell: in any case, that is the lowerst level, it shouldn't be regarded as 'a level of randomness'",
      "action": false,
      "timestamp": "2017-02-16T19:38:43+00:00"
    },
    {
      "id": "575b8bafc0704985966d1544c65726fa",
      "sender": "gmaxwell",
      "payload": "so I think we know what we need to go there.",
      "action": false,
      "timestamp": "2017-02-16T19:38:52+00:00"
    },
    {
      "id": "a490c977f7ce4d53ab934e52aaeda371",
      "sender": "wumpus",
      "payload": "indeed, getentropy is bsd, getrandom is linux",
      "action": false,
      "timestamp": "2017-02-16T19:39:09+00:00"
    },
    {
      "id": "501647f803ff46079af755165660f741",
      "sender": "Victorsueca",
      "payload": "sipa: ohh, I somehow misread that you where proposing to merge the fast and the middle one to make it simpler",
      "action": false,
      "timestamp": "2017-02-16T19:39:29+00:00"
    },
    {
      "id": "6261ff29772b4afca0375846b751f2f1",
      "sender": "sipa",
      "payload": "FWIW linux 4.8 also switched to chacha20 for /dev/urandom",
      "action": false,
      "timestamp": "2017-02-16T19:39:37+00:00"
    },
    {
      "id": "4472f5eb1077493bb7e5ecd5d1bf021b",
      "sender": "wumpus",
      "payload": "yes",
      "action": false,
      "timestamp": "2017-02-16T19:39:48+00:00"
    },
    {
      "id": "0b450c4f9b944d3e9aede72fa1966e9b",
      "sender": "gmaxwell",
      "payload": "The framework I think about this is that we have several randomized algorithims where there are basically no cryptographic guarentees needed... coin selection, addr man buckets, and tests being some examples.  These need to be fast but can all use just a local context, need no resistance against reversal (somsone steals your ram and recovers older randomness) or prediction (vm saves repeat rando",
      "action": false,
      "timestamp": "2017-02-16T19:40:14+00:00"
    },
    {
      "id": "aa61b709abf14634b0002e46be938696",
      "sender": "petertodd",
      "payload": "gmaxwell: re: VM image being snapshotted and restored, that's basically a case where reusing a secret is by itself harmful - is there an example in Bitcoin where that's the case, now that we do deterministic signing?",
      "action": false,
      "timestamp": "2017-02-16T19:40:19+00:00"
    },
    {
      "id": "b440bceb71e440a790fb78f746c9a744",
      "sender": "gmaxwell",
      "payload": "mness).",
      "action": false,
      "timestamp": "2017-02-16T19:40:20+00:00"
    },
    {
      "id": "62d271d42e39499a860f45a0976b43fb",
      "sender": "gmaxwell",
      "payload": "So thats one set of uses.",
      "action": false,
      "timestamp": "2017-02-16T19:40:22+00:00"
    },
    {
      "id": "4daa2f2acea84ded92986d6203ac9032",
      "sender": "sipa",
      "payload": "Victorsueca: i'm proposing to make the fast one stronger (but not much slower), and then things using the middle one need to be judged on a case by case basis whether they can use the new fast one, or the strong one",
      "action": false,
      "timestamp": "2017-02-16T19:40:23+00:00"
    },
    {
      "id": "be4fdc05292d436387ad0004e4a6e89b",
      "sender": "sipa",
      "payload": "Victorsueca: after that, the middle one goes away",
      "action": false,
      "timestamp": "2017-02-16T19:40:50+00:00"
    },
    {
      "id": "f8009311a6d3421b8b07359d63c6562c",
      "sender": "gmaxwell",
      "payload": "Then we have other uses where we have randomized behavior which does have stronger security requirements, like ping nonces which need to be strongly unforgable to prevent peers hiding their latency.",
      "action": false,
      "timestamp": "2017-02-16T19:40:59+00:00"
    },
    {
      "id": "31f3f2b6fce640858f0ce06a83060a26",
      "sender": "Victorsueca",
      "payload": "sipa: makes sense",
      "action": false,
      "timestamp": "2017-02-16T19:41:07+00:00"
    },
    {
      "id": "52487f7be7364cc4b141166b4a4e939e",
      "sender": "gmaxwell",
      "payload": "But even if they're broken it just turns into DOS attacks.",
      "action": false,
      "timestamp": "2017-02-16T19:41:11+00:00"
    },
    {
      "id": "261ece44e45f40b19a49bec7865d6a38",
      "sender": "wumpus",
      "payload": "it's strong, but far from as strong a requirement as wallet keys",
      "action": false,
      "timestamp": "2017-02-16T19:41:39+00:00"
    },
    {
      "id": "38f4333aecbc42728ea31582913b9a39",
      "sender": "gmaxwell",
      "payload": "Then we have things like long term keys which we do infrequently and basically no cost is too high. And they have to meet basically every security characteristic we can imagine.",
      "action": false,
      "timestamp": "2017-02-16T19:41:43+00:00"
    },
    {
      "id": "39ec61730ca64c87b67e09d6e05bb9f0",
      "sender": "wumpus",
      "payload": "indeed",
      "action": false,
      "timestamp": "2017-02-16T19:41:57+00:00"
    },
    {
      "id": "f757b5a6c6bd4c4d8b1f172753d13e5f",
      "sender": "cfields",
      "payload": "suggested similar next topic: clocks",
      "action": false,
      "timestamp": "2017-02-16T19:42:05+00:00"
    },
    {
      "id": "e0a64bc4c005496ca9c73df8c8ddea02",
      "sender": "gmaxwell",
      "payload": "the second class often has to be moderately fast too.",
      "action": false,
      "timestamp": "2017-02-16T19:42:09+00:00"
    },
    {
      "id": "236068074b23441eb52794a5ad369ad2",
      "sender": "gmaxwell",
      "payload": "Pieter would like to collapse this class hierarchy some by making the first class use the second while making the second fast enough that it's fine to do so.",
      "action": false,
      "timestamp": "2017-02-16T19:42:41+00:00"
    },
    {
      "id": "b11954054e94423a86889d65a49e2341",
      "sender": "Victorsueca",
      "payload": "cfields: clocks as in CPU clock or as in timestamp?",
      "action": false,
      "timestamp": "2017-02-16T19:43:09+00:00"
    },
    {
      "id": "fcda07c66f3e4ff89206d52c658b3ac0",
      "sender": "wumpus",
      "payload": "Victorsueca: please wait until the topic is actaully started",
      "action": false,
      "timestamp": "2017-02-16T19:43:27+00:00"
    },
    {
      "id": "07a8d068eb8f4a39b633d04c8f8b30ce",
      "sender": "Victorsueca",
      "payload": "ohh, sorry",
      "action": false,
      "timestamp": "2017-02-16T19:43:33+00:00"
    },
    {
      "id": "7d78a6ff7db64a0e9cca598c341d6782",
      "sender": "wumpus",
      "payload": "though I think we've wrapped up randomness",
      "action": false,
      "timestamp": "2017-02-16T19:43:48+00:00"
    },
    {
      "id": "f64415b411b7428ea08a5b225b52b4ba",
      "sender": "sipa",
      "payload": "agree",
      "action": false,
      "timestamp": "2017-02-16T19:43:51+00:00"
    },
    {
      "id": "0df9e56357e5435bb20b068f8e0bd7cb",
      "sender": "wumpus",
      "payload": "#topic clocks",
      "action": false,
      "timestamp": "2017-02-16T19:43:56+00:00"
    },
    {
      "id": "0518ba5e79f149eba80a01aac1c6c963",
      "sender": "gmaxwell",
      "payload": "I have a little doubt that this is possible, because I think the second may need to deal with reversal resistace and prediction resistance, which cannot be done for free. (e.g. you must mix in TSC and/or RDRAND at every use.)",
      "action": false,
      "timestamp": "2017-02-16T19:43:58+00:00"
    },
    {
      "id": "56b3f740d2a044ffb91c29f137c7fcfb",
      "sender": "instagibbs",
      "payload": "he has to gavel before we can switch",
      "action": false,
      "timestamp": "2017-02-16T19:43:59+00:00"
    },
    {
      "id": "3288a75f0ee949cbad5b13df6c4c8131",
      "sender": "gmaxwell",
      "payload": "okay!",
      "action": false,
      "timestamp": "2017-02-16T19:44:02+00:00"
    },
    {
      "id": "b83dbce03c8b4bd7ad0fa63def896956",
      "sender": "wumpus",
      "payload": "gmaxwell: oh, didn't know you were still typing, sorry",
      "action": false,
      "timestamp": "2017-02-16T19:44:16+00:00"
    },
    {
      "id": "0270f33b8b9449768cd73cf69613a8fb",
      "sender": "cfields",
      "payload": "I have some local changes that implement the concept of different clocks/time_points/durations. The objective is for them to be incompatible with each-other.",
      "action": false,
      "timestamp": "2017-02-16T19:44:18+00:00"
    },
    {
      "id": "e4656ece517f410db51ec6615f81c371",
      "sender": "gmaxwell",
      "payload": "thats fine! just some things to think about.",
      "action": false,
      "timestamp": "2017-02-16T19:44:27+00:00"
    },
    {
      "id": "fd2536a16ff5434fb9ed5e837590104d",
      "sender": "wumpus",
      "payload": "cfields: yes, that seems the way to go about it",
      "action": false,
      "timestamp": "2017-02-16T19:44:33+00:00"
    },
    {
      "id": "295f17efa80a4b1c84c73c760363031c",
      "sender": "sipa",
      "payload": "cfields: f i may interject... i was thinking about creating a generic int class wrapper that supports no implicit conversioms",
      "action": false,
      "timestamp": "2017-02-16T19:44:54+00:00"
    },
    {
      "id": "f03ae2cc1faa46129fadeaabeb6f31dd",
      "sender": "gmaxwell",
      "payload": "cfields: pieter and I were talking about type safty recently, and pieter suggested a scheme for introducing more integer types which will never implicitly be converted.",
      "action": false,
      "timestamp": "2017-02-16T19:44:59+00:00"
    },
    {
      "id": "917c9f00286e4685aced798745721e6a",
      "sender": "wumpus",
      "payload": "most importantly we should start using monotonic timestamps in the network code where possible",
      "action": false,
      "timestamp": "2017-02-16T19:45:19+00:00"
    },
    {
      "id": "f8ca266a68364d5ab6c944a0275ab532",
      "sender": "cfields",
      "payload": "that sounds fine, but i'm not sure that they're entirely related here. The (my) objective is to stop storing time as an int, and instead as a time_value",
      "action": false,
      "timestamp": "2017-02-16T19:45:51+00:00"
    },
    {
      "id": "b6b57d98b6244b62ba4bdfe9dc64c7d5",
      "sender": "sipa",
      "payload": "cfields: or are timestamps in a c++11 world not something that fit in integers?",
      "action": false,
      "timestamp": "2017-02-16T19:46:01+00:00"
    },
    {
      "id": "bca5fec551444fb6b4b1f448dcc31fdb",
      "sender": "cfields",
      "payload": "that way it can be represented in sec/msec/whatever whenever it's needed",
      "action": false,
      "timestamp": "2017-02-16T19:46:04+00:00"
    },
    {
      "id": "10366ac7bbab49de95ca55602be36ae4",
      "sender": "cfields",
      "payload": "sipa: exactly",
      "action": false,
      "timestamp": "2017-02-16T19:46:10+00:00"
    },
    {
      "id": "a7e58a564fb8485ca6d3f2c3e283f804",
      "sender": "cfields",
      "payload": "it also enforces timestamps that can't be used on the wrong clock",
      "action": false,
      "timestamp": "2017-02-16T19:46:23+00:00"
    },
    {
      "id": "3fdaac2e1c244f72beecd4226293312e",
      "sender": "sipa",
      "payload": "i'm confused",
      "action": false,
      "timestamp": "2017-02-16T19:46:32+00:00"
    },
    {
      "id": "3baa4977f41445a2b285f9a4e3615aac",
      "sender": "gmaxwell",
      "payload": "I have suggested in the past that we consider constructing a monotonic local clock, but wumpus seemed to not like the idea. which I think is orthorgonal to the type safty thing, but it would perhaps make time more sane in the codebase.",
      "action": false,
      "timestamp": "2017-02-16T19:46:37+00:00"
    },
    {
      "id": "42b35e0c8619494f88ca2c96ba334a0c",
      "sender": "wumpus",
      "payload": "cfields: in general that sounds good, though in some structures such as the block index we want to use as compact types as possible",
      "action": false,
      "timestamp": "2017-02-16T19:46:44+00:00"
    },
    {
      "id": "4da84953b71648408a0bbb3470b506bc",
      "sender": "gmaxwell",
      "payload": "saftey*",
      "action": false,
      "timestamp": "2017-02-16T19:47:02+00:00"
    },
    {
      "id": "725bc7f70fa741368dcedd266b1ead30",
      "sender": "gmaxwell",
      "payload": "doh",
      "action": false,
      "timestamp": "2017-02-16T19:47:09+00:00"
    },
    {
      "id": "355c2f0f15bc48079d9d126acca600b6",
      "sender": "cfields",
      "payload": "wumpus: sure, you can always get an int out of it if you want",
      "action": false,
      "timestamp": "2017-02-16T19:47:12+00:00"
    },
    {
      "id": "528bf9bf54b14c169b32330791fa305c",
      "sender": "wumpus",
      "payload": "gmaxwell: huh I'm all for using monotonic clocks were possible, they're just not good for everything",
      "action": false,
      "timestamp": "2017-02-16T19:47:13+00:00"
    },
    {
      "id": "4495af7acc9a49e0b8ab03fe47451950",
      "sender": "gmaxwell",
      "payload": "safety**",
      "action": false,
      "timestamp": "2017-02-16T19:47:22+00:00"
    },
    {
      "id": "47fa3a98411e4ea28cec5b3e9cb80d71",
      "sender": "sipa",
      "payload": "cfields: my point was to have a template<typename tag> class non_convertible_int",
      "action": false,
      "timestamp": "2017-02-16T19:47:48+00:00"
    },
    {
      "id": "6a3babf5d6f648a5a03aeaee7d6d960b",
      "sender": "cfields",
      "payload": "also, i believe the class is actually not bigger than an int. It's just not convertable to int",
      "action": false,
      "timestamp": "2017-02-16T19:47:52+00:00"
    },
    {
      "id": "3cffdb80379f455e9ba4fbebeeec3083",
      "sender": "wumpus",
      "payload": "cfields: well if it represents micro/nanosecond it needs to be at least uint64 :)",
      "action": false,
      "timestamp": "2017-02-16T19:48:21+00:00"
    },
    {
      "id": "dff33cf6b0ee4326a498359f649df7c6",
      "sender": "sipa",
      "payload": "and then have typedef non_comvertible_int<systemtime> systemtime_type",
      "action": false,
      "timestamp": "2017-02-16T19:48:23+00:00"
    },
    {
      "id": "4c073f050e9b4b488a5664cd4f61ed02",
      "sender": "sipa",
      "payload": "and systemtype_type is what is used",
      "action": false,
      "timestamp": "2017-02-16T19:48:36+00:00"
    },
    {
      "id": "f413b9c285084e45a78098ad7cd76ca7",
      "sender": "gmaxwell",
      "payload": "you would get_int() on the object to get an int. You would just get a conversion by surprise.",
      "action": false,
      "timestamp": "2017-02-16T19:48:44+00:00"
    },
    {
      "id": "d93dd0ac7a9e48d2a27d11ad42d0441f",
      "sender": "sipa",
      "payload": "*systemtime_type",
      "action": false,
      "timestamp": "2017-02-16T19:48:45+00:00"
    },
    {
      "id": "6fa1cce567554438a688f58cde9cebc1",
      "sender": "gmaxwell",
      "payload": "I would _hope_ we can construct something that at runtime is _exactly_ equal to using an integer.",
      "action": false,
      "timestamp": "2017-02-16T19:48:54+00:00"
    },
    {
      "id": "d0ee6800225442589b498e07f23ae918",
      "sender": "sipa",
      "payload": "cfields: you're being inconsistent",
      "action": false,
      "timestamp": "2017-02-16T19:49:06+00:00"
    },
    {
      "id": "a32d4ba6690a412aae01222e1141cc6d",
      "sender": "cfields",
      "payload": "sipa: http://en.cppreference.com/w/cpp/chrono/time_point",
      "action": false,
      "timestamp": "2017-02-16T19:49:19+00:00"
    },
    {
      "id": "c4d11fe51f0d44f0b15c33040843217d",
      "sender": "gmaxwell",
      "payload": "I think we should do this far more broadly than just timestamps however.",
      "action": false,
      "timestamp": "2017-02-16T19:49:42+00:00"
    },
    {
      "id": "e6d364bb7e9a4ea6942b5b13a1df8800",
      "sender": "sipa",
      "payload": "we can't use that in blocks, etc",
      "action": false,
      "timestamp": "2017-02-16T19:49:43+00:00"
    },
    {
      "id": "dfbab54e55824038b6c8c051679568a0",
      "sender": "wumpus",
      "payload": "indeed - block times /consensus are a special case",
      "action": false,
      "timestamp": "2017-02-16T19:50:08+00:00"
    },
    {
      "id": "7360837e57134918b0879e1ae61d01d4",
      "sender": "cfields",
      "payload": "sipa: we don't use timeval in blocks either though, we convert from the clock",
      "action": false,
      "timestamp": "2017-02-16T19:50:25+00:00"
    },
    {
      "id": "bc3070497c994ba4a32bb016585e1369",
      "sender": "sipa",
      "payload": "but perhaps we should use those types in network state, measuring speed, ...",
      "action": false,
      "timestamp": "2017-02-16T19:50:26+00:00"
    },
    {
      "id": "8c0505c3d1c544dfb68eaff068d352a5",
      "sender": "cfields",
      "payload": "sipa: i'll demonstrate with code, probably easier that way",
      "action": false,
      "timestamp": "2017-02-16T19:50:35+00:00"
    },
    {
      "id": "d6400b6160554913b69bf54c976c9424",
      "sender": "wumpus",
      "payload": "right",
      "action": false,
      "timestamp": "2017-02-16T19:50:53+00:00"
    },
    {
      "id": "66747707de7a4097b4bb761b3e22ffc0",
      "sender": "sipa",
      "payload": "cfields: what i want to address is the fact that an int or int64 can now mean microseconds, milliseconds, or seconds, and either system time, or monotonous time, or network-adjusted timr",
      "action": false,
      "timestamp": "2017-02-16T19:51:13+00:00"
    },
    {
      "id": "e59013fe475a4462bc506cbdff8e0a11",
      "sender": "sipa",
      "payload": "it's fine that those are int-like, but they shouldn't be convertible from one into another",
      "action": false,
      "timestamp": "2017-02-16T19:51:44+00:00"
    },
    {
      "id": "ae73037f49dc47ba8660d1bd560fa8f2",
      "sender": "cfields",
      "payload": "sipa: and that's exactly what i've addressed. Each of those gets its own type, and they're not convertable to eachother. But you can do a duration_cast<std::chrono::seconds>(foo) and get an int64_t seconds value out",
      "action": false,
      "timestamp": "2017-02-16T19:51:59+00:00"
    },
    {
      "id": "7521c895a4494bdf8d56e4301976679b",
      "sender": "sipa",
      "payload": "anyway, for everything but consensus data structures, perhaps there are more c++ish ways",
      "action": false,
      "timestamp": "2017-02-16T19:52:09+00:00"
    },
    {
      "id": "4ae1697c24424bf68af27f70e2234733",
      "sender": "sipa",
      "payload": "cfields: let's discuss this outside of theeeting",
      "action": false,
      "timestamp": "2017-02-16T19:52:50+00:00"
    },
    {
      "id": "893e98df4b934d678bebe3f6b859e50d",
      "sender": "gmaxwell",
      "payload": "This problem exists far beyond timestamps however. Use a node ID as a tx count? no problem.  Use a vin index as a block number? no problem. Use a bytes sent as a relay bool? no problem.",
      "action": false,
      "timestamp": "2017-02-16T19:52:51+00:00"
    },
    {
      "id": "fabe7f0fa1494efe97e5e563f455a410",
      "sender": "gmaxwell",
      "payload": "We have multiple times had potentially serious bugs from the general issue of implicit conversions.",
      "action": false,
      "timestamp": "2017-02-16T19:53:16+00:00"
    },
    {
      "id": "6d2176b03e314e6c9972f0456cc40747",
      "sender": "cfields",
      "payload": "gmaxwell: yes, agreed that the tag would be very useful",
      "action": false,
      "timestamp": "2017-02-16T19:53:35+00:00"
    },
    {
      "id": "db79019c540c44b29f00b82c7eae55a4",
      "sender": "gmaxwell",
      "payload": "(or in the case of sighash single, an actual consensus behavior flaw)",
      "action": false,
      "timestamp": "2017-02-16T19:53:42+00:00"
    },
    {
      "id": "6fbf46f896d440acbb314c9542281416",
      "sender": "cfields",
      "payload": "sipa: np",
      "action": false,
      "timestamp": "2017-02-16T19:53:50+00:00"
    },
    {
      "id": "a93627c973a049698e603cb104388a69",
      "sender": "sipa",
      "payload": "jtimon had a topic as well",
      "action": false,
      "timestamp": "2017-02-16T19:53:51+00:00"
    },
    {
      "id": "0e85e8b5478043d493cd5f26ca32bb02",
      "sender": "wumpus",
      "payload": "using enumerations instead of booleans would also go a long way",
      "action": false,
      "timestamp": "2017-02-16T19:53:56+00:00"
    },
    {
      "id": "837007ab092043de94c1e669d445b3c4",
      "sender": "jtimon",
      "payload": "well, just a question really",
      "action": false,
      "timestamp": "2017-02-16T19:54:00+00:00"
    },
    {
      "id": "2748856e1c9049ba9122bb64195eaa8a",
      "sender": "jonasschnelli",
      "payload": "I also have a little proposal",
      "action": false,
      "timestamp": "2017-02-16T19:54:03+00:00"
    },
    {
      "id": "84e5967f44634261a20bdab57418704c",
      "sender": "gmaxwell",
      "payload": "all the data is there in the compile to prevent these mistakes, we're just not exposing it right. :)",
      "action": false,
      "timestamp": "2017-02-16T19:54:04+00:00"
    },
    {
      "id": "c552098f53d0496bb8f743cbf25808fc",
      "sender": "jtimon",
      "payload": "I guess it can wait after the meeting",
      "action": false,
      "timestamp": "2017-02-16T19:54:13+00:00"
    },
    {
      "id": "a17fd6418ce8452589a4d31ee81ebbe0",
      "sender": "wumpus",
      "payload": "especially for functions that have tons of boolean arguments in succession, that's just crazy",
      "action": false,
      "timestamp": "2017-02-16T19:54:16+00:00"
    },
    {
      "id": "11ac12f2948547c78f985bbf423651f9",
      "sender": "sipa",
      "payload": "wumpus: yeah, generally useful",
      "action": false,
      "timestamp": "2017-02-16T19:54:17+00:00"
    },
    {
      "id": "c69b710784f04a7bae2744c5024a826a",
      "sender": "gmaxwell",
      "payload": "wumpus: yea, using bools, also using structs to get named parameters... lots of things we can do.",
      "action": false,
      "timestamp": "2017-02-16T19:54:26+00:00"
    },
    {
      "id": "238aed221ce94b6798299a3bf7475536",
      "sender": "cfields",
      "payload": "wumpus: for sure",
      "action": false,
      "timestamp": "2017-02-16T19:54:30+00:00"
    },
    {
      "id": "ae6aa82ef5574ab1af7826b1d4e58d1d",
      "sender": "jtimon",
      "payload": "or answered fast enough that it doesn't need its own topic: \"why 9619 doesn't go in for 0.14?\"",
      "action": false,
      "timestamp": "2017-02-16T19:54:43+00:00"
    },
    {
      "id": "15d0439d8d714140be7cd5f40dc87d57",
      "sender": "gmaxwell",
      "payload": "true false true true false die die die.  ... I hate counting aruments when changing things.",
      "action": false,
      "timestamp": "2017-02-16T19:54:48+00:00"
    },
    {
      "id": "9d9145aaca8940c989c994868ee5edae",
      "sender": "morcos",
      "payload": "jtimon: i think because there was an error reported and no explanation that it was fixed or wasn't really a problem.  that's at least why i haven't looked at the PR.",
      "action": false,
      "timestamp": "2017-02-16T19:54:48+00:00"
    },
    {
      "id": "bb03f91cb647405c9b4226f5e6f84cb6",
      "sender": "wumpus",
      "payload": "(well with some IDEs you can see what gets assigned to what parameter because it parses the interface, but that's not something you can realy on that everyone has available)",
      "action": false,
      "timestamp": "2017-02-16T19:54:53+00:00"
    },
    {
      "id": "f05dc6b066e648c492cc2c06ecab937c",
      "sender": "wumpus",
      "payload": "gmaxwell: exactly",
      "action": false,
      "timestamp": "2017-02-16T19:55:00+00:00"
    },
    {
      "id": "66ee35eb21b54ff6a98345e7bfdae7af",
      "sender": "wumpus",
      "payload": "jtimon: what was your topic?",
      "action": false,
      "timestamp": "2017-02-16T19:55:08+00:00"
    },
    {
      "id": "b392d7bacda44f4982bcf2edab1b7de1",
      "sender": "instagibbs",
      "payload": "gmaxwell, the fun really starts when you drop an arg with a default value at the end",
      "action": false,
      "timestamp": "2017-02-16T19:55:09+00:00"
    },
    {
      "id": "4000dd9ba0fc42f0906c55631deb4644",
      "sender": "cfields",
      "payload": "(or three)",
      "action": false,
      "timestamp": "2017-02-16T19:55:21+00:00"
    },
    {
      "id": "935bdf9cd7e74f79bec08da80b2ad0ce",
      "sender": "jtimon",
      "payload": "morcos: that explains why is not merged, not why it's not labeled 0.14, but ok I guess",
      "action": false,
      "timestamp": "2017-02-16T19:55:28+00:00"
    },
    {
      "id": "f800cf086f1d4d9e93100249d006aa42",
      "sender": "wumpus",
      "payload": "jtimon: let's reverse the question: why would it need to be added for 0.14?",
      "action": false,
      "timestamp": "2017-02-16T19:55:53+00:00"
    },
    {
      "id": "b55fd09a7cf34ff6b91fb17871d1d4ee",
      "sender": "jtimon",
      "payload": "wumpus: including 9619 in 0.14",
      "action": false,
      "timestamp": "2017-02-16T19:55:55+00:00"
    },
    {
      "id": "df49f69ad6a64712aad8e0a8748f59b0",
      "sender": "jtimon",
      "payload": "it's a bugfix and is simple enough, why not?",
      "action": false,
      "timestamp": "2017-02-16T19:56:11+00:00"
    },
    {
      "id": "df5569281efa4f44a676eb92bf6497e5",
      "sender": "sipa",
      "payload": "i think it can go in, it's trivial and very small in scope",
      "action": false,
      "timestamp": "2017-02-16T19:56:41+00:00"
    },
    {
      "id": "0728e9b0e79f4cfaba8b88daeb9df987",
      "sender": "gmaxwell",
      "payload": "basically without it a plausable downstream gbt user that changes the transaction set could construct an overlarge block, is that the concern there?",
      "action": false,
      "timestamp": "2017-02-16T19:56:45+00:00"
    },
    {
      "id": "95e61e16a95841a1a2f29da816f2618d",
      "sender": "wumpus",
      "payload": "I'm fine with merging it before 0.14, if its sufficiently reviewed and teste",
      "action": false,
      "timestamp": "2017-02-16T19:56:46+00:00"
    },
    {
      "id": "43b4e0e8eebb46328620025f979cdc5d",
      "sender": "wumpus",
      "payload": "it will however not hold up rc1",
      "action": false,
      "timestamp": "2017-02-16T19:56:50+00:00"
    },
    {
      "id": "520012754ea24504851d1c17d8327ca9",
      "sender": "gmaxwell",
      "payload": "it looks trivial and small in scope, and if my understanding is correct it should go in.. but sure, nothing should hold up rc1.",
      "action": false,
      "timestamp": "2017-02-16T19:57:08+00:00"
    },
    {
      "id": "3e3d43741f704330850ec562ad389676",
      "sender": "gmaxwell",
      "payload": "at least nothing that we know of now.",
      "action": false,
      "timestamp": "2017-02-16T19:57:19+00:00"
    },
    {
      "id": "e578b9c95f4c4d2ea7d412a3a07b5395",
      "sender": "sipa",
      "payload": "fair",
      "action": false,
      "timestamp": "2017-02-16T19:57:20+00:00"
    },
    {
      "id": "5ade6aaa8ed544409eda17bc1134cfff",
      "sender": "jonasschnelli",
      "payload": "Not sure if this makes sense, But I propose to rename the ./qa dir to ./test (or something that sorts after ./src). I think it would be better to have the RPC tests further down in the PRs diff.",
      "action": false,
      "timestamp": "2017-02-16T19:57:35+00:00"
    },
    {
      "id": "0b7935c9c62e43da8bb16fa9b0d8e657",
      "sender": "jtimon",
      "payload": "sure, was simply surprised it didn't had the 0.14 label since it's not really that new",
      "action": false,
      "timestamp": "2017-02-16T19:57:36+00:00"
    },
    {
      "id": "12116cda7d7b405593b2b0e724473cfc",
      "sender": "Victorsueca",
      "payload": "I see lots of utACKs but not any ACK, so trivial it doesn't need testing I assume?",
      "action": false,
      "timestamp": "2017-02-16T19:57:57+00:00"
    },
    {
      "id": "02b07489ef304675a8aa7ee94a685d71",
      "sender": "gmaxwell",
      "payload": "short of some kind of crash eat money doom bug showing up before we manage to get it out (and even that shouldn't delay _constructing_ RC1; if doom shows up we can abort launch)",
      "action": false,
      "timestamp": "2017-02-16T19:57:57+00:00"
    },
    {
      "id": "6c0f186cba2444698cdd478df904e5ae",
      "sender": "wumpus",
      "payload": "gmaxwell: sure, there are always serious enough problems possible that should postpone the release",
      "action": false,
      "timestamp": "2017-02-16T19:58:30+00:00"
    },
    {
      "id": "77959a9ac48348ae9bb911926d2274ae",
      "sender": "gmaxwell",
      "payload": "jonasschnelli: On that I'd like to get into a state where make check is running those tests. They are most of our tests now, and the most valuable.. and really people building with compilers we've never seen before _REALLY_ ought to be running them.",
      "action": false,
      "timestamp": "2017-02-16T19:58:57+00:00"
    },
    {
      "id": "a4bd1b2519ef47efa23848575bfc024f",
      "sender": "wumpus",
      "payload": "jonasschnelli: don't really have an opinion on that, does it matter much how things are sorted?",
      "action": false,
      "timestamp": "2017-02-16T19:59:18+00:00"
    },
    {
      "id": "2d92f61441b54c58b3f90f7288618459",
      "sender": "gmaxwell",
      "payload": "Why would the sorting matter?",
      "action": false,
      "timestamp": "2017-02-16T19:59:35+00:00"
    },
    {
      "id": "89f630116da94276a00171271d00a8c7",
      "sender": "jonasschnelli",
      "payload": "As long as review is a bottleneck I think it matters",
      "action": false,
      "timestamp": "2017-02-16T19:59:39+00:00"
    },
    {
      "id": "bcdc6c430a74416bacae721cb81120b6",
      "sender": "jonasschnelli",
      "payload": "But maybe I'm alone with that opinion.",
      "action": false,
      "timestamp": "2017-02-16T19:59:53+00:00"
    },
    {
      "id": "61a765fd0611450e9c94f876a073943f",
      "sender": "gmaxwell",
      "payload": "OH so they show up lower on github.",
      "action": false,
      "timestamp": "2017-02-16T20:00:05+00:00"
    },
    {
      "id": "69357a2e42214ff49d8b8f162780eca9",
      "sender": "sipa",
      "payload": "/zzztest",
      "action": false,
      "timestamp": "2017-02-16T20:00:21+00:00"
    },
    {
      "id": "95cf35760ab749849eeab882820a9972",
      "sender": "wumpus",
      "payload": "my biggest pet peeve is that they're called RPC tests, not 'functional tests' or such, they're testing much more than RPC these days :)",
      "action": false,
      "timestamp": "2017-02-16T20:00:28+00:00"
    },
    {
      "id": "e86b220d5cac4051bf10d63434ed8e61",
      "sender": "jonasschnelli",
      "payload": "./test_functional",
      "action": false,
      "timestamp": "2017-02-16T20:00:41+00:00"
    },
    {
      "id": "dc91c3cd15e04b31932ea5757e4ef8f9",
      "sender": "gmaxwell",
      "payload": "It is sometimes a bit confusing that the tests show up first... otoh it can be informative to read the test before the change in the cases where the test is especially good. :)",
      "action": false,
      "timestamp": "2017-02-16T20:00:43+00:00"
    },
    {
      "id": "7c05db0effb44fe6b6df090c4bf02075",
      "sender": "wumpus",
      "payload": "but not serious enough to actually go on renamind directories",
      "action": false,
      "timestamp": "2017-02-16T20:00:45+00:00"
    },
    {
      "id": "2338e3423e62449582f8fc85df4d046a",
      "sender": "sipa",
      "payload": "also, pull-tester should be merged in rpc-tests",
      "action": false,
      "timestamp": "2017-02-16T20:00:49+00:00"
    },
    {
      "id": "a874dd91816c4a0792aa742bce5b3b70",
      "sender": "gmaxwell",
      "payload": "wumpus: they are \"system tests\"  rpc is incidental.",
      "action": false,
      "timestamp": "2017-02-16T20:00:51+00:00"
    },
    {
      "id": "f655d0a929664ec0ad338f7b8b4ed68c",
      "sender": "sipa",
      "payload": "we don't have pulltester anymore, and it's annoying to always change directory :)",
      "action": false,
      "timestamp": "2017-02-16T20:01:36+00:00"
    },
    {
      "id": "86b554cbde51446d80d45bff0ef8bde9",
      "sender": "wumpus",
      "payload": "gmaxwell: yes, it doesn't matter what interface they use, whether it's RPC or P2P or ZMQ or REST or command line arguments etc",
      "action": false,
      "timestamp": "2017-02-16T20:01:44+00:00"
    },
    {
      "id": "ae9c7b9d1bd248048fbf7061d89f01c9",
      "sender": "instagibbs",
      "payload": "we're over time",
      "action": false,
      "timestamp": "2017-02-16T20:01:44+00:00"
    },
    {
      "id": "8be40d0479aa49b4a6d919176b000b0f",
      "sender": "instagibbs",
      "payload": "btw",
      "action": false,
      "timestamp": "2017-02-16T20:01:46+00:00"
    },
    {
      "id": "03217d365cc14b01ac6e15f25d1833d4",
      "sender": "jonasschnelli",
      "payload": "Okay. I'll do a cleanup PR once we branch off.",
      "action": false,
      "timestamp": "2017-02-16T20:01:52+00:00"
    },
    {
      "id": "16a8bab2186f43039343406521cea4ad",
      "sender": "wumpus",
      "payload": "instagibbs: ah yes",
      "action": false,
      "timestamp": "2017-02-16T20:01:53+00:00"
    },
    {
      "id": "3ebf21648fe74bdba94d69c5c887d393",
      "sender": "wumpus",
      "payload": "#endmeeting",
      "action": false,
      "timestamp": "2017-02-16T20:01:55+00:00"
    }
  ],
  "events": [
    {
      "event_type": "START_MEETING",
      "message": {
        "id": "a0965e2817dc4cccbcf1cecd9d33472c",
        "sender": "wumpus",
        "payload": "#startmeeting",
        "action": false,
        "timestamp": "2017-02-16T19:02:37+00:00"
      },
      "operand": null,
      "id": "a0965e2817dc4cccbcf1cecd9d33472c",
      "timestamp": "2017-02-16T19:02:37+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "4a6d0f292f1a4777b9419c679c87b636",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/9760 | [wallet] Remove importmulti always-true check by ryanofsky \u00c3\u0082\u00c2\u00b7 Pull Request #9760 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2017-02-16T19:04:17+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/9760",
      "id": "4a6d0f292f1a4777b9419c679c87b636",
      "timestamp": "2017-02-16T19:04:17+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "6aa41e1c92f94ed2842d4b352bf9de1c",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/9761 | Use 2 hour grace period for key timestamps in importmulti rescans by ryanofsky \u00c3\u0082\u00c2\u00b7 Pull Request #9761 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2017-02-16T19:04:19+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/9761",
      "id": "6aa41e1c92f94ed2842d4b352bf9de1c",
      "timestamp": "2017-02-16T19:04:19+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "6e2f6756373a44288d54a9962cd38797",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/9619 | Bugfix: RPC/Mining: GBT should return 1 MB sizelimit before segwit activates by luke-jr \u00c3\u0082\u00c2\u00b7 Pull Request #9619 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2017-02-16T19:09:33+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/9619",
      "id": "6e2f6756373a44288d54a9962cd38797",
      "timestamp": "2017-02-16T19:09:33+00:00"
    },
    {
      "event_type": "LINK",
      "message": {
        "id": "d54b8999b9cb4176b7692c5a45025c01",
        "sender": "gribble",
        "payload": "https://github.com/bitcoin/bitcoin/issues/9773 | WIP: Return errors from importmulti if complete rescans are not successful (on top of #9761) by ryanofsky \u00c3\u0082\u00c2\u00b7 Pull Request #9773 \u00c3\u0082\u00c2\u00b7 bitcoin/bitcoin \u00c3\u0082\u00c2\u00b7 GitHub",
        "action": false,
        "timestamp": "2017-02-16T19:13:20+00:00"
      },
      "operand": "https://github.com/bitcoin/bitcoin/issues/9773",
      "id": "d54b8999b9cb4176b7692c5a45025c01",
      "timestamp": "2017-02-16T19:13:20+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "7a742611f9fa4b87a222e7aaef33f7a4",
        "sender": "wumpus",
        "payload": "#topic randomness",
        "action": false,
        "timestamp": "2017-02-16T19:26:54+00:00"
      },
      "operand": "randomness",
      "id": "7a742611f9fa4b87a222e7aaef33f7a4",
      "timestamp": "2017-02-16T19:26:54+00:00"
    },
    {
      "event_type": "TOPIC",
      "message": {
        "id": "0df9e56357e5435bb20b068f8e0bd7cb",
        "sender": "wumpus",
        "payload": "#topic clocks",
        "action": false,
        "timestamp": "2017-02-16T19:43:56+00:00"
      },
      "operand": "clocks",
      "id": "0df9e56357e5435bb20b068f8e0bd7cb",
      "timestamp": "2017-02-16T19:43:56+00:00"
    },
    {
      "event_type": "END_MEETING",
      "message": {
        "id": "3ebf21648fe74bdba94d69c5c887d393",
        "sender": "wumpus",
        "payload": "#endmeeting",
        "action": false,
        "timestamp": "2017-02-16T20:01:55+00:00"
      },
      "operand": null,
      "id": "3ebf21648fe74bdba94d69c5c887d393",
      "timestamp": "2017-02-16T20:01:55+00:00"
    }
  ],
  "aliases": {},
  "vote_in_progress": false,
  "motion_index": null
}