--- Log opened Fri May 15 00:00:21 2020 01:47 -!- azizLIGHT [~azizLIGHT@unaffiliated/azizlight] has quit [Ping timeout: 265 seconds] 01:58 -!- azizLIGHT [~azizLIGHT@unaffiliated/azizlight] has joined #joinmarket 02:40 -!- asymptotically [~asymptoti@gateway/tor-sasl/asymptotically] has joined #joinmarket 03:02 -!- Brayan15Johnson [~Brayan15J@static.57.1.216.95.clients.your-server.de] has quit [Remote host closed the connection] 03:03 -!- Donnell23Harvey [~Donnell23@static.57.1.216.95.clients.your-server.de] has joined #joinmarket 04:06 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Read error: Connection reset by peer] 04:31 < waxwing> belcher, what are the subtleties around getting the txoutproof - i notice that if i do `gettxoutproof` in bitcoin-cli without the blockhash, on regtest, it gives the erroneous message "transaction not yet in block" (although it was), whereas if i specify the blockhash it spits out the proof 04:31 < waxwing> other than that, everything seems to make sense so far. 04:45 < belcher> gettxoutproof needs to know which block the tx is in 04:45 < belcher> i think that error message is just wrong 05:25 -!- undeath [~undeath@hashcat/team/undeath] has joined #joinmarket 06:29 < waxwing> belcher, i could check in the code but may as well just prod you on it: if you saw my latest test report, i was wondering about the coin selection: if you have timelocked coins in mixdepth 0 does select_utxos not ignore the locked coins? it looks like maybe it doesn't given that thing mentioned in the third paragraph. 06:30 < belcher> thats right it doesnt ignore 06:30 < waxwing> aside, now i understand why "frozen" was a better choice for our earlier feature, than "locked" :) 06:30 < belcher> i think the only check is that sign_transaction() fails if its a timelocked utxo where the locktime is in the future 06:31 < belcher> so you have to use coin control 06:31 < belcher> in practice people will have separate wallets though 06:31 < belcher> a fidelity bond wallet which only has their timelocked coins (possibly in cold storage), and a regular wallet with only single-sig coins 06:31 < belcher> so it shouldnt cause too much hassle i think 06:33 < belcher> i briefly considered doing a feature where timelocked coins would automatically get frozen in coin control, but it was complicated and i think its not needed for the reason above 06:34 < waxwing> another approach might be to default disallow spends out of branch 2, unless it's explicitly switched on 06:35 < waxwing> the current scenario is a bit confusing and could cause some hassle, albeit as you say people may not usually have a mixed wallet. but if we don't want them ever to use mixed wallets we should warn so or enforce it. 06:35 < belcher> it will be enforced in that i imagine yield-generator will take two wallet files as parameters 06:35 < belcher> or just one file if they dont have any fidelity bonds 06:35 < waxwing> i was asked to freeze a utxo that was already locked far in the future; that's only confusing, but people might do coinjoins and fail to complete because of it which would be icky 06:36 < belcher> yeah fair, it might come up 06:37 < belcher> ill look into it 06:52 < belcher> waxwing what do you think of this as a solution: whenever `wallet-tool.py display` is called then it freezes all the UTXOs which are timelocked for the future 06:53 < belcher> i dont really like the idea of having another flag used for explicitly switching on branch 2 spends, with the solution i said above we can reuse the coin control interface 06:54 < belcher> and i think everyone will call wallet-tool display after sending coins to a timelocked address 06:55 < belcher> actually hold on, i just realized a better place to do is in wallet_service.sync_unspent() because that also iterates all the utxos 06:55 < belcher> yes thats better, then it will freeze even if the user never runs `wallet-tool.py display` 07:38 -!- k3tan [~pi@unaffiliated/k3tan] has quit [Ping timeout: 265 seconds] 07:40 -!- k3tan [~pi@unaffiliated/k3tan] has joined #joinmarket 07:44 < waxwing> sync_unspent isn't the controller of the utxo set any more; that's handled by the transaction monitor. yes it could just update the utxo set but that doesn't look right. i think it should be at the UTXOManager select level. 07:45 < belcher> sync_unspent() invokes wallet.add_utxo() and ill add the code in there 07:45 < belcher> it can be done semi-cleanly as well, override add_utxo() inside FidelityBondMixin and check whether the utxo is timelocked 07:46 < waxwing> if it's easy for the WalletService to check whether each timelocked utxo is still locked, then it could be put into select_utxos at that level and leave the wallet/utxo manager untouched 07:46 < waxwing> i think that's better than trying to control adds to the utxo set 07:47 < belcher> if someone sends a sweep they dont use select_utxos() 07:47 < waxwing> right the transaction_monitor picks up changes to the utxo set 07:48 < waxwing> oh i see what you mean. right. 07:48 < waxwing> yes so it'd have to go down to the UTXO Manager level to be sort of all-encompassing 07:51 < waxwing> so your original idea was something like just freeze it immediately on adding 07:51 < waxwing> and then down the line when they want to spend they just manually unfreeze, something like that? 07:51 < belcher> yes 07:52 < belcher> it could also stop people accidently spending a fidelity bond (perhaps co-spending with another coin they didnt intend do) just because the timelock date passed 07:52 < waxwing> yes. while superficially it feels like an extra layer of confusion, on reflection it does look sound, both in the sense that it's simple code to add and it's also cautious. 07:53 < waxwing> and as you say it needs to be in sync_unspent too so that it persists across recoveries 07:54 < waxwing> but wait, how is this different from just disabling spends from branch 2 by default? 07:54 < waxwing> isn't the latter technically simpler? 07:55 < waxwing> you just want to reuse. hmm maybe, not sure. 07:58 < belcher> you need a new flag id imagine 07:58 < belcher> command line flag, or possibly option in the config file 08:01 < waxwing> sure that part is annoying but (a) if it makes the logic cleaner in the guts of the code it's worth it and (b) we do want people to consciously choose spending these coins so i don't count it bad UX 08:02 < waxwing> but i *think* i'm ok with either solution. 08:02 < waxwing> i was just wondering if the latter wasn't cleaner 08:03 < waxwing> (see: works across recoveries automatically, for example; it's a property of how the wallet works, not data you have to persist into it) 08:04 < belcher> this will work across recoveries too, because the timelock of a coin is stored within it in the address/script 08:05 < waxwing> yes, by actively resetting freeze in sync_unspent 08:06 < belcher> i didnt parse that 08:06 < waxwing> we're still discussing the "freeze it immediately on adding" approach right? 08:07 < belcher> yes, more like "freeze every time sync_unspent is called" 08:08 < waxwing> right, i've just been a bit suspicious of linking it purely to sync_unspent because that is not the only place utxos can be added to the wallet. 08:08 < waxwing> although clearly it needs to be in sync_unspent 08:09 < belcher> its actually in wallet.add_utxo() 08:09 < belcher> which is called in other places too as you say 08:09 < waxwing> ok that's good yeah 08:10 < waxwing> then you still have the property 'works automatically across recoveries' so i don't have an argument there for 'disallow branch 2' being cleaner. 08:11 < waxwing> may get a lot of panicked people discovering they can't spend the coin on the day it's supposed to unlock, though :) 08:11 < belcher> we can put that in the FAQ 08:11 < waxwing> which reminds me, by far the biggest thing to test in that PR is spendability of unlocked coins 08:11 < belcher> id say "disallow branch 2" is way less clean because you need to add a new CLI arg or possibly a new config file param 08:11 < waxwing> burns are going to end up far less important 08:12 < belcher> yep, theres an automated test for that already, but do test yourself as well 08:12 < waxwing> yeah but as i already said, i was specifically talking about clean-ness of the code/architecture. on reflection i don't think it makes a huge difference. 08:12 < waxwing> yeah everything gets a test, but this is a huge one. i don't think even two skilled people testing it on mainnet is enough really. 08:12 < waxwing> maybe 3 :) 08:13 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 08:30 -!- Donnell23Harvey [~Donnell23@static.57.1.216.95.clients.your-server.de] has quit [Ping timeout: 256 seconds] 08:34 < belcher> id imagine there'd be a longish period of testnet testing for fidelity bond maker/takers 08:34 < belcher> maybe not though, ygrunner might be easier 08:47 < belcher> hold on, problem "jmclient.storage.StorageError: Read-only storage cannot be saved." 08:47 < belcher> you cant just freeze a utxo whenever, the wallet has to not be readonly 08:48 < waxwing> yeah wallet-tool operation is read-only 08:48 < waxwing> good point 08:49 < waxwing> when you say 'ygrunner might be easier'; yeah, i'm just gonna test on regtest and avoid testnet at all costs, dumpster fire. 08:50 < waxwing> that's what i've done so far. are there any quirks to bear in mind when testing timelocks with regtest? something to do with the way the timestamps work perhaps? 08:50 < belcher> not really, except that bip65 activates at a different block height 08:51 < waxwing> i'll take a read of the timelock test code shortly, that'll doubtless help 09:03 < belcher> ok i found a solution, only freeze the utxo if the wallet isnt readonly 09:04 < belcher> so sendpayment, yield-generator and freeze will freeze the utxo but display wont, which is fine because display doesnt spend coins 09:13 -!- jonatack [~jon@2a01:e0a:53c:a200:bb54:3be5:c3d0:9ce5] has quit [Ping timeout: 260 seconds] 09:17 -!- jonatack [~jon@134.19.179.163] has joined #joinmarket 09:39 -!- M1 [~Michail@michail.com] has quit [Remote host closed the connection] 09:45 -!- M1 [~Michail@michail.com] has joined #joinmarket 09:46 -!- kristapsk [~KK@gateway/tor-sasl/kristapsk] has quit [Remote host closed the connection] 09:48 -!- ghost43 [~daer@gateway/tor-sasl/daer] has quit [Remote host closed the connection] 09:48 -!- kristapsk [~KK@gateway/tor-sasl/kristapsk] has joined #joinmarket 09:49 -!- ghost43 [~daer@gateway/tor-sasl/daer] has joined #joinmarket 09:56 -!- kristapsk [~KK@gateway/tor-sasl/kristapsk] has quit [Remote host closed the connection] 10:14 -!- kristapsk [~KK@gateway/tor-sasl/kristapsk] has joined #joinmarket 13:09 -!- opal [~wowaname@volatile/founder/wowaname] has quit [Ping timeout: 240 seconds] 13:18 -!- opal [~wowaname@volatile/founder/wowaname] has joined #joinmarket 13:48 -!- kristapsk_ [~KK@gateway/tor-sasl/kristapsk] has joined #joinmarket 13:51 -!- kristapsk [~KK@gateway/tor-sasl/kristapsk] has quit [Remote host closed the connection] 14:00 -!- kristapsk_ is now known as kristapsk 14:12 -!- rdymac [uid31665@gateway/web/irccloud.com/x-fpfdnlmgyhhzkaaq] has quit [Quit: Connection closed for inactivity] 14:17 -!- undeath [~undeath@hashcat/team/undeath] has quit [Quit: WeeChat 2.8] 15:43 -!- MaxSan [~four@185.156.175.171] has joined #joinmarket 15:58 -!- EvanitoC [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 15:59 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Ping timeout: 260 seconds] 16:14 -!- EvanitoC [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 16:15 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 16:46 -!- asymptotically [~asymptoti@gateway/tor-sasl/asymptotically] has quit [Quit: Leaving] 17:17 -!- viasil [~nobody@134.19.189.124] has quit [Ping timeout: 256 seconds] 17:22 -!- viasil [~nobody@134.19.189.124] has joined #joinmarket 17:29 -!- viasil [~nobody@134.19.189.124] has quit [Ping timeout: 256 seconds] 17:31 -!- HackRelay [~jmrelayha@p5DE4A41F.dip0.t-ipconnect.de] has quit [Ping timeout: 265 seconds] 17:31 -!- viasil [~nobody@134.19.189.124] has joined #joinmarket 17:33 -!- DSRelBot [~DSRelBot@p5DE4A41F.dip0.t-ipconnect.de] has quit [Ping timeout: 256 seconds] 17:45 -!- DSRelBot [~DSRelBot@p5DE4A10A.dip0.t-ipconnect.de] has joined #joinmarket 17:46 -!- HackRelay [~jmrelayha@p5DE4A10A.dip0.t-ipconnect.de] has joined #joinmarket 18:02 -!- kristapsk_ [~KK@gateway/tor-sasl/kristapsk] has joined #joinmarket 18:02 -!- kristapsk [~KK@gateway/tor-sasl/kristapsk] has quit [Remote host closed the connection] 18:04 -!- jonatack [~jon@134.19.179.163] has quit [Ping timeout: 264 seconds] 18:06 -!- jonatack [~jon@37.173.34.185] has joined #joinmarket 18:32 -!- viasil [~nobody@134.19.189.124] has quit [Ping timeout: 240 seconds] 18:33 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 18:33 -!- nixbitcoin_ [~nixbitcoi@gateway/tor-sasl/nixbitcoin] has joined #joinmarket 18:33 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 18:34 -!- nixbitcoin [~nixbitcoi@gateway/tor-sasl/nixbitcoin] has quit [Ping timeout: 240 seconds] 18:34 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 18:34 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 18:35 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 18:35 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 18:37 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 18:38 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 18:40 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 18:41 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 18:41 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Read error: Connection reset by peer] 18:41 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 18:43 -!- viasil [~nobody@134.19.189.124] has joined #joinmarket 19:01 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 19:02 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 19:16 -!- belcher [~belcher@unaffiliated/belcher] has quit [Ping timeout: 256 seconds] 19:25 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 19:25 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 19:32 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 19:32 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 19:33 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 19:33 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 19:34 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 19:34 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 19:35 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Remote host closed the connection] 19:35 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 19:41 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has quit [Ping timeout: 265 seconds] 19:43 -!- viasil [~nobody@134.19.189.124] has quit [Ping timeout: 258 seconds] 19:48 -!- Evanito [~Evanito@cpe-76-87-174-228.socal.res.rr.com] has joined #joinmarket 19:48 -!- viasil [~nobody@134.19.189.124] has joined #joinmarket 20:53 -!- viasil [~nobody@134.19.189.124] has quit [Ping timeout: 265 seconds] 20:58 -!- viasil [~nobody@134.19.189.124] has joined #joinmarket 23:03 -!- viasil [~nobody@134.19.189.124] has quit [Ping timeout: 272 seconds] 23:08 -!- viasil [~nobody@134.19.189.124] has joined #joinmarket 23:13 -!- viasil [~nobody@134.19.189.124] has quit [Ping timeout: 260 seconds] 23:15 -!- viasil [~nobody@134.19.189.124] has joined #joinmarket --- Log closed Sat May 16 00:00:22 2020