-
joe-molested-hun
Hi all, I would like to make a bug report but HOLY SHIT it is difficult to sign up to GitHub anonymously
-
joe-molested-hun
You should really really really consider a self-hosted GitLab instance; using GitHub is super antithetical to the whole ethos of the project IMO
-
joe-molested-hun
Anyway, here is the bug:
-
joe-molested-hun
Using monero-gui 0.17.2.3, when I do the following procedure, I am stuck with the decoys selected no matter what I do
-
joe-molested-hun
1. Go to "Send" tab and fill in an address and select "infinity" amount
-
joe-molested-hun
2. Click "Send" button
-
joe-molested-hun
3. *Either* click "Back" *or* just let the confirmation screen time out
-
joe-molested-hun
When I do this, I see in the monero-gui console output the absolute offsets of all decoys (+ real output) chosen for the transaction
-
joe-molested-hun
The problem is that whenever I try to make any new transaction using these outputs, it always selects the same decoys. Since decoy selection is highly time-sensitive, this leaks information about which output is real, and stands out as following a very different statistical distribution than other contemporary transactions
-
joe-molested-hun
Is there a quick workaround I can use to e.g. discard the cache or whatever is storing these stale decoys for reuse?
-
selsta
"it always selects the same decoys" <-- how long did you wait?
-
selsta
matrix bridge being buggy again... joe-molested-hun: "it always selects the same decoys" <-- how long did you wait?
-
joe-molested-hun
I tried multiple times, restarting the wallet, restarting monerod, over about 10 hours
-
joe-molested-hun
Interestingly, if I try to send a smaller amount that consumes only one available output, the decoys for that output are the same stale decoys, even though the transaction is totally different (i.e. only spends that output instead of all outputs)
-
selsta
will check if I can reproduce tomorrow
-
joe-molested-hun
Great, thanks
-
joe-molested-hun
Can you point me to the relevant section of code where decoys are selected? I navigated to src/libwalletqt/Wallet.cpp but didn't find an xref for Wallet::creatrTransactionMultDest()
-
joe-molested-hun
createTransactionMultDest() *
-
selsta
wallet2.cpp should have that code
-
joe-molested-hun
`find src/ -type f | grep -i wallet2` shows nothing?
-
joe-molested-hun
Is this in another project?
-
selsta
monero repo
-
selsta
monero-gui/monero/src/wallet/wallet2.cpp
-
joe-molested-hun
Oh
-
joe-molested-hun
It's a submodule or something?
-
selsta
yes
-
joe-molested-hun
I guess I have to clone again with recurse-submodules or whatever
-
joe-molested-hun
Such a git anti-feature...
-
joe-molested-hun
Throughout `create_transactions_from()` in monero/src/wallet/wallet2.cpp:10520 a lot of references to `LOG_PRINT_L2()`
-
joe-molested-hun
How can I configure monero-gui to show these messages?
-
joe-molested-hun
Do I need to rebuild it with some flag?
-
joe-molested-hun
Nevermind, I'm a moron
-
louipc00D
same
-
joe-molested-hun
So the problem appears to be that `wallet2::get_outs()` in monero/src/wallet/wallet2.cpp:8376, we check the ringdb and "if we have a known ring, use it", apparently unconditionally.
-
joe-molested-hun
I guess the root cause is those rings being added to the ringdb before we actually spend them.
-
joe-molested-hun
Is there any somewhat easy way to remove these entries from the ringdb?
-
joe-molested-hun
s/spend them/spend the asociated outputs/
-
joe-molested-hun
Or maybe the root cause is marking the transfers' `m_key_image_known` before the transaction is actually broadcast
-
joe-molested-hun
How risky would it be to monkey patch monero/src/wallet/wallet2.cpp:8376 to `if (0)`, rebuild, and use that binary to spend these outputs with new decoys, then go back to using the "official" binary?
-
wfaressuissia1
"Is there any somewhat easy way to remove these entries from the ringdb?"
-
wfaressuissia1
"
monero-project/monero #5388/files", "unset_ring <txid> | ( <key_image> [<key_image>...] )" did you try this cmd with monero-wallet-cli ?
-
joe-molested-hun
I did not, thanks for the pointer
-
joe-molested-hun
That's exactly the kind of thing I was looking for
-
joe-molested-hun
Thanks a lot :)
-
joe-molested-hun
Unfortunately that doesn't seem to work. I open the wallet in monero-wallet-cli, `unset_ring` my key images, `exit`, start monero-wallet-gui, attempt a spend as before, and I still get (log level 2) "Found ring for key image" and the same decoys selected
-
joe-molested-hun
Oops, forgot to `save` before `exit`ing. But doing that doesn't change anything--the same decoys are still selected.
-
wfaressuissia1
-
joe-molested-hun
No, but I don't know where those logs are, and I surely don't have debug level logs enabled
-
wfaressuissia1
`monero-wallet-cli ... --log-file some.file --log-level '*:TRACE'`
-
joe-molested-hun
I can try again once I figure out how to enable debug level logs and where to find them (apparently they are not in ~/.bitmonero?)
-
joe-molested-hun
OK thanks
-
joe-molested-hun
No, I do not see that message!
-
joe-molested-hun
wtf m8
-
joe-molested-hun
The plot thickens
-
joe-molested-hun
I see "Read command: unset ring ..."
-
joe-molested-hun
and then "Read command: save"
-
joe-molested-hun
then some cruft and "Wallet data saved"
-
joe-molested-hun
i.e. it appears that issuing the `unset_ring` command does absolutely nothing at all
-
wfaressuissia1
-
joe-molested-hun
Hang on, I need to restart gui in log level 2
-
joe-molested-hun
Yes, they use the same path
-
wfaressuissia1
There is a way to retrieve cached ring members for key image. gui: advanced -> shared ringdb -> get ring -> ...; cli: print_ring key_image_hex
-
wfaressuissia1
Does gui show something and cli show nothing for the same key image ?
-
joe-molested-hun
Let me check
-
joe-molested-hun
Aha
-
joe-molested-hun
There is a difference
-
joe-molested-hun
GUI shows the ring as I keep seeing it
-
joe-molested-hun
CLI shows "Error: Key image either not spent, or spent with ring size 1"
-
joe-molested-hun
Which is correct, of course; it hasn't been spent
-
wfaressuissia1
did you open monero-wallet-cli with the same seed/key file/.. ?
-
joe-molested-hun
Yes of course lol
-
joe-molested-hun
This begs the question: If I try to do my spend from wallet-cli, will it try to use those same rings/decoys? My guess is no
-
joe-molested-hun
I will still have the opportunity to refuse to confirm the spend in wallet-cli, right? So I can attempt it to see which decoys it selects without being forced to spend it however it comes?
-
wfaressuissia1
In the worst case compile debug build, attach gdb and check wtf is going on in both gui and cli, there must be some difference.
-
wfaressuissia1
-
joe-molested-hun
> compile debug build
-
joe-molested-hun
welp, guess I get to learn how to build Monero
-
joe-molested-hun
maybe a project for tomorrow...
-
wfaressuissia1
joe-molested-hunter[m]: how many kdf rounds did you set in gui ?
-
joe-molested-hun
<wfaressuissia[m]> "joe-molested-hunter[m]: how many..." <- Not sure, where do I check?
-
wfaressuissia1
it's failed speculative question too since the same key file can't be opened with different kdf rounds, therefore both gui and cli have the same value.
-
jberman[m]
"So I can attempt it to see which decoys it selects without being forced to spend it however it comes?" -> set log level 1, construct the tx, then before confirming check the logs, grep for `key_offsets`
-
joe-molested-hun
Great, will try it tomorrow
-
joe-molested-hun
Thanks
-
BigmenPixel[m]
Monero has an optional ldns dependency, but does monero-gui really need it?
-
BigmenPixel[m]
That is, if it does not exist, then the functionality will not decrease because of this?
-
fluffypony
BigmenPixel[m]: yes - it's used by OpenAlias, auto-updates, etc.
-
nero-cultist[m]
Okay but monero should have
-
nero-cultist[m]
The among us impostor added into the source code
-
nero-cultist[m]
Because anonymous pow transactions are sus
-
Rucknium[m]
luigi1111w: It seems to me that my CCS proposal has attained loose consensus within the community to move to Funding Required. What do you think?
-
luigi1111w
did that include post recent updates?
-
Rucknium[m]
luigi1111w: Here's the most recent Reddit discussion of it:
-
Rucknium[m]
-
Rucknium[m]
#monero-community:libera.chat meeting that discussed it on Sunday:
-
Rucknium[m]
-
Rucknium[m]
And it seems wherever I pop up in Moneroland people want the proposal to move forward, e.g.
-
Rucknium[m]
-
luigi1111w
done
-
Rucknium[m]
My latest edits to the proposal are fairly minor. Incorporated isthmus 's suggestion that I spend some time searching the literature for possibly better solutions, stated that disclosure of the statistical vulnerability could be done once a solution is found, some wording changes.
-
luigi1111w
-
Rucknium[m]
Fantastic. Thank you for managing the process.
-
luigi1111w
glhf :)