01:16:25 "you can mine yourself to..." <- I am using the stagenet 01:16:44 "you can also print the height to..." <- I will try it. 01:17:53 * the stagenet, I guess it will have blocks added 06:30:15 * spirobel[m] uploaded an image: (269KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/ZijXGMxKWGxNSmCnMmRTGxpA/image.png > 06:31:04 okay it seems like the other listeners fire. But onnewblock and the sync related stuff does not work 06:31:21 (i send it some money from a different wallet) 06:32:08 s/send/sent/ 06:33:58 maybe its because the syncing process happens too fast. Still odd though. I just had this intuition that it would at least for some event. But I mean thats okay maybe it just isnt a very chatty api. 06:34:20 similar to this unix philosphy: when everything is fine just shut up. 06:34:47 maybe I will investigate this later when I implement the recovery of old wallets. 06:44:30 by the way what is the difference between getransfers and getTxs? 06:47:10 * spirobel[m] uploaded an image: (175KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/hSsQBnSZERnTccVfObgjswhU/image.png > 06:47:19 okay now it cant find the transfer/transaction anymore... 06:47:30 weird. 06:55:14 maybe all of this weirdness is the result of me immediately saving the wallet after creating it. without even syncing or connection to a daemon. later i do openwallet with this data. 06:55:29 maybe that leads to messed up sync height or other weird things 06:55:33 just a guess 07:37:10 Does anyone here compile with visual studio? 07:37:26 Or is everyone on msys2 08:29:32 I guess neither :) 08:34:05 i use linux 11:28:06 likewise, I use linux. I still have a virtualbox vm with windows and msys2 on it somewhere, if needed 14:59:06 "Of course, you lose the ability..." <- It looks like `add_subaddress` and `expand_subaddresses` would continue to work as usual, and I'm perfectly happy with the current incremental/derivative allocation mechanism for new addresses. The goal is simply to be able to stop caring about addresses when they become irrelevant (in some use-case specific way), which is to say not allocating memory for those addresses, matching 14:59:06 against the, firing events for incoming transactions, etc. 14:59:06 It is completely within bounds to have memory requirements that scale with the number of addresses that are relevant at any given time, but not for the memory requirements to scale with the number of addresses that are *or have ever been* relevant. 14:59:06 As I discussed with selsta before, these memory requirements are, on a per-address basis, pretty minimal, so I have already implemented a stopgap solution which simply doesn't bother about deleting old addresses for the time being. 14:59:39 void add_subaddress(uint32_t index_major, const std::string& label); // throws when index is out of bound 14:59:39 void expand_subaddresses(const cryptonote::subaddress_index& index); 15:00:46 "I also have an old patch that..." <- I wouldn't mind having a look. Is there a particular reason this patch wasn't merged when it was fresh? 15:09:29 https://github.com/monero-project/monero/pull/5370 15:19:21 The one other consideration would be getting rid of the memory/storage used by the labels, which looks like it would require a bit more fudgery; in-memory, labels would also need to be stored as a map rather than a list. I don't care that much about serialized size, and it should be possible to do this without breaking the existing serialized wallet cache by serializing that map as a list, as it now is. 15:19:21 What's the history behind things being implemented as they are? I would think that this functionality would be helpful even for regular old wallet users who wish to generate a new subaddress for each incoming transfer, for example. If you are often doing `receive -> sweep` with a new subaddress for each transaction the user-facing wallet also currently becomes cluttered quite quickly. 15:19:21 "https://github.com/monero-..." <- Cheers, I'll have a look. 17:54:15 Genuine question: Is my PR (https://github.com/monero-project/monero/pull/8175) getting too big? There's 34 commits, but each are very specific and well documented (if it's not just removing unused files). 17:59:36 You have a patch for each file you remove ? I just looked at the one line messages, it looks like it. 18:16:56 okay I think I solved the puzzle. I created the wallet from a random mnemonic. then saved the wallet data. then connected to the daemon. with setdaemon. then later on i reopen from this data. I assume syncheight is not set. but it seems like it gets implicitly set now to the end of the chain ( maybe through the setdaemonconnection after (re)opening the wallet. I will investigate) then I do the sync and the response to getheight is higher 18:16:56 but (but still not the same to getSyncheight ... this one still puzzles me) ....TLDR: make sure you your syncheight makes sense. it might be implicitly set somewhere and sync wont throw any errors to warn you of this. You can not just assume that is set to the right thing) 18:17:07 * spirobel[m] uploaded an image: (156KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/ZnzAlPyHpIkOSFccVVTZEDTg/puzzle_solved.png > 18:17:54 s/you// 18:22:23 * spirobel[m] uploaded an image: (252KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/WhghydKqCCoedsYmrtQTqwes/puzzle_solved2.png > 18:24:14 * spirobel[m] uploaded an image: (30KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/gAJZXUjJRlpXQbZXftXUVQEV/Screenshot%202022-03-07%20at%2002-23-49%20JSDoc%20Class%20MoneroWalletListener.png > 18:27:42 I think it was this description that led me down the path of paranoia. It seems like this listener fires as new blocks are processed by the wallet syncing code. theoretically you can say it fires when a new block is created because that will lead to a new block being processed. But that might not actually be the case. For me it didnt fire because my syncheight was set somewhere implicitly to something weird. So it never fired even as 18:27:43 newblocks were created. 18:29:42 this led to some mild existential dread because the assumptions didnt seem to fit reality 😅😆🤣 but I survived haha 🥰 18:42:09 * spirobel[m] uploaded an image: (60KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/IFLFohMTvuZgTzjHvLnKlFtX/Screenshot%202022-03-07%20at%2002-41-38%20JSDoc%20Class%20MoneroWalletFull.png > 18:46:57 the assumption is that the restoreheight of createwallet when creating a random wallet is the blockheight at the time when the wallet was created. The issue is that I didnt supply a daemon uri directly and did setdeamonconnection after saving the wallet file. At this point there is no way for createwallet to know what the current blockheight is. So I manged to hit the edge case where the the syncheight/restoreheight of the wallet is the 18:46:58 one and (re)opening time. Because syncheight was set implicitly somewhere. 18:47:30 s/and/at/ 18:47:55 would be interesting to find out where. Any ideas? 19:08:41 moneromooo Yeah most of the times, but sometimes if they're related, I'll delete them all together in one commit 19:10:13 moneromooo But sometimes I do make logical changes like in https://github.com/monero-project/monero/pull/8175/commits/9a59b131c4ed1be8afe238fff3780fe203c65a46 19:12:49 * Any ideas? EDIT: It seems like it is set to 1056219 in the openwallet even though open wallet does not have the servuri. maybe it is set to this value even earlier. This would also explain why getheight was below getSyncheight even after syncing. It seems like syncheight is set to something in the future randomly somewhere. 19:36:01 * Any ideas? EDIT: It seems like it is set to 1056219 in the openwallet even though open wallet does not have the servuri. maybe it is set to this value even earlier. This would also explain why getheight was below getSyncheight even after syncing. It seems like syncheight is set to something in the future randomly somewhere. EDIT2: okay it seems to be set on wallet creation to something in the future. 19:39:22 Are you creating a new wallet and getting a value of refresh-from-block-height that's higher than the chain actually is ? 19:39:33 Your names are all wonky but it sounds like it. 19:44:18 moneromooo: yes. I think this is what is going on. I will pass serveruri to it and see if there is a difference 19:50:32 If the wallet is not connected to the daemon, it can't know what the chain height is, so it makes a guess. Due to huge hash rate variations, guesses on testnet are bad. 19:54:55 https://github.com/monero-ecosystem/monero-javascript/blob/89e6400405ad6c09c1e64d7e28ea427e41d6d523/src/main/js/wallet/MoneroWalletFull.js#L234 it goes form this to this: https://github.com/monero-ecosystem/monero-javascript/blob/f167d6890d0764ee7dbeb9deacc6ad1825e77961/src/main/cpp/monero_wasm_bridge.cpp#L173 and then into this: 19:54:55 https://github.com/monero-ecosystem/monero-cpp/blob/37b97f8e52177be260ba7a5c666503482d6820df/src/wallet/monero_wallet_full.cpp#L1063 it says indeed something about set_refresh_from_block_height i dont know if it is actually this codepath. The daemon info is all "" emptied out so it might short circuit some where before. Or you are saying it makes a guess somehow? 19:55:02 sounds cool 19:56:02 but maybe a warning or leaving it unset would be good too 19:56:32 I would be interested to see the guess code. would be glad for a link 🥰 19:58:47 rbrunner: could you review this? https://github.com/monero-project/monero/pull/8195 20:20:53 wallet2.cpp, /:estimate_ (IIRC) 20:21:36 If you don't set a daemon, it'll default to 127.0.0.1:18081 (modulo port if testnet). 20:39:23 "If you don't set a daemon, it'll..." <- what if there is no daemon running? in my case it would be like this. It still guesses a number? Why is this number not left unset? 20:43:28 If there is no daemon running, the connection will fail, as you might expect. It'll guess. 20:44:04 It is not left unset for performance. If unset, it'd have to scan all txes from the start of the chain. There are a lot. 20:45:59 moneromooo: but it can also lead to situation where it be set to something in the future like in this case which will break all sorts of assumptions. 20:47:00 If that was a question, yes. 20:47:01 moneromooo: in this case it will set the height to 1056219 it seems like this number is static. It does this without daemon connection. I dont run a daemon locally. 20:47:41 It should go up by one every two minutes. If it does not, then it's probably not what is happening. 20:49:34 moneromooo: the create wallet did not get fed a serverUri. So its pulling this number from somewhere. I cant quite pin down where it comes from. But its happening without a connection to a daemon. 20:49:46 s/create/createwallet()/, s/wallet// 20:51:30 the TLDR is this: createWallet() will let you create a wallet without a serveruri (reard: daemon connection). it will randomly set a syncheight that might be in the future. It is essentially this offline wallet described here: https://github.com/monero-ecosystem/monero-javascript/blob/04a1df09247ac72eae7b5597dbfd616e24953227/docs/developer_guide/view_only_offline.md 20:55:59 s/reard/read/ 21:31:27 Interestingly, I haven't yet gotten `monero-wallet-rpc` to use above ~50% utilization on one core...even when trying to add subbaddrs 10000 at a time. It just takes forever. 21:33:18 must be doing a lot of IO then 21:33:32 spirobel: The network targets a fixed block rate per time, so it basically guesses based on when "now" is. 21:49:04 yesterday in social i was talking about storj and how it would be nice to see a service like that that used xmr. anyone here an expert in that kinda stuff? 21:50:05 storj is a decentralized cloud storage for those who dont know 21:54:21 hocus pocus out of focus: Well, it's not quite clear, but this is running over loopback, so I don't think it should be IO bound unless it is flushing the wallet cache to disk after every address. I'm certainly not explicitly telling it to do that. 21:55:35 Re: Storj, you would be happy if they accepted Monero as payment, or something deeper? 21:56:48 i would like it to be built on xmr 21:57:04 storj themselves wont do that, they exist to pump their own shitcoin 22:07:13 How would you envision something like that working? 22:09:29 people with extra disk space run a daemon to reserve that space for the cloud network. people who want to use cloud space pay xmr to access it. some magic happens and that xmr gets distributed to providers of cloud space 22:09:59 not really sure how the magic part would work. like i said im not an expert in this area 22:11:11 A bastard system could be to use the credit system. Mine to a daemon offering that service, building up credits. As long as you pay for time * space, the daemon keeps your data. 22:11:39 You'd need to build the server than manages the data, but monerod would handle all the monero side already. 22:12:17 And it's only "decentralized" insofar as you select some node in the set of those that offer such a service, it would not be distributed. 22:12:45 (though you can pay more nodes to keep the same data for availability). 22:13:45 And of course you have no guarantee the service offerer will keep their side of the bargain (hence the availability above). 22:14:21 Kind of a crutch, but possible without micropayment chain spam. 22:14:53 right im more thinking of all disk space providers get thrown into some kind of generic pool of disk space, and the client's files can be anywhere in that pool (maybe offer some kind of built-in redundancy too) 22:15:49 storj only pays providers if they maintain a certain uptime 22:16:01 You could build a program than auto directs your miner to mine to several nodes offering this service, and keeping your data on every one of them. 22:16:59 sure but say im just some avg joe who wants cloud storage. i should be able to acquire xmr however i want then pay that xmr to access cloud 22:19:19 "And it's only "decentralized..." <- Would using ipfs help here? 22:24:35 * Would using ipfs help here?... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/95e0e089a0d2dc98b82d4267a7aa7848dcf86bb4) 22:24:40 * Would using ipfs help here?... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/bc3d76988854db43933f9622c498910f4986e023) 22:26:55 imo no node should ever know what data it holds. everything is e2e encrypted 22:27:45 "That's not obfuscation, and..." <- What happens to an individual who sends/spends their entire balance? 22:28:48 Then the whole balance (minus the tx fee) goes into a single output destined for the recipient 22:29:47 Though iirc there's now a second "dummy" empty output in every tx in that case, so that there's always at least two outputs - to make such transactions harder to distinguish 22:52:11 "Though iirc there's now a second..." <- Thank you for the reply. I think I saw something about this "second dummy/empty output" when I was reading a medium article about how people are trying to profile the origin of the tx spike in July of 2021. Based on your reply and that article I take 2 outputs to be the minimum even for whole spends, as the people working on that issue started their profiling at 2 outputs and more, 22:52:11 there was not data point for single output transactions. 23:34:44 hocus pocus out of focus: What you want doesn't really have anything to do with Monero other than that you want to be able to pay with Monero. I'm not clear why you don't like Storj other than it's not Monero. Would you like Filecoin better? The same service could be built atop that. These coins were designed with proof-of-storage as the baseline, because storage is what they are intended to do. Thus they do a good job of providing 23:34:44 reliable, yet decentralized storage in exchange for their coin. Monero was built with completely different requirements in mind. Why not find a way that fits your privacy requirements to swap Monero for a coin that does storage, if you want storage? 23:35:49 the problem with these coins are that you can only spend them to buy the product that you by-definition dont need because youre a provider. theyre scam coinsd 23:35:55 s/coinsd/coins/ 23:36:00 "just swap" is absurd 23:36:20 i dont swap my fiat dollars for target gift cards every time i want to shop at target 23:37:05 and i never said it "had to do with monero." i asked if there are any experts in this arena that would be interested in building a solution based around monero payments 23:37:12 dunno why you guys get so defensive 23:42:00 "i dont swap my fiat dollars..." <- Perhaps because your fiat dollars are already sufficiently private and Target accepts them? 23:42:15 "the problem with these coins are..." <- Maybe you could elaborate on this... 23:43:04 ok i host storj space and i collect storj-coins. what can i buy with storj-coins? space in the storj cloud... which i provide... 23:50:03 Ah, yes, you've discovered the great conundrum of blockchains, I suppose. Why would Ethereum miners want more ETH, if all they can do with ETH is buy more computation on the Ethereum blockchain? 23:51:43 no, the conundrum of ShitCoins and ScamCoins. but a coin that has all the properties of money (xmr is the only one i know of), can be used as money if people offer goods and services for it. im proposing a possible service to offer and asking if there are any people with the expertise necessary to help build it 23:51:53 * the expertise and desire necessary to 23:54:17 if this channel is for monero core dev only, rather than dev work related to monero, thats fine you can just say that 23:54:34 no need to have a drawn out pointless convo