- 
isthmus 10:57 <jberman[m]> If you construct a tx on a particular date and then don't submit the tx, then the ring(s) your wallet constructed will be saved on disk and reused if you spend the input in the future 
- 
isthmus Woah if didn’t know this, is there no expiration date? 
- 
isthmus Does it use the old ring even if later combined with other inputs? 
- 
isthmus That actually may be a plausible explanation for some of the transactions we’ve seen 
- 
moneromooo No expiration date (you can manually erase them). Also with other inputs (why would this have an impact on it ?) 
- 
ooo123ooo1234567 (it's interesting whether audit is finished already or temporary paused due to planned conference) 
- 
sgp_ <fluffypony> "wallet2 assumes that the..." <- Is there a downside to creating a cache for remote node cases? 
- 
sgp_ 
- 
tobtoht[m] ^ that's not live, btw. I committed this an hour ago. It builds upon on earlier patch to mitigate output distribution poisoning:  feather-wallet/monero fdd5c63
- 
ilgatu When using the "std=c17 -pedantic" flag, the function  getloadavg() is supposedly not defined: "implicit declaration of function", because it's a gnuc function (as I understand). How would you handle this, just ignore the warning (because the code runs in Linux, BSD) or #ifdef some value 
- 
ooo123ooo1234567 how is it related to monero ? 
- 
sgp_[m] We can use the patch tobtoht made, but we'd rather it be merged upstream ofc. Is there a way to only persist the cache if it's using a non-localhost node? 
- 
moneromooo You want to cache what data ? 
- 
moneromooo And by non localhost, you mean trusted or any random asshole from the internet ? 
- 
sgp_[m] In our case, it usually means trusted, since it's our nodes or a node a user manually specifies 
- 
sgp_[m] cache the rct_distribution 
- 
sgp_[m] currently the first spend on mobile takes a few extra noticeable seconds 
- 
ilgatu ooo123ooo1234567: "Don't ask to ask, just ask", I had to try :) 
- 
ooo123ooo1234567 <sgp_[m]> "currently the first spend on..." <- great, if it's too painful then write and submit patch that will cache it correctly, or use arbitrary patch locally 
- 
ooo123ooo1234567 <ilgatu> "When using the "std=c17 -..." <-  gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html, that function is an addition from glibc, it isn't available with strict c standard 
- 
ooo123ooo1234567 it's available with -std=gnu17, but not -std=c17 
- 
ooo123ooo1234567 what's the purpose to use -std=c17 without understanding what it means ? 
- 
ilgatu ooo123ooo1234567: So there's no way to use gnuc functions in a c standard code. Ok. 
- 
ilgatu ooo123ooo1234567: Thanks for your time, btw. 
- 
moneromooo I would not cache stuff that can be total bullshit from some random node. Unless trusted. But we know people, they'd just set any random node as trusted anyway. So probably not even if trusted. 
- 
ofrnxmr[m]1 ilgatu: Check  xyproblem.info helps too 
 
- 
moneromooo Or maybe cached per IP, if not Tor. 
- 
tobtoht[m] moneromooo: In the way I implemented this only data up until a checkpoint height is cached and must match a hardcoded hash. The wallet will throw an error if a random node sends bullshit data (anything pre checkpoint height) and will not continue with tx construction. 
- 
tobtoht[m] One issue with this approach is increased maintenance burden, as the hardcoded hash should be updated with each release. 
- 
tobtoht[m] I agree caching non-checked data from random nodes is a bad idea. 
- 
ilgatu ofrnxmr[m]1: Hi, thanks a lot. A new perspective, I used to see it the other way. Again, thanks for your time. 
- 
moneromooo OK, that's a good idea. 
- 
tobtoht[m] Alright, I'll work on a PR. 
- 
sgp_[m] Thank you 
- 
moneromooo Well, shipping the known good hash to prevent bullshit data is a good idea :D Whether adding such caching in monero is, I dunno. Maybe. I'm kinda torn. 
- 
ooo123ooo1234567 indeed, why not to add another centralized checkpoint for 2MB of data 
- 
ooo123ooo1234567 cake-tech/cake_wallet #395, interesting who are those Monero developers 
 
