00:22:26 who knows... 00:41:24 I have a particular use-case that at first (and second) glance seems like it could be a bit clunky to implement with the [Wallet](https://www.getmonero.org/resources/developer-guides/wallet-rpc.html) and [Daemon](https://www.getmonero.org/resources/developer-guides/daemon-rpc.html) RPC APIs. Hopefully this is not... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/2a89bcb14ad2cf1583b2c2b45804e4b631937281) 00:44:05 Regarding the `create_account` bit, I'd be curious to know if anyone has been running wallets with 1000+ subaddresses, and if there are any actual or practical limitations to the number of subaddresses, and the performance impact of doing such a thing. 00:56:11 methylene[m]: having 1000+ subaddresses shouldn't be a problem 00:56:23 wallet RAM usage increases with subaddresses but sync time should stay constant 00:59:32 selsta: And if we speak of 100K, 1M, 10M addresses? 00:59:54 Same. Higher RAM usage and constant sync time. 01:01:08 Ok, that's certainly positive. Do you have an idea what the RAM requirements would be for every, say 1000 addresses? 01:08:16 I don't know exactly. But if your requirement is millions of subaddresses it shouldn't be a problem to run the wallet on a VPS with more than 2GB RAM :) 01:08:47 1000 addresses shouldn't be visible at all in RAM usage. If I remember correctly the default is 10000 subadddresses. 01:09:01 Whatever the memory per address (within reason), RAM requirements scaling linearly with the number of simultaneously watched addresses seems very reasonable. My main concern remains pruning of unused addresses. Is there a way to tell a wallet to stop caring about a subaddress? I don't mind if the address still "exists" (the index will obviously not be reused, deterministic derivation and tralala), I just don't want it to expend RAM 01:09:01 storing it, nor cycles watching for its transactions. 01:09:53 I don't think that exists currently. 01:12:27 So, practically speaking, the most straightforward path seems to be using a single wallet and not worrying about it for now, and working on a patch for the wallet core to make it support sparse subaddresses. The other solutions of having a wallet pool sound clunky, plus opening and closing wallets seems to take a not-inconsiderable amount of time in my testing. 01:18:23 I might convert the subaddress index to a `uint64_t` as well, while I'm at it ;) 01:21:59 Sanity check: I should be modifying `src/wallet`, not `simplewallet1, yes? 01:22:31 s/simplewallet1,/simplewallet`,/ 02:16:46 methylene[m]: simplewallet is monero-wallet-cli program, wallet2 is the internal wallet implementation 02:16:56 simplewallet calls wallet2 functions 02:18:43 the account index is uint32_t and the subaddress index is also uint32_t 02:18:45 https://monerodocs.org/public-address/subaddress/ 03:18:07 .merge+ 8190 03:18:07 Added 03:30:45 What can you say to the point of anonymity set for transactions being only 11. Why is that enough? Apparently the private version of ZCash has an anonymity set of ~500k 03:32:05 can you trace some xmr trades for us to show that 11 isnt sufficient? 06:16:31 with Tryptich over 128 will be possibo 08:00:18 -xmr-pr- EWIT521 opened issue #8204: How to simulate a TXID for multiple UTXO transaction 08:00:18 -xmr-pr- > https://github.com/monero-project/monero/issues/8204 10:15:18 -xmr-pr- mj-xmr opened pull request #8205: Compil. time: cryptonote_core minus portable_storage header 10:15:18 -xmr-pr- > https://github.com/monero-project/monero/pull/8205 12:57:39 selsta: Right, I see that it is currently a `uint32_t`. Also looks like it's already stored as a map some places internally, so I guess exposing an RPC method to delete keys out of that map would be possible, but ideally they would also not be loaded at all on wallet open. I guess this would require changing... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/735428e2bb157fe7e3a90dc5d945254198a51380) 13:01:59 My hope is of course to find a way to make this change that doesn't break the `wallet2` api and all the other stuff that depends on it. 13:11:30 methylene[m]: it's two unit32_t indices 13:12:01 one account index and one subaddress index 13:12:18 {account, subaddr_idx}? 13:12:23 Aha, sure. 13:14:26 Same principle applies though, in order to support sparse subaddresses, that would need to become a sparse list. Wouldn't really change much for wallets/users that don't care about removing subaddrs though, if serialized in a reasonable way. 13:31:46 `m_subaddr_labels` *could* be changed to a `serializable_unordered_map`, but it's probably fine as is 14:10:03 So the wallet cache already seems fine also, as far as tolerating deleting/sparse subaddresses. The keys file doesn't store `{account, subaddr}`, so we expect restoring from keys to require additional...help...as it already does. And if a cache file exists it looks like it will load that, sparse or otherwise... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/4a844a3f8cda8612170b98de2fa336663fba105f) 14:18:00 Being careful about having `null` in `m_subaddr_labels`, I suppose, could make them all point to `static LABEL_EMPTY = ""`, don't think they get derefed unless the index exists in `m_subaddrs` though. 14:21:02 This would obviously be great if it works, so as to not even break the existing cache format. 14:21:02 selsta: Does this look like it's going to blow up all over the place? 15:05:19 Hey everyone 15:05:33 I'm having some issues with the wallet RPC atm and I'd like some help 15:05:50 So i'm trying to just generate a monero subaddr, transfer money to that subaddr, and then send it back 15:06:14 The first two things I'm able to do perfectly fine w 0 issue, but it's the sending ti back part that's giving me trouble 15:07:26 When I just try to send back the exact amount i sent to the wallet, I get an error of "not enough money" 15:07:50 Which I honestly completely don't understand, since at higher log levels when it says "available" and "tx amount" tx amount is lower 15:08:26 Enough left for the fee ? 15:09:05 bootlegbilly: Fee + did you wait for the transaction to be confirmed? 15:12:02 Current network fee is 0.000000004565 right? 15:12:45 If so then yes 15:43:00 Oh 15:43:02 Thats the fee per byte 15:43:04 Jesus lol 15:43:25 Is there anyway of calculating the size of a transaction from just the amount?? 15:43:35 s/??/?/ 15:45:08 bootlegbilly: For your use case, just `sweep_*` rather than `transfer`. 15:46:40 methylene I don't think I'm able to specify the amount I send with the sweep_* functions though 15:46:46 Just from what i can tell from the docs 15:53:02 bootlegbilly: True, that's the point. You said you wanted to "send it back", all of it being the implication. 15:53:21 Oh that's very true, jaja 15:53:27 What if I only wanted to send part of it back 15:54:55 Then you would probably have enough for the fees :) 15:55:53 Ty 16:14:06 Hey so really quick 16:14:08 Whats the difference between transfer and transfer_split 16:14:21 Like ik the docs say that the transaction can be split if needed but does that make a difference at all? 16:14:31 like will transfer_split succeed more often on a specific edge case? 16:29:27 There's a sweep_all call. 16:30:06 (which will send balance-fee) 17:29:48 methylene[m]: I'm not familiar with the subaddress code myself so can't really help 17:39:03 I don't *think* it'll break, but I'm not sure. The reason I think it will not break is that you can add a subaddress with an arbitrary index, and I'm not aware of anything this breaks. However, it's unlikely to be tested much. 17:39:24 In any case, it's theoretically possible to make it work, so any breakage is fixable. 17:39:53 Of course, you lose the ability to auto bump the pregenerated indices if you receive something on an address you dumped, but I think that's what you want anyway. 17:40:58 I also have an old patch that halves RAM requirements for subaddreses. Might be useful if RAM usage is your original issue for wanting to forget addresses. 17:41:52 bootlegbilly[m]: originally, transfer_split allows making more htan one tx per request, while transfer does not. 17:42:07 In simplewallet, transfer now runs transfer_split internally. 17:42:24 In RPC, I think it's still the old nomenclature, for compat reasons. 17:42:40 You should not need to use the transfer RPC, just transfer_split. 17:42:57 moneromooo: Ty 18:57:29 selsta: have you seen this failure before (node_server unit test) https://github.com/monero-project/monero/runs/5414279246 19:03:42 UkoeHB: is it consistently reproducible? 19:05:35 I would force push and try again 19:07:29 do you have a trick to force pushing? the only way I know is to modify the commit with a rebase 19:07:43 push -f 19:08:13 (Whether that triggers a github build though, no idea) 19:08:25 Everything up-to-date 19:08:29 This is what I get 19:08:56 git commit -S --amend --no-edit 19:09:03 git push -f 19:11:51 selsta: thanks :) 20:45:18 -xmr-pr- BebeSparkelSparkel opened issue #8206: unit_tests node_server.bind_same_p2p_port FAILED 20:45:18 -xmr-pr- > https://github.com/monero-project/monero/issues/8206 21:19:26 monero-javscript related question: are there any limitations or underlying assumptions about the monero wallet listeners that I dont know about? 21:19:39 * spirobel[m] uploaded an image: (356KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/lFsieMskpPlErLvdmaRPRhGp/walletlisteners_code.png > 21:19:44 * spirobel[m] uploaded an image: (167KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/OdsfKMCgyzJXpkCZZGmItlaK/consolelog.png > 21:20:35 AIUI javascript doesn't grok integers, so large amounts will lose precision. 21:20:43 I setup the listner in a redux-saga like this. But it seems like the onSyncProgress callback never happens even though I see in the network tab that the wallet is syncing with the server 21:21:26 s/server/daemon / 21:22:45 if youre having JS problems with integers, make sure you go through and BigInt everything 21:23:22 hocuspocusoutoff: I dont think its related to integers. the problem is the listener callback does not get called. 21:23:52 * spirobel[m] uploaded an image: (242KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/NycoGKiJDGTjxecdPgFDMFIJ/image.png > 21:24:11 I see in the network console something is happening but I dont get the callback from the listener 21:24:34 maybe woodser knows something I could try 😅🙂 21:32:01 UkoeHB: seems green now 21:52:45 I haven't tried the yield/call syntax. are you able to do more conventional await monero_wallet.addListener(listener) ? 21:55:38 woodser[m]: yes I tried it too. 21:56:31 * spirobel[m] uploaded an image: (380KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/sUlTOWrvkMDovccYWIxbiRxc/image.png > 21:57:05 * spirobel[m] uploaded an image: (218KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/czGeCaemTZDrquZaaYglnVfr/image.png > 21:57:27 still the same result. I also added a onnewblock handler 21:58:00 but it seems like non of the handlers get called. Maybe this is related to webasm and isolation or somthing ... 21:58:08 s/somthing/something/ 21:58:40 Can you point me somwhere in the monero-javascript codebase where I can dig? 21:58:47 s/somwhere/somewhere/ 22:00:30 or maybe it is webworker related 22:00:57 could it be that the wallet is already synced, perhaps a new wallet, and new blocks need to be added to the chain? 22:02:05 this test will print sync updates to the console: https://github.com/monero-ecosystem/monero-javascript/blob/f167d6890d0764ee7dbeb9deacc6ad1825e77961/src/test/Scratchpad.js#L46 22:02:05 npm run test -- --grep "Scratchpad" 22:03:29 woodser[m]: ah okay true. maybe its working but the subconscious assumptions I had about it are wrong. I just created the wallet for testing purposes 22:04:20 it only fires on initial sync (doesn't apply to new wallets) and when new blocks are added to the chain 22:04:23 * spirobel[m] uploaded an image: (183KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/CISQUUYDqzmpqBHqWeTXBSVw/image.png > 22:04:41 woodser[m]: hm...maybe on stagenet there were no new blocks 22:05:46 yeah it makes sense. So I will just assume it works and implement the sending and receiving part of the UI and then see again if it works 22:06:31 thanks a lot for your help. Its easy to get stuck in the mud when assuming things that shouldnt be assumed haha 22:06:42 np :) 22:06:44 Just wait 3 minutes when you can safely assume a block has been mined 22:07:02 Then you should see the onnewblock get called 22:08:02 Elijah[m]: is it also on stagenet? 22:08:59 Stagenet is just mainnet code wise just that xmr has no fiat value. 22:09:06 * just that the xmr has 22:13:19 hm..or maybe something is wrong with the daemon connection 22:17:53 selsta: yep guess it's a rare bug or oom issue