19:01:42 #startmeeting 19:01:42 Meeting started Fri Dec 14 19:01:42 2018 UTC. The chair is meshcollider. Information about MeetBot at http://wiki.debian.org/MeetBot. 19:01:42 Useful Commands: #action #agreed #help #info #idea #link #topic. 19:01:49 gwillen: i always assumed that it did 19:02:02 feowertyne niht 19:02:04 #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 19:02:29 Ok topics? 19:02:49 hi. 19:02:58 high priority for review? 19:02:59 yay, some stuff got merged 19:03:07 yes yay 19:03:13 Probably topics: 19:03:18 #14565 is wallety 19:03:19 1. progress towards descriptor wallets 19:03:23 https://github.com/bitcoin/bitcoin/issues/14565 | Overhaul importmulti logic by sipa · Pull Request #14565 · bitcoin/bitcoin · GitHub 19:03:26 2. progrress towards hardware wallets 19:03:46 #11082 isn't wallety, but is blocking provoostenator's wallety PRs 19:03:49 https://github.com/bitcoin/bitcoin/issues/11082 | Add new bitcoin_rw.conf file that is used for settings modified by this software itself by luke-jr · Pull Request #11082 · bitcoin/bitcoin · GitHub 19:04:07 hi 19:04:30 #topic high priority 19:04:30 jnewbery: it's blocking my future walety PR's (once I start on the GUI side of hardware wallets) 19:05:18 jnewbery: they are both already on the list right 19:05:36 Correct 19:05:37 14565 looks good. It was missing tests, but now looks pretty well covered (thanks sipa!) 19:05:47 yes, both there already: https://github.com/bitcoin/bitcoin/projects/8 19:06:10 Once that's in, I would say #14491 become priority. 19:06:13 Yes 14565 is very nearly ready I think 19:06:13 https://github.com/bitcoin/bitcoin/issues/14491 | Allow descriptor imports with importmulti by MeshCollider · Pull Request #14491 · bitcoin/bitcoin · GitHub 19:06:36 reminder that 14565 blocks PRs from meshcollider and achow101, so it'd be nice to move it towards merge 19:07:59 Yes 19:08:08 I had one last little question on there 19:09:23 Is there anything else wallet related that should go onto high priority list now? 19:10:08 #topic progress towards descriptor wallets (provoostenator) 19:10:33 * provoostenator looks as sipa 19:10:39 *at 19:10:53 * sipa stares back 19:11:21 various descriptor support, like in listunspent? 19:11:22 sipa: have you thought more about it recently or been mostly focused on the PRNG stuff 19:11:53 meshcollider: no, sorry - i've been busy with a few other projects 19:12:36 that's fine of course :) I guess that is your update provoostenator 19:12:51 There was an issue tracking which RPCs to add descriptor support to iirc 19:12:53 Well, I'd like to know what's next, but we do have enough review work already I guess. 19:13:00 next step is moving IsMine and related functions to be part of the wallet or some other abstraction, rather than free functions 19:13:14 so they can later be extended to be descriptor based 19:13:20 Ok 19:13:27 Anything about the Keypool we can improve? 19:13:58 I can take a stab at the ismine stuff 19:14:01 that needs to be part of the same interface, i expect 19:14:05 For example I'm a bit worried about #14075 interacting with the keypool from RPC code. 19:14:08 but maybe a later step 19:14:08 https://github.com/bitcoin/bitcoin/issues/14075 | Import watch only pubkeys to the keypool if private keys are disabled by achow101 · Pull Request #14075 · bitcoin/bitcoin · GitHub 19:14:39 that looks like it may interact, indeed 19:14:57 Though it can be refactored after that, it's nice if we at least have an idea of what the final thing needs to look like. 19:15:11 So instead of the keypool being generated by a single descriptor, it will have imports in it too 19:15:48 Right now the keypool, when it expands itself, makes strong assumptions about the wallet and just uses the HD structure. 19:16:14 Whereas what we want probably is for the keypool (or something like it) to expand a specific descriptor. 19:16:27 well there won't be a keypool anymore 19:16:43 it's just a descriptor, which some entries cached, and some not (yet) 19:17:04 the hard part is integrating the existing logic into such a structure 19:17:16 [13bitcoin] 15MarcoFalke pushed 2 new commits to 06master: 02https://github.com/bitcoin/bitcoin/compare/b53573e5c6c7...6723d8e3a694 19:17:16 13bitcoin/06master 14fa30a0e 15MarcoFalke: test: mempool_persist: Verify prioritization is dumped correctly 19:17:17 13bitcoin/06master 146723d8e 15MarcoFalke: Merge #14931: test: mempool_persist: Verify prioritization is dumped correctly... 19:17:52 [13bitcoin] 15MarcoFalke closed pull request #14931: test: mempool_persist: Verify prioritization is dumped correctly (06master...06Mf1812-testMempoolPrio) 02https://github.com/bitcoin/bitcoin/pull/14931 19:18:12 Any prose or pseudo-code describing how such integration would work is most welcome (in a Github issue). 19:18:36 i think we'll want to see the existing keypool/keys/... as a special "legacy" descriptor that doesn't really have a text representation 19:19:00 sipa: to cache them, would you expand() them with the cache function during the existin topup function 19:19:20 meshcollider: right, exactly 19:19:43 Why wouldn't it have a text representation? 19:20:10 provoostenator: well the text representation is the entire set of keys, pubkeys, scripts, hdpaths, ... that are currently stored in the wallet :) 19:20:26 i guess you could dump it in hex or something 19:20:58 A migration wizard should be able to, at least for standard wallets, turn that into a series of regular descriptors no? 19:21:15 that may be possible, but i don't think that's the priority now 19:21:50 It'd be quicker and safer to just move-only the code type of thing into legacy functions 19:21:56 (because then you have to worry about all existing RPCs, and their effect on those descriptors) 19:22:11 Right, just depends on what's easier in practice. Personally I suspect it'll be easier to make the wallet _only_ have descriptors, just from a writing tests point of view. 19:22:23 i think it's not too much work to just have a legacy subsystem, and a new system - and a wallet can contain just one of them, or both 19:22:23 [13bitcoin] 15MarcoFalke pushed 2 new commits to 06master: 02https://github.com/bitcoin/bitcoin/compare/6723d8e3a694...9133227298ad 19:22:24 13bitcoin/06master 14c84c2b8 15practicalswift: tests: Test for expected return values when calling functions returning a success code 19:22:24 13bitcoin/06master 149133227 15MarcoFalke: Merge #14935: tests: Test for expected return values when calling functions returning a success code... 19:22:33 But the RPC thing could be a pain yes. 19:22:34 maybe we even want to forbid mixing them in one wallet 19:23:06 [13bitcoin] 15MarcoFalke closed pull request #14935: tests: Test for expected return values when calling functions returning a success code (06master...06test-return-values) 02https://github.com/bitcoin/bitcoin/pull/14935 19:23:07 but forced migration may getting it accepted much harder 19:23:58 so my idea is that every record is a descriptor + some metadata (like gap limit, whether it's change or no), plus some cached keys... and there can be a special "legacy" record that's just all the existing keypool/ismine logic 19:24:00 the rw config is mostly because the qt stuff writes to random places for settings right? 19:24:14 So then you might end up with two seperate wallet systems and a migration tool, where the old system only gets maintenance updates to be able to read from it. 19:24:24 phantomcircuit: random? not really; just different from bitcoind 19:24:27 provoostenator: maybe 19:24:40 luke-jr, i mean it writes to reg on windows 19:24:45 which is super annoying to change 19:24:52 phantomcircuit: please stick to topic 19:24:55 phantomcircuit: we are in a wallet meeting btw :) 19:26:04 We could open an issue to discuss the alternative approaches, or just discuss which is easier as we start actually writing the code 19:26:09 A new wallet subsystem might also let us cleanly long-term deprecate some wallet RPC methods and replace them with clean ones, that happen to support descriptors? 19:26:18 provoostenator: yup 19:26:19 And maybe move to Sqlite3 at the same time. 19:26:36 i think that's completely orthogonal 19:26:49 Could be, yes. 19:27:11 phantomcircuit: I answered in #bitcoin fyi 19:28:05 Anyway, we have some next actions now to continue progress, maybe next topic? 19:28:37 #topic progress towards hardware wallets (provoostenator) 19:28:46 IsMine moved from wallet to common here: https://github.com/bitcoin/bitcoin/commit/a25a4f5b04c3e045557e9e7e807b2af74ad75128 . Was that just because of the way the multisig and P2SH tests are constructed (ie could those tests just be rewritten)? 19:28:54 Now that #14491 has been rebased, the `hww` branch I'm building off should also soon be rebased. 19:28:57 https://github.com/bitcoin/bitcoin/issues/14491 | Allow descriptor imports with importmulti by MeshCollider · Pull Request #14491 · bitcoin/bitcoin · GitHub 19:29:02 #14912 19:29:04 https://github.com/bitcoin/bitcoin/issues/14912 | [WIP] External signer support (e.g. hardware wallet) by Sjors · Pull Request #14912 · bitcoin/bitcoin · GitHub 19:29:27 I'll do some cleaning up of my ugly string concatenation descriptor code after rebase. 19:29:54 People can already test it though. It compiles and actually works (at your own risk, so use testnet). 19:30:14 jnewbery: looks like it? 19:30:47 As in, you can create a new wallet, put read-only keys in it, show address on the device and spend coins. Using achow101's HWI library to talk to the device. 19:31:28 So the idea is that users would download that library seperately and just launch bitcoind -signer=../HWI/hwi.py (or some other tool). That way we don't ahve to review individual hardware wallet code. 19:31:49 provoostenator: cool \o/ 19:32:30 With very little code changes this could also work against a gRPC server, but there's some security trade-offs compared to calling commands. We talked about that a few weeks ago. 19:33:11 I am trying to keep it generic enough to keep that possible, so e.g. the -signer= command could later also be a URL. But for now, it just executes a command and parses the JSON that command spits out to stdout. 19:34:01 Next step for me is to work on GUI support for this. But there's already a pile of prerequisite stuff to review, so don't worry too much about that :-) 19:34:21 I personally just like to see the big picture in action. 19:34:27 Yes let's not stack too many PRs at once again ;) 19:35:47 For GUI proof of concept I'd just like to nag promag about #13100, which we want anyway. 19:35:50 https://github.com/bitcoin/bitcoin/issues/13100 | gui: Add dynamic wallets support by promag · Pull Request #13100 · bitcoin/bitcoin · GitHub 19:36:24 (that's all I have) 19:37:52 wget https://bitcointools.jonasschnelli.ch/data/builds/914/ ... failed: Connection refused 19:37:53 that PR hasn't been rebased for 2 months, perhaps you'd like to take it up and rebased it yourself? 19:37:55 ^ jonasschnelli 19:38:06 He actually said he's working on it soon. 19:38:14 Oh ok 19:38:48 I think he needs this to go in first #14573, that's almost mergeable. 19:38:49 I'm happy to review it as soon as its ready, its already tagged for 0.18 19:38:50 https://github.com/bitcoin/bitcoin/issues/14573 | qt: Add Window menu by promag · Pull Request #14573 · bitcoin/bitcoin · GitHub 19:39:44 Are there any other topics? 19:40:04 luke-jr phantomcircuit did you want to discuss rw_config stuff? 19:40:31 I noticed the rabase, so I'll rebase my Settings migration stuff as well. 19:40:47 [13bitcoin] 15ch4ot1c opened pull request #14961: [docs] Root readme improvements (06master...06improvements/readme) 02https://github.com/bitcoin/bitcoin/pull/14961 19:40:56 But it's not very wallety. 19:41:36 Looks like that might be it for today 19:41:43 Thanks provoostenator :) 19:41:51 #endmeeting