19:00:51 #startmeeting 19:00:51 Meeting started Thu Dec 7 19:00:51 2017 UTC. The chair is wumpus. Information about MeetBot at http://wiki.debian.org/MeetBot. 19:00:51 Useful Commands: #action #agreed #help #info #idea #link #topic. 19:00:52 yes 19:01:04 hi 19:01:21 #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 jl2012 achow101 meshcollider jnewbery maaku fanquake promag 19:01:26 hi 19:01:38 hi 19:01:38 hi 19:01:46 #topic high priority for review 19:01:49 hi 19:01:55 https://github.com/bitcoin/bitcoin/projects/8 19:02:52 there was lots of review on #11403 this week 19:02:57 https://github.com/bitcoin/bitcoin/issues/11403 | SegWit wallet support by sipa · Pull Request #11403 · bitcoin/bitcoin · GitHub 19:02:59 but nothing ready for merge yet AFAIK 19:03:13 hi. 19:03:22 hello 19:03:28 * BlueMatt is working on reviewing it now...lots of "ehh, you should clean this up instead of hacking around it" type things which may get pushed to a new pr, but nothing broken yet 19:03:35 hi, only half here 19:03:46 re: high prio #11383 should probably be taken off 19:03:49 https://github.com/bitcoin/bitcoin/issues/11383 | Basic Multiwallet GUI support by luke-jr · Pull Request #11383 · bitcoin/bitcoin · GitHub 19:03:52 cause luke-jr hasnt kept up with it 19:04:08 sipa: which half? 19:04:10 jnewbery: promised me he'd rebase #10740 19:04:13 https://github.com/bitcoin/bitcoin/issues/10740 | [wallet] dynamic loading/unloading of wallets by jnewbery · Pull Request #10740 · bitcoin/bitcoin · GitHub 19:04:19 BlueMatt: ok 19:04:47 will retest segwit wallet/qt pr on top of #11839 19:04:49 I'll try to take over 11383 (we should have this in 0.16) 19:04:49 https://github.com/bitcoin/bitcoin/issues/11839 | dont attempt mempool entry for wallet transactions on startup if alr… by instagibbs · Pull Request #11839 · bitcoin/bitcoin · GitHub 19:04:49 hi 19:05:07 oh, yea, 11839 should be tagged 0.16 19:05:10 its a trivial fix, I think 19:05:44 jonasschnelli: no need to take it over if instagibbs is active on it? 19:05:51 if it's a trival fix it should probably be merged instead of tagged? 19:06:00 BlueMatt, wrong PR, just looks like he mentioned it i think? 19:06:11 I'm doing the Multiwalltet GUI PR 19:06:13 that's multiwallet 19:06:20 ohoh, yea, wrong # 19:06:27 * BlueMatt suggested an alternative fix for 11839, so thats just pending disucssion of "the right fix" 19:06:32 all options are relatively trivial 19:07:13 #11824 may be mergeable with another review to fix reindex on master, jamesob indicated his issue was the result of "running wrong build" 19:07:15 https://github.com/bitcoin/bitcoin/issues/11824 | Block ActivateBestChain to empty validationinterface queue by TheBlueMatt · Pull Request #11824 · bitcoin/bitcoin · GitHub 19:08:10 I think #11824 can be merged. 19:08:12 https://github.com/bitcoin/bitcoin/issues/11824 | Block ActivateBestChain to empty validationinterface queue by TheBlueMatt · Pull Request #11824 · bitcoin/bitcoin · GitHub 19:08:37 #action merge #11824 19:08:39 https://github.com/bitcoin/bitcoin/issues/11824 | Block ActivateBestChain to empty validationinterface queue by TheBlueMatt · Pull Request #11824 · bitcoin/bitcoin · GitHub 19:08:46 I did notice another OOM issue I think, but it looked like to be hard to reproduce and required significant uptime 19:09:23 achow101: I failed to find any hidden memory in massif, but I'm still doing runs in it so will look further 19:10:22 do we have a memory leak? 19:11:00 I dont (currently) believe so...master will OOM during reindex cause validation runs ahead of validationinterface and memory grows huge, but its not technically a leak cause it will catch up eventually if you have enough memory to do it 19:11:03 I haven't had any OOM crashes FWIW 19:11:04 11824 fixes that 19:11:09 Did also a quick run with my leak tool and some stuff popped up. leveldb, bdb ansd some other things 19:11:31 Will have a closer look soon 19:11:41 oh, only during reindex, I haven't done that recently 19:11:43 topics? 19:12:01 wumpus: could also happen directly after restart if you've been offline for a month or whatever 19:12:18 or during IBD 19:12:25 I think an OOM issue is a pretty serious topic? but other suggestions are welcome of course 19:12:44 if anyone objects to my "won't fix" of #11800, speak up now. will update code comments per ryanofsky suggestion 19:12:46 https://github.com/bitcoin/bitcoin/issues/11800 | Bitcoin is returning higher fees for 36 block window than 2 block window (on testnet) · Issue #11800 · bitcoin/bitcoin · GitHub 19:12:50 well I think we've at least gotten 97% of it down, several folks looking into the last 3 and it may be a false positive 19:12:51 OOM? 19:12:59 Out Of Memory 19:13:13 wumpus: the only known OOM right now is fixed by 11824 19:13:18 achow101: ibd seems less likely cause time spent downloading blocks is time for wallet to catch up... 19:13:19 achow101: ok 19:13:42 on to morcos' topic 19:13:45 * BlueMatt makes a quick note that, of the high-priority-to-review items, #11363 is very easy to review and has been sitting for a while 19:13:46 #topic Bitcoin is returning higher fees for 36 block window than 2 block window (on testnet) 19:13:47 https://github.com/bitcoin/bitcoin/issues/11363 | net: Split socket create/connect by theuni · Pull Request #11363 · bitcoin/bitcoin · GitHub 19:14:11 #action review #11363 19:14:14 https://github.com/bitcoin/bitcoin/issues/11363 | net: Split socket create/connect by theuni · Pull Request #11363 · bitcoin/bitcoin · GitHub 19:14:26 anyone opposing 'wontfix' there? 19:14:43 we should at least know why 19:14:53 jonasschnelli: morcos had a writeup on the issue 19:15:00 #? 19:15:00 BlueMatt: thanks :) 19:15:06 #11800 19:15:06 11800 19:15:07 https://github.com/bitcoin/bitcoin/issues/11800 | Bitcoin is returning higher fees for 36 block window than 2 block window (on testnet) · Issue #11800 · bitcoin/bitcoin · GitHub 19:15:07 morcos posted that 19:15:09 right 19:16:09 so the situation is pretty much unique to testnet and extremely unlikley on mainnet 19:16:13 IMO low prio or even "won't fix" 19:16:52 yea, I mean I think I'd prefer to not call it "wont fix", but certainly not anything worth spending time on compared to other priorities 19:16:53 I tend to agree, very low priority if it only affects testnet's wildness 19:17:24 what BlueMatt said 19:17:35 we kind of know that the current testnet isn't realistic 19:17:44 a frequent request is a more realistic testnet FWIW 19:18:46 suggested topic: testnet4 19:19:01 the data in tn3 is fairly valuable on its own. if any tn reset is being considered for a pullreq it would be really nice to effect a high-quality preservation of tn3. like an option or something to put it into archive-mode. 19:19:20 you mean as test-cases? 19:19:27 next topic? btw I would like to have more NACK/ACK on #11826 19:19:28 https://github.com/bitcoin/bitcoin/issues/11826 | RFC: Activity feature · Issue #11826 · bitcoin/bitcoin · GitHub 19:19:29 as test-cases and historical reference. 19:19:33 What about cherry-picking interesting testnet3 transactions? 19:19:56 no tn reset is being considered 19:20:07 That's more regression testing? 19:20:18 wumpus: please add comma, or do you mean we're not considering it? 19:20:19 keeping tn3 support is fine 19:20:22 okay. sorry, carry on. :) 19:20:51 BlueMatt: huh? yes I mean we're not considering it. Any new testnet would be an addition, I think. 19:21:20 I meannn...I guess thats fine? I think I was considering just moving to testnet4 19:21:28 (still not sure where to add the comma) 19:21:48 if nothing else testnet3 with a mindiff higher than 1, and to not have a million blocks 19:22:09 lots of complaints about even spv sync time in testnet3 cause of so many blocks 19:22:12 i vote we do segwit wallet support first 19:22:17 there was some talk of doing a testnet with signed blocks which simulates behavior of the mainnet 19:22:26 morcos: yes, absolutely 19:22:27 i mean thats also of interest, yea 19:22:36 huh what im here 19:22:45 topic suggestion: the various config file PRs 19:22:55 testnet having lots of headers needed for SPV may motivate more efficient header transmission 19:22:59 e.g. #10996 and #10267 19:23:01 https://github.com/bitcoin/bitcoin/issues/10996 | Add per-network config file network.conf by ajtowns · Pull Request #10996 · bitcoin/bitcoin · GitHub 19:23:03 https://github.com/bitcoin/bitcoin/issues/10267 | New -includeconf argument for including external configuration files by kallewoof · Pull Request #10267 · bitcoin/bitcoin · GitHub 19:23:08 #topic config file handling 19:24:11 We have to work out what configurations we should support, e.g. whether -conf should be repeatable, whether we have -includeconf, -netconf and -conf, etc. 19:24:18 so the question is pretty much whether to do per-network config file 19:24:22 IMO the config layers are already complex... not sure if we want to add more 19:24:23 its getting a bit messy 19:24:25 or -testnet-X and -regtest-X 19:24:38 There are serval levels and multiple files 19:24:49 where X are options like port, walletdir, logfile, which are only useful per network 19:25:37 currently if you define e.g. port or bind in bitcoin.conf you will get collisions when you run both testnet and mainnet on the same machine 19:25:53 one idea I had was suggested in https://github.com/bitcoin/bitcoin/pull/10996#issuecomment-346189099, basically we default to using root-level bitcoin.conf and network specific network.conf if they exist, but if -conf is specified then we just use that and not the network specific one too 19:26:02 so one potential solution for that was to do per-network config files, but as said that makes things reallly complex 19:26:08 and then allow -conf to be repeatable? 19:26:11 so an alternative proposal was just to do -regtest-port -testnet-port etc 19:26:26 wumpus: +1 19:26:31 from 10267, having conf repeatable or includeconf recursive seems hard to implement well; currently it only handles a single additional config file aiui 19:26:32 and I think I like that 19:26:39 wumpus what about unique addnode's for each network 19:26:47 so bare -port will be only for mainnet 19:26:57 meshcollider: -regtest-addnode -testnet-addnode 19:27:19 so just allow -regtest or -testnet to be prefixed to any existing arg? 19:27:23 yes, I think that is pretty simple and clear 19:27:33 if not set, defaults to? 19:27:43 these can be specified in any config file or on the command line, no difference, no *context sensitivity* like per-network config files 19:27:43 promag: the default :) 19:27:48 yes,the default 19:28:06 and then still support #10267 ? 19:28:07 meshcollider: yes 19:28:09 https://github.com/bitcoin/bitcoin/issues/10267 | New -includeconf argument for including external configuration files by kallewoof · Pull Request #10267 · bitcoin/bitcoin · GitHub 19:28:18 includeconf is orthogonal 19:28:33 I see no reason why not 19:28:37 yeah but it would allow -regtest-includeconf=whatever 19:28:39 jonasschnelli: default of the network right? 19:28:43 so it could be good :) 19:28:46 promag: yes 19:28:47 it's pretty standard these days to allow including config files from config files for daemons 19:28:55 wait, just so i understand, if you run ./bitcoind -regtest , then do you also have to add -regtest- to each of your command line options 19:28:59 that would be super annoying 19:29:02 an alternative to that would be sections in a config file. and on the cmdline they'd look like namespaces. so, [testnet] port=5. or -testnet::port=5. 19:29:08 almost any program supporting config files supports that in any way 19:29:12 wumpus: yes, like inherit other config 19:29:14 cfields: that soudns way better 19:29:32 cfields: fine with me too 19:29:57 it's just that per-network config files make things too complex, so I'd like to avoid that 19:30:11 morcos: I guess anything without a prefix would be used no matter what network was chosen 19:30:12 which kind of namespacing whether it's [net]option or -net-option I don't mind much 19:30:16 and in time the sections could potentially be broken out an included/inerited. but the simple change seems like a simple enough first step to me. 19:30:45 meshcollider: yeah... 19:30:46 but morcos point is valid. What if you just start use CLI params and switch between networks... 19:30:46 simple == simple. nice. 19:30:48 seems like it would make a lot of sense to have a single conf file, that has sections : [default] [mainnet] [testnet] [regtest] and you always end up reading default and one of the others 19:30:58 do you need to add/switch the namespace all the times? 19:31:10 morcos: yes 19:31:23 morcos: +1 19:31:51 ok, back 19:32:01 cool, next topic then :) 19:32:07 yes seems we agree 19:32:12 #11826 19:32:13 https://github.com/bitcoin/bitcoin/issues/11826 | RFC: Activity feature · Issue #11826 · bitcoin/bitcoin · GitHub 19:32:24 jonasschnelli: what do you mean 19:32:40 meshcollider: solves with the namespaces described by morcos. 19:32:42 *solved 19:33:01 promag: I like 11826 19:33:01 #topic activity feature 19:33:08 concept ACK from me 19:33:08 seems like the namespace model gives you separate conf files for free: just add a -includeconf in your relevant network namespace 19:33:09 Yes. We should have that 19:33:13 I think everyone likes 11826 19:33:28 Bitcoin Core does a lot of things under the hood... and there is no way to see/control that 19:33:29 I have one problem there 19:33:38 * BlueMatt isnt sure about the use-cases for 11826 19:33:39 An activity window is something should have IMO 19:33:43 should the activity have a boost::variant<> source? 19:33:45 seems like putting the cart before the horse, as it were 19:34:00 like, the only things that can go *into* the activity window are things you do from rpc debug window 19:34:00 or should we have class WalletActivity : Activity ? 19:34:09 BlueMatt: most stuff in there should be read-only... 19:34:15 BlueMatt: why? 19:34:20 promag: seems like an implementation details 19:34:23 in that case, building an activity window should probably come after making rescan, etc things that users have access to 19:34:34 BlueMatt: reindex-chainstate too 19:34:58 isnt reindex-chainstate handled like ibd? 19:35:01 (as it should be)/ 19:35:05 yes, it is 19:35:12 (cause we cant get a progress indicator for reindex-chainstate) 19:35:22 ? 19:35:50 I mean the only progress indicator you can do is the same as ibd 19:36:05 BlueMatt: in those cases it's an indeterminate progress bar 19:36:16 Maybe we should first fix the rescan GUI "abortness", then continue with the activity window (will take a while) 19:36:40 A single progress bar does certainly limit use cases. 19:36:48 yes 19:36:51 * BlueMatt is just saying, if someone wants to build an activity window, ok, have fun, but I'm not sure where it actually makes all that much sense, cause we dont have many activities that users almost ever do) 19:37:14 BlueMatt: not only the user triggered ones... 19:37:42 BlueMatt: also, activities could stays on the window even after finished, like a log, or your download history 19:37:53 download history? 19:37:59 i do agree there are relatively few use cases now, but the concept is useful... and i think eventually we want to be able to do things more concurrently anyway 19:37:59 you mean rescan history 19:38:08 no, I mean browser download history 19:38:08 Yeah.. a mix between Activity and short term log would be possible 19:38:09 but hard to make it right 19:38:16 it's more friendly than a raw log 19:38:28 BlueMatt, lots of users complain about ibd apparently stalling, something that indicated what was happening would be good 19:38:41 [disappearing message] new block validated \n [disappearing message] new peer 1.1.1.1 connected 19:38:51 I mean if I'm a user, I dont really want to see a progress history thing, tbh....either I have all the transactions in my wallet or I dont... 19:39:17 for that, a debug log view would be more useful 19:39:22 let's not conflate ongoing activities with a log 19:39:25 :q 19:39:32 er, heh 19:39:42 heh... Yes. 19:40:12 previous attempts that are more or less a log where kinda accepted #5896 19:40:14 https://github.com/bitcoin/bitcoin/issues/5896 | [Qt][PoC] introduce "core-pulse" by jonasschnelli · Pull Request #5896 · bitcoin/bitcoin · GitHub 19:40:18 ok, I'll try to keep it simple 19:40:24 but, ongoing activities are like....rescan, just rescan, and thats not something you should do all that often...ibd/reindex/sync is a rather separate thing 19:40:46 but, anyway, it sounds like I'm the only one who disagrees, so I'm happy to shut up :p 19:40:57 sending a transaction is also an ongoing activity 19:41:13 ideally the GUI would move to do all those things asynchronously instead of in the GUI thread 19:41:17 I mean it sounds like y'all want to restructure our entire gui around an activity log... 19:41:18 I also don't really see the utility of an activity window. but I don't really care either way 19:41:25 un/loading wallets too 19:41:34 no, I want to structure the GUI asynchronously 19:41:46 an activity thing would be a nice thing that comes with it 19:41:51 sending txn is rather async already, no? I mean you send and then you wait on confirms, maybe with a feebump 19:42:27 (at a user level, that is) 19:43:07 Lets promag work on that concept and see where it leads to. It's certenly good to have it around in case we can do more stuff in parallel and have other cases where we want to show progress 19:43:11 the point is that comments are executed in the GUI thread, with the various locks held 19:43:14 commands* 19:43:37 Also it would be useful for IPC (GUI / node detatch) 19:43:40 probably makes more sense if the wallet is more goal-driven, for now I don't mind the feature 19:43:48 (re: wallet comments) 19:44:08 which is not a nice user experience 19:44:11 ok guys, I'll file the PR soon 19:44:54 e.g. what I've noticed is that when it's catching up to the chain, getting the information for coin control hangs the entire GUI for half a minute sometimes 19:45:12 which would be fine if it showed a progress indicator but not if everything just blocks 19:45:28 That would likely cause many users to think it crashed. 19:45:40 well the window manager starts to think that too 19:45:43 and wants to kill it 19:46:10 The GUI synchronousness does sometimes lead to terrible UX. 19:46:12 Yes. And under the Windows OS, the user sees a message along the lines of "Task not responding" with an option to kill the task. 19:46:52 jonasschnelli: it was always my intent to change that but I just don't get around to it 19:47:05 wumpus: it's also pretty complex 19:47:12 nah, not really complex, just work 19:47:17 So, if the GUI is on a separate thread, then it can always respond to the OS and the user's operations (e.g., open the Help menu, load/save wallets, print reports, etc.) while waiting for updates from the other threads. 19:47:17 yea, cs_main-y-ness of gui sucks atm :( 19:47:41 Randolf: we are trying that (ask ryanofsky) :) 19:47:42 Randolf: right 19:47:51 jonasschnelli: Cool! 19:48:30 anyway, more topics in 10 minutes? 19:48:43 i have one 19:48:54 would a libgmp dependency by acceptable? 19:49:19 for....secp? or your muhash stuff? 19:49:32 jonasschnelli: I've done a lot of Java development, and this is how JFC/Swing and the newer JavaFX handle things. The use of atomic variables and thread-safe queues becomes pretty important. Maybe the original GUI for Bitcoin was designed with more development convenience in mind just so that the 19:49:32 project could get completed faster? I don't consider this to be a bad thing, necessarily, but I'm glad to know that there's an interest in improving this. 19:49:32 I mean doesnt secp optionally use it already? 19:49:46 #topic libgmp dependency 19:49:53 libgmp is GPL right? 19:50:03 BlueMatt: it does, and there is a small performanc benefit from using it for validation itself 19:50:08 if it's MIT/BSD licensed it's ok with me 19:50:10 wumpus: yep I think so 19:50:17 but if it's GPL, we have to say no 19:50:18 but for UTXO hashes it would be a huge difference 19:50:22 i see 19:50:22 sipa: i assume you mean a non-optional dep? 19:50:34 it's LGPLv3 19:50:44 cfields: right 19:50:50 Randolf maybe see https://github.com/bitcoin/bitcoin/pull/10244 which separates bitcoin gui code from wallet/node code 19:51:23 sipa: also uses GPLv2 I think 19:51:27 there's really no other library implementing that? 19:51:30 Thanks ryanofsky. 19:51:40 (which could have a more suitable license) 19:51:49 wumpus: specifically, it's for jacobi symbol computation 19:51:50 * BlueMatt personally thinks its fine to ship lgpl stuff, but others likely disagree 19:51:55 meshcollider: it's user's discretion as to GPLv2+ or LGPLv3+ 19:52:05 sipa: license aside, it would feel a little backwards to introduce a new dep which may at some point be consensus critical :( 19:52:09 which is not impossible to implement ourselves, and probably faster if we do, but it's very nontrivial 19:52:12 cfields: it wouldn't be 19:52:39 cfields: everything we'd use would be verified 19:52:47 cfields: also agree with that 19:53:01 so apart from using libgmp and implementing it ourselves there are no options? 19:53:14 or take the performance hit 19:53:21 sipa: context is #10434 ? 19:53:23 https://github.com/bitcoin/bitcoin/issues/10434 | [WIP] 3072-bit MuHash based hash_serialized by sipa · Pull Request #10434 · bitcoin/bitcoin · GitHub 19:53:45 10434 uses the modular multiplication group approach, which doesn't need this - it's faster but much harder to cache 19:54:37 the alternative approach is using EC based rolling hashes, for which using jacobi symbols would be a 2x speedup or so 19:54:49 wumpus: so a 3rd option is not implementing EC-based rolling hashes 19:54:50 out-of-battery o/ 19:55:44 also after all the work that was done to lose dependency on openssl for bignums, to introduce dependency on a new arbitrary precision library seems also a reversal to me 19:55:47 so i just wanted to bring it up to see what the option were 19:55:48 so if we use lgpl gmp as a dep, and then someone wants to ship a bitcoincore-modified binary with all deps static-linked, they'd be screwed? 19:56:11 wumpus: to be clear, nothing would be consensus critical (even if rolling hashes were somehow made a consensus rule) 19:56:21 BlueMatt: lgpl means they'd have to release sources or their .o/.a files 19:57:01 yea, ok, i meannnn, probably fine, but that is a real change in effective license of bitcoin core 19:57:10 sipa: 2x speedup in what exactly 19:57:29 when would those computations happen and what is the base latency 19:57:40 sipa: at the risk of going too far off-topic, aren't there curves with potentially quicker and guaranteed O(1) map operations? 19:58:13 piont being, perhaps we can punt on the question of libgmp until it becomes clear that optimizing the speed is an important tradeoff to make 19:58:17 good point morcos 19:58:19 morcos, +1 19:58:27 cfields: let's discuss outside of the meeting 19:58:28 morcos: updating a rolling hash given a set of UTXOs created and spent 19:58:40 ok 19:58:50 well meeting over anyway 19:58:57 ugh was missing meeting. 19:59:04 gmaxwell, 2 minutes 19:59:06 1 minute 19:59:06 right, so how often are we envisioning doing that, does it happen async to everything else, and how long does it take without libgmp 19:59:10 why did we start talking about libgmp? :( 19:59:12 in an absolutely first implementation, i would expect that that would just affect gettxoutsetinfo or its equivalent that just computes the hash from the UTXO set from scratch 19:59:18 gmaxwell: blame sipa 19:59:41 sipa: we do not want gmp as part of bitcoin's consensus critical paths, totally independently of using it as a dependency. 19:59:46 $ git blame sipa 19:59:46 fatal: cannot stat path 'sipa': No such file or directory 19:59:50 yes, that point was made 19:59:56 gmaxwell: absolutely 20:00:01 no intention of changing that 20:00:26 #endmeeting