- 
rbrunner "interesting who are those Monero developers" Do you mean this as a statement, or as a question? 
- 
ooo123ooo1234567  *  cake-tech/cake_wallet #395, it's interesting, who are those Monero developers ? 
- 
rbrunner Well, sethforprivacy is, among other things, a dev, but hardly active on Monero code proper, and SamsungGalaxyPlayer isn't a dev as far as I know 
- 
rbrunner But well known for their "Breaking Monero" series of videos:  monerooutreach.org/breaking-monero
- 
rbrunner er, his videos 
- 
sethforprivacy I'm not really a dev to be honest 
- 
sethforprivacy I was talking with jberman and kayabanerve @kayabanerve:matrix.org about this issue because I had a suspicion this was the UX problem I kept running into 
- 
sethforprivacy They confirmed it was likely output distribution for ring generation and seems they were right  
- 
sethforprivacy This issue is one of the few constant PITA hurdles for me still in using Monero, and is especially onerous in person (as I was at Monerokon trying to spend and had to wait like 20s before I could even submit the TX) 
- 
kayabanerve[m] More jberman than me :) I was there to discuss the effects of arithmetic circuits on it and discuss doing it in Rust :p 
- 
sethforprivacy Not caching this data is also a bandwidth and IO load on all remote nodes, especially more commonly used public ones like mine unnecessarily. 
- 
kayabanerve[m] Though the fix I did only caches it per application lifetime. Not too suitable for deployment to wallets... 
- 
rbrunner Interesting. I have looked around quite a number of times in the wallet2 code for various reasons and never stumbled over this. Doesn't tell me anything at all. 
- 
kayabanerve[m] rbrunner: jberman's comment is it's a 10 MB data set 
- 
ooo123ooo1234567 <sethforprivacy> "This issue is one of the few..." <- is it reproducible with fast internet connection and not overloaded monerod ? 
- 
sethforprivacy I have run into it many times and always notice that the first transaction after wallet open is excessively slow 
- 
sethforprivacy 3s+ 
- 
sethforprivacy Which is very poor UX 
- 
sethforprivacy 25s just now 
- 
sethforprivacy lol 
- 
ooo123ooo1234567 is it reproducible with monero-wallet-cli ? 
- 
sethforprivacy Idk, that's not the target audience of the two wallets I opened issues for 
- 
sethforprivacy We shouldn't base UX assumptions on a CLI wallet. 
- 
sethforprivacy If mobile wallets all have poor UX when sending transactions it has to be fixed one way or another 
- 
sethforprivacy 25s to create a transaction with my own private full node over 300mb/s internet (through VPN, but very fast VPN) is nuts 
- 
selsta sethforprivacy: can you try to reproduce it with my node and cake wallet or whatever wallet you are using? 88.198.199.23:18081 
- 
sethforprivacy I would hazard a guess most of the delay is IO-bound but will look into more. 
- 
sethforprivacy selsta: Sure 
- 
ooo123ooo1234567 check with cli wallet is mostly needed to know who to blaim for that delay 
- 
selsta if it only happens with one wallet it's possibly a bug in that wallet 
- 
sethforprivacy selsta: 6s but not sure if it was relying on any cache as I didn't close the wallet 
- 
sethforprivacy Testing again 
- 
ooo123ooo1234567 1. do end-to-end debug with 1 wallet; 2. check different wallets to localize problem; since 1 is too hard probably, why not to do 2 ? 
- 
sethforprivacy 27s with your node on a fresh wallet open selsta  
- 
sethforprivacy Testing with monerujo now 
- 
selsta how many inputs? 
- 
selsta not sure if that makes a difference 
- 
sethforprivacy idk, just sending a small TX to test, but didn't ever send it 
- 
sethforprivacy Probably just 1 
- 
ooo123ooo1234567 sethforprivacy: and the wallet software is ... ? 
- 
sethforprivacy 10s with Monerujo 
- 
sethforprivacy Others were Monero.com wallet (Cake) 
- 
sethforprivacy 1s after initial transaction is constructed/sent in Monerujo 
- 
sethforprivacy Cake is 10-12s for some reason even after initial construction (but I didn't send the TX yet, so maybe its just dumping that output cache?) 
- 
sethforprivacy lots of variance with cake, was 4s now 
- 
selsta it took me around 2s to generate a tx with the gui and a freshly deleted shared-ringdb so nothing should be cached 
- 
sethforprivacy 25s with Monerujo with your node selsta  
- 
sethforprivacy selsta: Local node or your remote? 
- 
selsta remote 
- 
selsta but my remote node is in Europe, and you are from US I think, so not ideal for you latency wise 
- 
ooo123ooo1234567 is it possible to test with monero-wallet-cli ? 
- 
sethforprivacy selsta: Yeah 
- 
sethforprivacy ooo123ooo1234567: Sure 
- 
selsta same 2 seconds with CLI, will try Cake Wallet 
- 
ooo123ooo1234567 it must be something specific to environment of sethforprivacy 
- 
sethforprivacy Can no one else test but me and selsta? 
- 
sethforprivacy What do you see ooo123ooo1234567? 
- 
tobtoht[m] Fwiw, I implemented this in Feather because constructing the first transaction over Tor (which is inherently slow) takes a long time. If you're on a bad circuit downloading 6-7 MB worth of data takes a while. 
- 
sethforprivacy Anyone test with Cake/Monerujo? 
- 
ooo123ooo1234567 tobtoht[m]: that isn't even 6MB of data 
- 
ooo123ooo1234567 sethforprivacy: I'm just waiting for a test with monero-wallet-cli in your environment 
- 
ooo123ooo1234567 * a test result with monero-wallet-cli 
- 
sethforprivacy Working on it, had to restore as I dont use cli 
- 
sethforprivacy Will test with local node, remote node of my own, and selsta's remote node. 
- 
sethforprivacy ooo123ooo1234567: You can test it too to give us another data point 🙂 
- 
selsta If you delete ~/.shared-ringdb and also restart the program there should nothing be cached. 
- 
sethforprivacy Use selstas node, mine (node.sethforprivacy.com:18089) and one of your choosing 
- 
ooo123ooo1234567 sethforprivacy: restoring wallet with monero-wallet-cli isn't slower than with any of those wallets 
- 
ooo123ooo1234567 * of those mobile wallets 
- 
sethforprivacy ooo123ooo1234567: ? 
- 
sethforprivacy No idea what that has to do with anything 
- 
sethforprivacy I had to restore a wallet with funds so I can test 
- 
sethforprivacy I'm not claiming its slow? 
- 
sethforprivacy Please test yourself and report back 
- 
sethforprivacy * Please test transaction generation w/o cache yourself and 
- 
sgp_ If there's a question about this being slow, it's something I've noticed for a while but never realized what was causing the issue 
- 
sethforprivacy Think everyone just went "it's always like this so I'll ignore it", I know I did 
- 
sethforprivacy But seems a problem for everyone I've spoken to when they realize it 
- 
sgp_ yup 
- 
sethforprivacy Waiting 10-20s to generate a transaction on mobile is really, really shitty UX 
- 
sethforprivacy So lets find the problem (I think we already did) and find a solution (seems like tobtoht already did) and implement it. 
- 
sethforprivacy 2s with CLI on local node 
- 
sethforprivacy ~3s with my remote node from CLI 
- 
sgp_ on a strong connection with Cake to my own remote node (also with a strong connection) the first signing process only takes about 1s right now. but I definitely have seen it takes 6 or so seconds (usually not more) 
- 
sgp_ unsurprisingly, it's variable based on how quick one can download the data 
- 
selsta sethforprivacy: with restart and deleted shared-ringdb? 
- 
sethforprivacy ~3s for selsta node 
- 
selsta that sounds normal 
- 
sethforprivacy selsta: Yes, deleted ~/.shared-ringdb between each wallet start 
- 
sethforprivacy It's created immediately on wallet open though, not on transaction generation 
- 
sethforprivacy So it may "feel" faster if its being done on wallet open and not on transaction creation 
- 
sethforprivacy That's probably the main difference here between Cake and CLI 
- 
selsta I don't think that's the case here 
- 
selsta creating a file by itself does not mean much 
- 
sethforprivacy Then why is that folder/DB files created on wallet open w/o transaction being generated? 
- 
- 
sethforprivacy Created that without me trying any transactions 
- 
selsta it's a tiny file that does not make any speed difference 
- 
sethforprivacy Much smaller than before I deleted it initially, true 
- 
sethforprivacy Didn't read the size properly 🙂 
- 
tobtoht[m] ~/.shared-ringdb doesn't cache the output distribution and the output distribution is only requested when the first transaction is created. It affects a different part of transaction construction. 
- 
selsta I just know that it caches something and deleting it doesn't hurt for testing. 
- 
ooo123ooo1234567 was monero-wallet-cli started within the same mobile phone ? 
- 
sethforprivacy ooo123ooo1234567: No, on another device 
- 
sethforprivacy Don't have binaries or anything on mobile 
- 
sethforprivacy Can do that but will be a bit 
- 
sethforprivacy Same network though 
- 
selsta i'm still syncing cake wallet 
- 
tobtoht[m] selsta: Yes, if you create a transaction and don't submit it ~/.shared-ringdb will store rings, which speeds up subsequent tx construction because it can reuse those rings instead of asking the node for outs. 
- 
sgp_ I keep force closing cake and reopening, and the first tx generation often takes 1-2 extra seconds, again on a pretty ideal connection setup for remote trusted node 
- 
ooo123ooo1234567 so who to blaim for that delay ? 
- 
sgp_ I'd like to test with the local distribution cache and see if that improves it :) 
- 
sgp_ not looking to blame, just trying to test improvements to see if they help with UX 
- 
selsta i feel like these are two different topics, 1-2s extra vs 25s tx creation 
- 
ooo123ooo1234567 incorrect code is much bigger PITA for users, than 1-2 seconds optimization 
- 
sgp_ on tor and a roaming phone connection it indeed makes sending monero terrible 
- 
sgp_ let me try with orbot to give you an idea 
- 
ooo123ooo1234567 in the worst case correctly implemented cache will be redundant, in the best case it will optimize those few seconds 
- 
ooo123ooo1234567 but it isn't a priority to use another centralized hash for 1-2MB of data instead of correctly implemented cache if it's even possible 
- 
sethforprivacy Not really sure what you're trying to say. 
- 
sethforprivacy Do you have a better proposed fix for this? Are you saying it's not a problem? Have you tested this at all? 
- 
sethforprivacy Still haven't seen any test results from you. 
- 
ooo123ooo1234567 let's firstly find what is causing that delay in your environment 
- 
ooo123ooo1234567 s/find/identify/ 
- 
selsta sethforprivacy: if it takes 3s with monero-wallet-cli and significantly longer with cake wallet on the same connection than it's unrelated to this cache 
- 
sethforprivacy Mobile is also using VPN but not sure how that could add that long 
- 
sethforprivacy Can no one else reproduce this? 
- 
selsta ideal test setup would be to try monero-wallet-cli on mobile 
- 
sethforprivacy Other than sgp to a lesser degree 
- 
selsta like i said my cake wallet is still syncing 
- 
sethforprivacy selsta: Yeah syncing it now 
- 
ooo123ooo1234567 sethforprivacy: any way to ssh into your environment ? 
- 
aog do you know if there's any crowdfunding service based on XMR open for the public beside CCS? 
- 
sethforprivacy Give you SSH access to my env? 
- 
sethforprivacy No 
- 
sethforprivacy lol 
- 
ooo123ooo1234567 otherwise it's impossible to reproduce outside of it 
- 
ooo123ooo1234567 sethforprivacy: great, waiting for it 
- 
sethforprivacy You can test the same different approaches with the same nodes and gauge how it works for you. 
- 
sethforprivacy Much more useful if many people test this 
- 
sgp_ 81 seconds on first send using Cake + Orbot. 22 seconds on second send 
- 
ooo123ooo1234567 1st send wasn't relayed, and 2nd send was using the same outputs ? 
- 
sethforprivacy sgp_: holy shit lol 
- 
sgp_ correct, didn't relay. just canceled and started over for second 
- 
sgp_ if it'll make a difference I can try sending the first one and then queuing up second 
- 
ooo123ooo1234567 "25s to create a transaction with my own private full node over 300mb/s internet (through VPN, but very fast VPN)" orbor is quite the opposite of this setup 
- 
tobtoht[m] It's a bandwidth issue. If you reduce the amount of bandwidth required to construct a transaction by 97% then transaction construction is going to be faster. It's really that simple. 
- 
tobtoht[m] s/bandwidth/data/ 
- 
ooo123ooo1234567 s/orbor/tor/orbot/ 
- 
sethforprivacy Yeah I'm not really sure what ooo123ooo1234567 is getting at -- are you proposing a different fix or saying this isn't an issue? 
- 
sethforprivacy We're proving that the worse your network connection the worse the UX for sending because your wallet isn't caching rct_distribution 
- 
sgp_ my node has gig up and I have something like 600 down here so there was only a tiny delay there. but with Tor it took forever, which makes sense 
- 
sethforprivacy At least thats the idea we have for why it's happening. 
- 
ooo123ooo1234567 sgp_: should be different 
- 
sethforprivacy s/because/_because/, s/your/the/, s/rct_distribution/rct\_distribution_/ 
- 
sgp_ I'll send numbers in a minute then for send 1 output on fresh launch, then second output immediately after 
- 
ooo123ooo1234567 sethforprivacy: what's about wallet synchronization with such slow connection ? 
- 
sethforprivacy ooo123ooo1234567: Also of course a problem 
- 
sethforprivacy But if there is an easy fix here (there is not for broader wallet sync) than we need to explore it. 
- 
sethforprivacy I still have no idea what the goal of your arguments are. 
- 
sgp_ I think they're most against the checkpoint, but maybe we can just enable the cache only for trusted daemons 
- 
tobtoht[m] Here is some data:  transaction construction (1 input) without output distribution cache uses 1.58 MB (bytes received only). 
- 
tobtoht[m] Of this, 1.53 MB is needed to obtain the output distribution. (And this will keep increasing as the chain gets longer). 
- 
tobtoht[m] So, a less substantial size than thought. (I looked at memory, but there is some compression going on here). 
- 
tobtoht[m] But, it still makes up 97% of the network traffic required for initial tx construction. 
- 
tobtoht[m] If checkpoints are not the way to go, a compromise is to grab the output distribution as soon as synchronization is finished. 
- 
tobtoht[m] This way the output distribution will typically be available when the user wants to create a transaction. 
- 
selsta is 80s normal to get 1.6MB over Tor? 
- 
ooo123ooo1234567 tobtoht[m]: wow, less 2 MB 
- 
ooo123ooo1234567 selsta: no, it depends on setup 
- 
moneromooo It's pretty fast nowadays. 30 kB/s is rare now. I often get like 200+ or so. 
- 
moneromooo It can be slow to setup a good circuit first though. 
- 
sgp_ first output send: 1m40. second output send: 14s 
- 
moneromooo But, also, much less than, say, ten years ago. 
- 
sgp_ obviously there will be variability over tor and I haven't optimized mine at all 
- 
ooo123ooo1234567 tobtoht[m]: checkpoint is a compromise, correctly implemented cache with asynchronous fetching isn't a compromise 
- 
ooo123ooo1234567 > <@tobtoht:monero.social> Of this, 1.53 MB is needed to obtain the output distribution. (And this will keep increasing as the chain gets longer). 
- 
ooo123ooo1234567  * wow, less than 2 MB 
- 
sgp_ on mobile roaming I'm capped at 128kbps so sending does indeed feel like it takes forever currently for first time 
- 
sgp_ just to give an example. obviously everyone's plans are different 
- 
tobtoht[m] ooo: can you describe how your ideal implementation differs from what I proposed? 
- 
ooo123ooo1234567 I'm waiting for a test with monero-wallet-cli from sethforprivacy 
- 
ooo123ooo1234567 on that mobile device with fast vpn 
- 
tobtoht[m] With a fast VPN this isn't much of an issue. 
- 
sgp_ yeah it's like 1-2s only 
- 
sethforprivacy Almost done syncing 
- 
ooo123ooo1234567 without any code changes required data size reduced from 10MB to 1.5MB, the quickest fix ever 
- 
sethforprivacy ? 
- 
sethforprivacy Going out of your way to be antagonist to people trying to give useful feedback and improve Monero is not a good look. 
- 
sethforprivacy An "off the top of my head" calculation over dinner is just that, an estimation 
- 
selsta I can't even sync 5k blocks over Tor currently, wonder if the Tor network itself is having issues or I just have to restart a couple times until I get a good circuit 
- 
sgp_ tor is indeed having issues 
- 
sethforprivacy selsta: Tor DoS is still having an impact IIRC 
- 
sgp_ been under DDoS for like a mo 
- 
moneromooo Really. I haven't noticed :S 
- 
sgp_ that's why all wasabi 2.0 mixes haven't been going though, lol 
- 
moneromooo Then again, I think nothing of waiting a minute for connection to happen from time to time... 
- 
sethforprivacy 22s with monero-wallet-cli on 1st send 
- 
sethforprivacy 2s on subsequent 
- 
selsta what kind of phone hardware? 
- 
sgp_ hmm, much larger than I though. What's your down speed and ping? 
- 
sethforprivacy I'm using a non-ideal VPN server, 30ms ping and 66mbps down 
- 
sethforprivacy Changed VPN server, 18ms ping, 81mbps down 
- 
sethforprivacy Testing again 
- 
sethforprivacy 19s first spend, 2s subsequent 
- 
selsta subsequent = pressing cancel and transact again? 
- 
selsta without any restart 
- 
sethforprivacy No, sending and then sending again 
- 
sethforprivacy Actually sending 
- 
sethforprivacy No restart 
- 
sethforprivacy 18s first spend, 6s subsequent for selsta node 
- 
sethforprivacy Deleted ~/.shared-ringdb between wallet runs 
- 
selsta phone hardware? 
- 
selsta SoC? 
- 
sethforprivacy Pixel 6 
- 
sethforprivacy So their first-gen Tensor SoC 
- 
sethforprivacy Cutting edge 🤷 
- 
selsta the extra downloaded 1.58MB don't explain the difference you are seeing 
- 
sgp_ Mine is S20+ fwiw, snapdragon 865 
- 
sethforprivacy What else would be causing this? 
- 
sethforprivacy Network is good, phone is latest gen, nodes are known-good 
- 
selsta I still have 200k blocks on my phone to scan 
- 
sethforprivacy And subsequent spends are just as quick as expected 
- 
sethforprivacy It's something being cached 
- 
sethforprivacy (being cached for subsequent spends and not for initial spends, to be clear) 
- 
sethforprivacy 90% reduction in generation time between first spend and subsequent. 
- 
moneromooo If you want to check what's slow, did you try: sudo perf top (it will show if something's being precalced), strace (with timestamps), or just log level 2 (with timestamps), --no-dns ? 
- 
sethforprivacy Whatever is being gathered when you try and construct a transaction should be gathered on initial sync, cached, and then updated with each subsequent sync. Shouldn't wait for transaction generation anyways. 
- 
selsta moneromooo: it's on a phone 
- 
selsta 1.58MB data, over 66mbps should be downloaded in less than a second 
- 
selsta 20s difference simply doesn't add up, in no way 
- 
moneromooo That phone doens't run strace or perf ? 
- 
selsta sethforprivacy: does perf top work on a phone? 
- 
sethforprivacy idk haha 
- 
sethforprivacy Can try but have never done that before 
- 
selsta log level 2 should work 
- 
selsta and --no-dns 
- 
sethforprivacy OK 
- 
selsta the timestamps should tell what takes how long 
- 
moneromooo Also if it has gdb, gdb into the process. If it's stuck waiting in http client, it's just waiting for the daemon. 
- 
moneromooo (and the upper levels of the stack should tell you what was requested) 
- 
sethforprivacy Node on log level 2 or wallet cli? 
- 
selsta wallet 
- 
selsta node might be helpful too but would check wallet first 
- 
selsta calling get_output_distribution manually should also show us how long it takes 
- 
sethforprivacy DMing to selsta 
- 
ooo123ooo1234567 <sethforprivacy> "Network is good, phone is latest..." <- is it reproducible with `--no-dns` ? 
- 
sethforprivacy 6-8s with --no-dns 
- 
sethforprivacy For first spend, so much more reasonable but still slow 
- 
ooo123ooo1234567 can you check manually in logs what took most of the time ? 
- 
sethforprivacy 9s according to logs 
- 
sethforprivacy I'll let selsta dissect them 
- 
selsta 2022-06-24 18:54:22.168	    c8ec46223000	DEBUG	wallet.wallet2	src/wallet/wallet2.cpp:3557	Daemon is recent enough, requesting rct distribution 
- 
selsta that took 5s 
- 
ooo123ooo1234567 and other 4 seconds ? 
- 
selsta transaction <xx> generated ok and sent to daemon, key_images: [<xx> ] 
- 
selsta 2022-06-24 18:54:31.285 
- 
sethforprivacy And initial transfer command was at `2022-06-24 18:54:18.204` 
- 
ooo123ooo1234567 can you paste obfuscated log with timings ? 
- 
sethforprivacy ooo123ooo1234567: Yeah working on that now 
- 
tobtoht[m] selsta: Before or after this line? 
- 
sethforprivacy A lot to redact lol 
- 
selsta tobtoht[m]: wait, i sent it in a confusing way 
- 
ooo123ooo1234567 
- 
ooo123ooo1234567 what are the timestamps for these two lines ? 
- 
selsta 
- 
selsta ooo123ooo1234567: 18:54:21.963 and 18:54:27.553 
- 
ooo123ooo1234567 no 
- 
ooo123ooo1234567 
- 
selsta 2022-06-24 18:54:27.553	    c8ec46223000	INFO	wallet.wallet2	src/wallet/wallet2.cpp:10069	  Transaction 1/1 <xxx>: xxx weight, sending xxx in 1 outputs to 1 destination(s), including xxx fee, xxx change 
- 
selsta 
- 
tobtoht[m] We're not calling get_output_histogram because we're dealing with rct outs, and we're not is_after_segregation_fork. Is there anything else after "Daemon is recent enough, requesting rct distribution" other than the get_output_distribution.bin call that could cause the delay? 
- 
tobtoht[m] get_ringdb_key() key possibly? Looks like it's cached. 
- 
selsta cake wallet took less than 3s, in line with monero-wallet-cli and gui for me 
- 
selsta on iOS at least 
- 
selsta on both home and mobile connection, but i have fast mobile internet here 
- 
tobtoht[m] <tobtoht[m]> "get_ringdb_key() key possibly..." <- Nvm, would have shown up in the logs. And it's called after opening the wallet. 
- 
ooo123ooo1234567 create_transactions_2 - 5.6s, get_output_distribution - 5.08s; with 334KB/s connection and --no-dns 
- 
ooo123ooo1234567 <sethforprivacy> "For first spend, so much more..." <- are there any difference between 1st and 2nd sends without dns ? 
- 
ooo123ooo1234567 s/are/is/ 
- 
sethforprivacy Not sure, will test now 
- 
tobtoht[m] ooo: is that get_rct_distribution() or only the /get_output_distribution.bin call? 
- 
sethforprivacy 8s first spend, 7s subsequent 
- 
ooo123ooo1234567 both 1st and 2nd were relayed ? 
- 
sethforprivacy yes 
- 
sethforprivacy network is 20ms ping, 1.55ms jitter, 90mbps down, 180mbps up 
- 
sethforprivacy Using selsta's node. 
- 
selsta what's the ping to my node? 
- 
tobtoht[m] I'm pretty sure we can remove this m_node_rpc_proxy.get_rpc_version() call. There is no daemon out there that doesn't support this. That would save one round trip. 
- 
selsta +1 
- 
selsta got added 4 years ago 
- 
ooo123ooo1234567 <sethforprivacy> "8s first spend, 7s subsequent" <- is it obvious why dns is so slow there ? 
- 
sethforprivacy <selsta> "what's the ping to my node?" <- 140-200ms 
- 
sethforprivacy > <@selsta:libera.chat> what's the ping to my node? 
- 
sethforprivacy  * 140-250ms 
- 
sethforprivacy I saw 400 at one point when testing 
- 
selsta yea, sorry my node is only good for Europe :D 
- 
sethforprivacy Yeah haha, its expected 
- 
ooo123ooo1234567 <sethforprivacy> "19s first spend, 2s subsequent" <- what's the delay with your own node with --no-dns ? 
- 
tobtoht[m] 
- 
sethforprivacy ooo123ooo1234567: 2-3s 
- 
ooo123ooo1234567 wow, is it enough for good UX without tor ? 
- 
sethforprivacy Better than 20s 
- 
sethforprivacy What about no-dns seems to be improving it this much? 
- 
selsta might be a problem with your VPN DNS? 
- 
selsta I think on desktop you didn't use VPN? 
- 
sethforprivacy I'm using custom NextDNS, not VPN-based 
- 
sethforprivacy I don't see any other DNS issues or latency with other apps, browsing, etc. 
- 
ooo123ooo1234567 records from centralized monero dns aren't reachable instantly for some reason 
- 
ooo123ooo1234567 `drill  -t txt @8.8.8.8 segheights.moneropulse.org`; `drill  -t txt segheights.moneropulse.org` 
- 
ooo123ooo1234567 what's the delay for this dns requests ? 
- 
sethforprivacy What is `drill`? 
- 
sethforprivacy Have never seen that before and not in apt 
- 
ooo123ooo1234567 use any other tool for dns requests from terminal 
- 
ooo123ooo1234567 `time (for d in org net co se; do drill  -t txt segheights.moneropulse.org &; done; wait )` the wallet is doing 4 requests, maybe one of them is too slow for your environment 
- 
sethforprivacy 43ms vs 52ms 
- 
sethforprivacy Negligible 
- 
ooo123ooo1234567 s/.org/.$d/ 
- 
- 
sethforprivacy meh thats just cached now 
- 
sethforprivacy 
- 
ooo123ooo1234567 did you try to from that mobile device ? and without 8.8.8.8 server 
- 
ooo123ooo1234567 s/to// 
- 
sethforprivacy Sorry no, testing now 
- 
ooo123ooo1234567 <tobtoht[m]> "I'm pretty sure we can remove..." <-  monero-project/monero #5600/files, there is a cache for rpc version, it would be good to use it 
- 
tobtoht[m] We don't need the check at all. 
- 
ooo123ooo1234567 indeed, that's true if no one is relying on that error with old daemon 
- 
ooo123ooo1234567 `git grep 'MAKE_CORE_RPC_VERSION'` why not to remove all of them then ? 
- 
ooo123ooo1234567 <sethforprivacy> "Going out of your way to be..." <- all involved people were busy with optimizing minor thing with another centralized checkpoint, it's pretty good look to not accept it 
- 
tobtoht[m] <ooo123ooo1234567> "`git grep 'MAKE_CORE_RPC_VERSION..." <- Sure. 
- 
ooo123ooo1234567 <sethforprivacy> "Sorry no, testing now" <- what was the result ? 
- 
ooo123ooo1234567 
- 
ooo123ooo1234567 an interesting question is how to do development of decentralized project in order to avoid such vulnerabilities 
- 
sethforprivacy <ooo123ooo1234567> "what was the result ?" <- Had to step away, sorry, might get to it later or tomorrow.