19:00:31 <meshcollider> #startmeeting
19:00:31 <lightningbot> Meeting started Fri Jul  3 19:00:31 2020 UTC.  The chair is meshcollider. Information about MeetBot at http://wiki.debian.org/MeetBot.
19:00:31 <lightningbot> Useful Commands: #action #agreed #help #info #idea #link #topic.
19:00:36 <meshcollider> #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 ariard digi_james amiti fjahr
19:00:36 <meshcollider> jeremyrubin emilengler jonatack hebasto jb55
19:00:41 <BlueMatt> sipa: yes, afaict, once you 'find them' you're good, but essentially its super, super, super difficult to find onions from square 1
19:00:45 <achow101> hi
19:01:04 <sipa> BlueMatt: they only really propagate through onion-enabled peers
19:01:07 <BlueMatt> (presumably because they dont relay between non-onion peers nearly at all, and unless you are onion-only you'll be largely blind)
19:01:10 <meshcollider> Now, I know luke-jr still has a proposed topic, were there any more?
19:01:36 <BlueMatt> right, but my observations seem to indicate that you almost have to be onion-only, or at least connect to onion only to learn any, really
19:01:50 <BlueMatt> all anecdotal, of course
19:02:02 <achow101> is it too early to discuss deprecating and removing the legacy wallet?
19:02:10 <meshcollider> Yes :p
19:02:13 <sipa> achow101: yes
19:02:58 <meshcollider> Try again in v0.27
19:03:30 <achow101> i'll try again next year
19:03:44 <meshcollider> Is luke-jr here this time for his topic
19:04:39 <meshcollider> I guess not
19:04:56 <achow101> maybe if we say luke-jr enough times he'll show up
19:05:08 <sipa> tonal tonal tonal
19:05:52 <meshcollider> Alright, short meeting again then :)
19:05:55 <luke-jr> achow101 must be joking
19:06:11 <luke-jr> I need a reminder what my topic is :D
19:06:12 <luke-jr>19:06:14 <luke-jr> is my IRC broken?
19:06:19 <achow101> luke-jr: not anymore
19:06:23 <sipa> we can read you
19:06:27 <achow101> 2020-06-17.log:12:15 < luke-jr> #proposedwalletmeetingtopic revert #6550 (conceptually) - merkle branches stored in the wallet would be useful for pruned nodes [w/ watch-only wallets]
19:06:31 <gribble> https://github.com/bitcoin/bitcoin/issues/6550 | Do not store Merkle branches in the wallet. by sipa · Pull Request #6550 · bitcoin/bitcoin · GitHub
19:06:58 <luke-jr> ah right
19:07:14 <luke-jr> apparently Electrum-Personal-Server and similar projects could really use those merkle branches
19:07:41 <meshcollider> #topic Merkle branches stored in wallet (luke-jr)
19:08:17 <luke-jr> sipa: what was the motivation for removing them? is it okay to add them back?
19:08:18 <achow101> I can see the case for wanting these for pruned wallets in general
19:08:36 <achow101> it seems like the original motivation was that they were useless
19:08:36 <sipa> luke-jr: they were just not used by anything at the time
19:08:49 <sipa> no objection to adding them back if that is no longer the case
19:09:21 <luke-jr> should we bother to try to make it compatible with the old thing?
19:09:24 <sipa> vaguely related: we should also store the network fee for wallet transactions
19:09:30 <sipa> i don't think so
19:09:46 <achow101> i would prefer to be wholly new
19:09:59 <achow101> less headaches with possible compatibility states
19:10:10 <luke-jr> k
19:10:27 <luke-jr> what to do with wallets missing the info?
19:10:41 <sipa> a rescan will fix it
19:11:00 <luke-jr> but pruned wallets can't rescan necessarily
19:11:03 <luke-jr> and this is mainly for them..
19:11:12 <achow101> for not pruned wallets, it's easy to compute
19:11:25 <sipa> well if the data isn't there, there is nothing we can do
19:11:57 <achow101> i suppose a related feature would be the fetching of individual blocks over p2p for pruned nodes
19:12:00 <luke-jr> so maybe just omit it in RPC requests for txs missing it?
19:12:11 <sipa> achow101: ah the perennial feature request
19:12:12 <luke-jr> should it be an optional wallet feature?
19:12:38 <luke-jr> achow101: hmm, I suppose if we know the height it's possible, but seems complex
19:12:59 <luke-jr> and even if we get that, there's a period of time before the request is fulfilled
19:13:00 <achow101> luke-jr: I think we know the hash
19:13:26 <sipa> that's not enough to fetch it
19:14:33 <luke-jr> there's no way to get just the merkle tree I suspect
19:14:43 <luke-jr> bloom would get us exactly what we need, but has privacy problems
19:15:00 <luke-jr> in any case, I suspect all such fetching can be a later PR - it doesn't simplify the upfront feature
19:15:41 <achow101> it can just be one of those features that we do from now on and for old wallets that we can get the merkle branch for
19:16:12 <achow101> but for pruned nodes where those blocks have already been disarded, they're SOL
19:16:21 <luke-jr> achow101: I thought we weren't going to try to be compatible? besides, I think 0.12+ deleted that info even in old wallets?
19:16:50 <achow101> luke-jr: if you're adding a new record, it'll still be openable in old wallets, just not useful data
19:17:03 * luke-jr wonders if we should have a pruning setting to never discard blocks your wallet is involved in
19:17:05 <achow101> so it's not a version bump or an incompatible wallet flag
19:17:41 <luke-jr> achow101: oh, I misunderstood "old wallets that we can get the merkle branch for"
19:17:44 <jonatack> hi
19:17:49 <achow101> right
19:18:18 <luke-jr> is there any other info we might want to save?
19:18:33 <luke-jr> perhaps the transactions used as inputs?
19:18:37 <meshcollider> I feel like keeping the entire blocks your wallet is involved in would not be useful other than in weird cases like right now
19:18:51 <luke-jr> meshcollider: definitely don't want to do that ☺
19:18:53 <achow101> didn't we use to save transactions used as inputs
19:19:00 <luke-jr> oh, not in the wallet
19:19:05 <luke-jr> achow101: I think so
19:19:09 <sipa> we should store unconfirmed inputs too, i think
19:19:24 <sipa> but not using the exponential-blowup-fest approach that was used before
19:19:41 <luke-jr> sipa: I forget what we had before for this
19:20:01 <luke-jr> was the problem it saved the txs in the wallettx?
19:20:08 <sipa> yes
19:20:19 <luke-jr> so a new db entry per txid should fix that, right?
19:20:20 <achow101> CWalletTx needs to be trimmed
19:20:51 <luke-jr> refcounted I suppose
19:21:07 * luke-jr feels like he's had this discussion recently already :x
19:21:50 <sipa> i think we can just store the inputs as wallet txn
19:22:04 <achow101> We might want to store just the prev txos?
19:22:12 <sipa> which won't be IsMine(), but just there to fetch
19:22:18 <luke-jr> hmm
19:22:30 <luke-jr> achow101: that won't work if we need to send the entire tx to the hw wallet?
19:22:31 <sipa> achow101: i don't think that's useful
19:22:50 <sipa> ah, in taproot it may be
19:23:04 <sipa> but i was more thinking that this can help rebroadcasting
19:23:26 <achow101> ah.
19:23:50 <luke-jr> it used to be your wallet would keep the transactions it has an interest in alive..
19:23:58 <luke-jr> I guess we lost that
19:24:12 <achow101> I think storing the prevtxs as a wallet txn will confuse many things
19:24:23 <sipa> it may be, i'm not sure
19:24:45 <achow101> I'm pretty sure there's an implicit assumption that things in mapWalletTxs are actually involved in your wallet
19:24:49 <achow101> as in an input or output is yours
19:25:09 <sipa> maybe - but i think most things still filter using IsMine
19:25:21 <luke-jr> harmless to just change the db key
19:25:27 <achow101> I'd like to not do that (as much) in the future :)
19:25:28 <luke-jr> can read it as a wallettx type if that's useful
19:25:56 <achow101> right, just have it as another record would probably be better
19:26:03 <sipa> perhaps yes
19:26:23 <sipa> that also has less risk causing backward compatibility issues
19:28:14 <achow101> topic suggestion: legacy to descriptor wallet migration
19:29:23 <meshcollider> #topic legacy to descriptor wallet migration (achow101)
19:30:08 <achow101> did we determine whether it was possible to make all of the legacy things fit into descriptors?
19:30:44 <meshcollider> What do you mean by possible
19:30:55 <achow101> I would actually like to figure out how/if we can migrate people's wallets to descriptors so they don't lose anything
19:31:21 <sipa> sure, but it may need a huge amount of descriptors
19:31:39 <achow101> as in can we represent everything that could be in a legacy wallet as descriptors, and preferably not as thousands of descriptors
19:32:12 <achow101> I think we previously had concern that IsMine would match to a nearly infinite number of scripts, but I don't think that's possible anymore?
19:32:31 <sipa> i believe that's not the case anymore since bare multisig matching is gone
19:32:34 <achow101> s/possible/concern
19:33:38 <meshcollider> You can probably turn an HD wallet into a descriptor wallet okay
19:33:48 * luke-jr still prefers JBOK wallets
19:34:08 <sipa> infer a descriptor from HD information, expand it, see which scriptpubkeys it does not cover
19:34:26 <sipa> store the remaining ones as additional descriptors
19:34:29 <meshcollider> Obviously a non-HD wallet it's gonna be thousands of individual descriptors
19:34:30 <achow101> for non-HD, that's going to be a lot of descriptors
19:34:37 <sipa> yes
19:34:50 <achow101> what about imports?
19:35:13 <sipa> perhaps it makes sense to have a list() descriptor or something, which contains a list of non-ranged descriptors
19:35:28 <sipa> so that you can have one thing that represents an entire wallet, but still expose it as a "list"
19:35:54 <sipa> s/list/range/
19:35:56 <meshcollider> And have a similar range index thing as a ranged descriptor?
19:36:00 <sipa> right
19:36:21 <achow101> also, with descriptors we don't have the address type mutation thing, so I think migrating would require generating new active descriptors and all the old stuff is no longer used
19:37:34 <luke-jr> achow101: that was never *supposed* to work though
19:37:36 <luke-jr> do we need to support it?
19:38:24 <achow101> luke-jr: i mean retaining possible mutations on the old stuff that has already been used
19:38:38 <sipa> luke-jr: i think it's dangerous to remove things that were treated as IsMine
19:39:14 <luke-jr> I think once an address is used, we don't need to look for it in new blocks anymore <.<
19:39:30 <achow101> unfortunately that's not a reasonable assumption
19:39:48 <sipa> yeah
19:41:49 <achow101> so I think it should be possible to migrate, but it might be a bit ugly
19:42:01 <achow101> that's good to know
19:42:25 <meshcollider> The list descriptor is worth thinking about imo
19:42:54 <sipa> it's easy to add, but may become huge :)
19:43:18 <meshcollider> Certainly would become huge in a lot of cases :p
19:43:27 <luke-jr> I don't really get what there is to gain from this
19:43:45 <meshcollider> Achow just wants eventual legacy deprecation
19:44:16 <achow101> it's so we can ditch the legacy wallet in the future without forcing people to make wholly new wallets
19:44:22 <luke-jr> why?
19:44:43 <meshcollider> Because descriptor wallets are better
19:44:48 <luke-jr>19:44:56 <achow101> less stuff to maintaini
19:45:13 <luke-jr> couldn't we just load the old keys as descriptors in memory?
19:45:31 <achow101> yes but that's (probably) expensive
19:45:33 <meshcollider> That loses most of the benefits
19:45:43 <meshcollider> Anyway any other topics?
19:47:02 <meshcollider> #endmeeting