-
spirobel[m]
<woodser[m]> "you can mine yourself to..." <- I am using the stagenet
-
spirobel[m]
<woodser[m]> "you can also print the height to..." <- I will try it.
-
spirobel[m]
* the stagenet, I guess it will have blocks added
-
-
spirobel[m]
okay it seems like the other listeners fire. But onnewblock and the sync related stuff does not work
-
spirobel[m]
(i send it some money from a different wallet)
-
spirobel[m]
s/send/sent/
-
spirobel[m]
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.
-
spirobel[m]
similar to this unix philosphy: when everything is fine just shut up.
-
spirobel[m]
maybe I will investigate this later when I implement the recovery of old wallets.
-
spirobel[m]
by the way what is the difference between getransfers and getTxs?
-
-
spirobel[m]
okay now it cant find the transfer/transaction anymore...
-
spirobel[m]
weird.
-
spirobel[m]
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.
-
spirobel[m]
maybe that leads to messed up sync height or other weird things
-
spirobel[m]
just a guess
-
jeffro256[m]
Does anyone here compile with visual studio?
-
jeffro256[m]
Or is everyone on msys2
-
mj-xmr[m]
I guess neither :)
-
hocuspocusoutoff
i use linux
-
hyc
likewise, I use linux. I still have a virtualbox vm with windows and msys2 on it somewhere, if needed
-
methylene[m]
<moneromooo> "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
-
methylene[m]
against the, firing events for incoming transactions, etc.
-
methylene[m]
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.
-
methylene[m]
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.
-
methylene[m]
void add_subaddress(uint32_t index_major, const std::string& label); // throws when index is out of bound
-
methylene[m]
void expand_subaddresses(const cryptonote::subaddress_index& index);
-
methylene[m]
<moneromooo> "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?
-
moneromooo
-
methylene[m]
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.
-
methylene[m]
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.
-
methylene[m]
<moneromooo> "
github.com/monero-..." <- Cheers, I'll have a look.
-
jeffro256[m]
Genuine question: Is my PR (
monero-project/monero #8175) getting too big? There's 34 commits, but each are very specific and well documented (if it's not just removing unused files).
-
moneromooo
You have a patch for each file you remove ? I just looked at the one line messages, it looks like it.
-
spirobel[m]
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
-
spirobel[m]
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)
-
-
spirobel[m]
s/you//
-
-
-
spirobel[m]
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
-
spirobel[m]
newblocks were created.
-
spirobel[m]
this led to some mild existential dread because the assumptions didnt seem to fit reality 😅😆🤣 but I survived haha 🥰
-
-
spirobel[m]
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
-
spirobel[m]
one and (re)opening time. Because syncheight was set implicitly somewhere.
-
spirobel[m]
s/and/at/
-
spirobel[m]
would be interesting to find out where. Any ideas?
-
jeffro256[m]
moneromooo Yeah most of the times, but sometimes if they're related, I'll delete them all together in one commit
-
jeffro256[m]
-
spirobel[m]
* 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.
-
spirobel[m]
* 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.
-
moneromooo
Are you creating a new wallet and getting a value of refresh-from-block-height that's higher than the chain actually is ?
-
moneromooo
Your names are all wonky but it sounds like it.
-
spirobel[m]
moneromooo: yes. I think this is what is going on. I will pass serveruri to it and see if there is a difference
-
moneromooo
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.
-
spirobel[m]
-
spirobel[m]
github.com/monero-ecosystem/monero-…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?
-
spirobel[m]
sounds cool
-
spirobel[m]
but maybe a warning or leaving it unset would be good too
-
spirobel[m]
I would be interested to see the guess code. would be glad for a link 🥰
-
selsta
rbrunner: could you review this?
monero-project/monero #8195
-
moneromooo
wallet2.cpp, /:estimate_ (IIRC)
-
moneromooo
If you don't set a daemon, it'll default to 127.0.0.1:18081 (modulo port if testnet).
-
spirobel[m]
<moneromooo> "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?
-
moneromooo
If there is no daemon running, the connection will fail, as you might expect. It'll guess.
-
moneromooo
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.
-
spirobel[m]
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.
-
moneromooo
If that was a question, yes.
-
spirobel[m]
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.
-
moneromooo
It should go up by one every two minutes. If it does not, then it's probably not what is happening.
-
spirobel[m]
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.
-
spirobel[m]
s/create/createwallet()/, s/wallet//
-
spirobel[m]
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:
github.com/monero-ecosystem/monero-…eveloper_guide/view_only_offline.md
-
spirobel[m]
s/reard/read/
-
methylene[m]
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.
-
hocuspocusoutoff
must be doing a lot of IO then
-
methylene[m]
spirobel: The network targets a fixed block rate per time, so it basically guesses based on when "now" is.
-
hocuspocusoutoff
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?
-
hocuspocusoutoff
storj is a decentralized cloud storage for those who dont know
-
methylene[m]
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.
-
methylene[m]
Re: Storj, you would be happy if they accepted Monero as payment, or something deeper?
-
hocuspocusoutoff
i would like it to be built on xmr
-
hocuspocusoutoff
storj themselves wont do that, they exist to pump their own shitcoin
-
methylene[m]
How would you envision something like that working?
-
hocuspocusoutoff
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
-
hocuspocusoutoff
not really sure how the magic part would work. like i said im not an expert in this area
-
moneromooo
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.
-
moneromooo
You'd need to build the server than manages the data, but monerod would handle all the monero side already.
-
moneromooo
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.
-
moneromooo
(though you can pay more nodes to keep the same data for availability).
-
moneromooo
And of course you have no guarantee the service offerer will keep their side of the bargain (hence the availability above).
-
moneromooo
Kind of a crutch, but possible without micropayment chain spam.
-
hocuspocusoutoff
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)
-
hocuspocusoutoff
storj only pays providers if they maintain a certain uptime
-
moneromooo
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.
-
hocuspocusoutoff
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
-
w[m]
<moneromooo> "And it's only "decentralized..." <- Would using ipfs help here?
-
w[m]
-
w[m]
-
hocuspocusoutoff
imo no node should ever know what data it holds. everything is e2e encrypted
-
fr33_yourself[m]
<merope> "That's not obfuscation, and..." <- What happens to an individual who sends/spends their entire balance?
-
merope
Then the whole balance (minus the tx fee) goes into a single output destined for the recipient
-
merope
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
-
fr33_yourself[m]
<merope> "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,
-
fr33_yourself[m]
there was not data point for single output transactions.
-
methylene[m]
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
-
methylene[m]
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?
-
hocuspocusoutoff
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
-
hocuspocusoutoff
s/coinsd/coins/
-
hocuspocusoutoff
"just swap" is absurd
-
hocuspocusoutoff
i dont swap my fiat dollars for target gift cards every time i want to shop at target
-
hocuspocusoutoff
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
-
hocuspocusoutoff
dunno why you guys get so defensive
-
methylene[m]
<hocuspocusoutoff> "i dont swap my fiat dollars..." <- Perhaps because your fiat dollars are already sufficiently private and Target accepts them?
-
methylene[m]
<hocuspocusoutoff> "the problem with these coins are..." <- Maybe you could elaborate on this...
-
hocuspocusoutoff
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...
-
methylene[m]
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?
-
hocuspocusoutoff
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
-
hocuspocusoutoff
* the expertise and desire necessary to
-
hocuspocusoutoff
if this channel is for monero core dev only, rather than dev work related to monero, thats fine you can just say that
-
hocuspocusoutoff
no need to have a drawn out pointless convo