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