19:00:33 #startmeeting 19:00:33 Meeting started Fri Sep 13 19:00:33 2019 UTC. The chair is meshcollider. Information about MeetBot at http://wiki.debian.org/MeetBot. 19:00:33 Useful Commands: #action #agreed #help #info #idea #link #topic. 19:00:39 #bitcoin-core-dev Wallet Meeting: wumpus sipa gmaxwell jonasschnelli morcos luke-jr sdaftuar jtimon cfields petertodd kanzure bluematt instagibbs phantomcircuit codeshark michagogo marcofalke paveljanik NicolasDorier jl2012 achow101 meshcollider jnewbery maaku fanquake promag provoostenator aj Chris_Stewart_5 dongcarl gwillen jamesob ken281221 ryanofsky gleb moneyball 19:00:43 hi 19:00:48 oh hi 19:01:02 hi 19:01:03 Topics this week? 19:01:11 hi 19:01:17 hi 19:01:18 hi 19:01:19 Last minute feature pushes? :P 19:01:33 miniscript pretty please? 19:01:34 hi 19:01:36 let's merge #16341 :p 19:01:36 * sipa hides 19:01:39 https://github.com/bitcoin/bitcoin/issues/16341 | Introduce ScriptPubKeyMan interface and use it for key and script management (aka wallet boxes) by achow101 · Pull Request #16341 · bitcoin/bitcoin · GitHub 19:01:41 sipa, haha 19:02:05 oh yeah #16341: I'd really like that in in not forever. It's a lot of manual looking, but not hard to track imo 19:02:08 https://github.com/bitcoin/bitcoin/issues/16341 | Introduce ScriptPubKeyMan interface and use it for key and script management (aka wallet boxes) by achow101 · Pull Request #16341 · bitcoin/bitcoin · GitHub 19:02:14 lol 19:02:20 I have to go get kids at school, but how about #15987 19:02:23 https://github.com/bitcoin/bitcoin/issues/15987 | Wallet, GUI: Warn when sending to already-used Bitcoin addresses by luke-jr · Pull Request #15987 · bitcoin/bitcoin · GitHub 19:03:28 I kind of forgot to hound people for review before feature freeze, but #16727 is pretty easy 19:03:30 https://github.com/bitcoin/bitcoin/issues/16727 | wallet: Explicit feerate for bumpfee by instagibbs · Pull Request #16727 · bitcoin/bitcoin · GitHub 19:03:40 luke-jr: feature freeze is probably too close for that 19:03:40 #15204 is the only wallet PR tagged as 0.19 at the moment I think 19:03:43 https://github.com/bitcoin/bitcoin/issues/15204 | gui: Add Open External Wallet action by promag · Pull Request #15204 · bitcoin/bitcoin · GitHub 19:05:01 although, looking at it gives me an idea: what if we used a bloom filter for descriptor wallet ismine rather than generating and loading every scriptpubkey? 19:05:13 Basically none of these PRs have any review yet so if you want one of these in, go review it :) 19:05:15 false positives lol 19:05:17 meshcollider: PR #16822 is tagged for 0.19 19:05:20 https://github.com/bitcoin/bitcoin/issues/16822 | gui: Create wallet menu option follow-ups by jonatack · Pull Request #16822 · bitcoin/bitcoin · GitHub 19:06:18 achow101: or BIP158 filter 19:06:41 achow101: you'd generate the bloom filter on the fly from the scriptPubKeys i guess, still? 19:06:45 on second thought, it probably wouldn't work. we still need a map of scriptPubKeys to descriptor indexes in order to be able to get the keys to sign them 19:07:13 and false positives are not a problem; you do a full check for every match 19:08:02 is it really that much benefit to have both a filter and all of thes scriptpubkeys? 19:08:14 it may be much faster 19:08:27 though, that's a question for later 19:08:46 yes 19:08:51 just having an explicit set of scriptPubKeys to IsMineness will be much faster than the current IsMine logic already 19:09:48 good point 19:09:53 yes 19:10:29 although now I kinda want to know how long it takes IsMine to check that 2 GB testnet wallet that may or may not still exist 19:12:18 Just checking whether a key is in a map is not that slow is it? 19:12:48 I think std::map is O(nlog(n)) 19:13:02 log(n) access... 19:13:43 std::unordered_map is O(1) (ignoring the fact that pointer size eventually has to grow O(log n) with the size of the table) 19:14:21 Yeah that's a hash map right sipa? 19:15:25 instagibbs: oh right. std::map is log(n) everything 19:16:54 So I think an unordered_map of your scriptPubKeys is efficient enough without worrying about filters or whatever 19:18:27 cool. I hadn't realized c++ actually provided a hash map 19:18:31 unordered map averages amort O(1) for operations, which can initially be O(n), but ordered map is always O(log n), so it really depends on how you use it. 19:18:55 we're using chains of addresses we control, so hash collisions should be extremely rare? 19:18:58 tryphe: it depends on whether there are collisions, no? or resizing, but size can be set initially 19:19:56 not that it really matters, whatever we use will be faster than current IsMine 19:20:03 achow101, iirc, it does something to prevent collisions (maybe i am thinking of just QHash<>),, but i think you are right 19:22:05 Yeah I think the O(n) is only the case where all n elements have the same hash and it has to linearly search through them all 19:22:10 indeed 19:22:20 let's just tell it to use sha256 :p 19:22:36 we use salted siphash for hashmaps elsewhere 19:23:05 more than sufficient considering wallet will control inputs 19:23:06 which is just as good as sha256 truncated to 64 bit output 19:23:08 (I think) 19:23:34 instagibbs: people could import some weird shit 19:23:47 SFTL :P 19:23:59 actually, that wouldn't matter since each import would be its own scriptpubkeyman and thus have it's own map 19:24:11 If people want to slow their own wallet down deliberately, let them :p 19:24:43 actually it's a reasonable point, never know how people are going to use thew allet 19:25:01 So anyway yeah in terms of PRs for 0.19, any other begs for review? 19:25:22 Nothing seems particularly pushed-for at the moment 19:25:36 And any other topics for today? 19:26:14 any suggestions for having the gui inform the wallet that it's done loading transactions? 19:26:32 context: the stuff I'm working on to not load every tx into memory 19:27:54 the gui does some thing where it reads through every txout in order to build the transactions list. i would like it to not hammer the disk so it should do it when the transactions are initially loaded into the wallet before they are kicked out later 19:30:09 It just does it once right 19:30:19 yes 19:34:12 I don't know off the top of my head but can't you do a callback thingy 19:35:51 [13bitcoin] 15jnewbery opened pull request #16866: [wallet] Rename 'decode' argument in gettransaction method to 'verbose' (06master...062019-09-change-gettransaction-arg-name) 02https://github.com/bitcoin/bitcoin/pull/16866 19:36:01 I guess I could just use a signal. there's some things with async that I'm not sure about (GUI has it's own thread, so may be ready before wallet is?) 19:38:46 any other topics? 19:39:07 Doesn't look like it :) 19:39:20 #endmeeting