New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[PoC] Exclude Coins from CoinJoining #9925
Conversation
IMO the concept of freezing UTXOs should be implemented in combination with the ability of freezing specific labels from coinjoining. If you think about it on a purely theoretical matter, freezing labels instead of individual UTXOs makes much more sense. Both concepts are enabling use cases but both are not perfect on their own, that's why I think there must be a combination of both. Only label freezing is not enough either because users might misuse labels, it's less granular and it's not possible to use it for wallet recovered by seed. I didn't look into the specific implementation of your PoC so won't review that, just imo we need to consider also freezing labels otherwise the feature will be incomplete and frustrating. |
Agreed! @Szpoti you should continue as is, and UI team an look into that. IMO this PR should only implement the backend support: wabisabi part, supporting enabling / disabling, The ui part we can handle. |
What you are saying makes sense if you concentrate on the feature itself. However, the feature is only available in the coinlist which is a developer function so this is an edge case of an edge case. Here is my thinking. There are questions here about the concept, for example how to display this and where to store the excluded coins (wallet file). Those are already controversial so let's first push ourself through those questions - until that do not expand the specification. BTW if the PoC is accepted it will be easy to do the same with labels by using the same pattern. |
So @turbolay's idea is ACK, just out of scope right now. The main questions: How to display this?This is mainly a UI question, but I would stand next to my ideas I said in the description, in addition of a tooltip maybe on the icons saying "Exclude this from being selected for Coinjoin" or similar. Where to store the excluded coins (wallet file)?I think the wallet file is one of the best place:
What do you guys think, where to move forward? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cACK.
@nopara74 the business logic is OK. How shall we proceed? Merge this and you will add the UI later, or you will add it here? |
@Szpoti please resolve conflicts, or remove the ui parts completly ready for final review and merge. |
Go for it @Szpoti ! |
Done 🙏 |
Testing result: Business logic function works as expected (coin excluded from CoinJoin process) ✅ positive test:
inverse test:
In this test case transaction immediately finished Music box text message appears: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tACK
@nopara74 passed this task to the VDG team to finish the UI part. |
TL;DR
Proof of Concept for #7487
With this PR, one can ❄️"freeze"/exclude🧊 his or her coins from being selected for a CoinJoin by the
CoinJoinManager
.You can achive it by double-clicking on a Coin🪙 in the CoinList🗒️(CTRL+C+D).
Description
As this PR is only but a PoC, there is still work to do, mainly on the UI side (*wink* @zkSNACKs/visual-design-group 😉 ).
Right now nothing indicates that a coin is excluded, you can check the Wallet file for the
"ExcludedCoinsFromCoinJoin" = [ ]
.But the main concept in the bussiness logic is this.
Outpoint
will be saved in theKeyManager
(including theWallet
file);Wallet
, we also set byOutpoint
, which Coins should still be excluded;TODOs and Questions
And the question:
If we add this feature, the proper place for it is the CoinList. Which all started as a developer feature, but as I heard, there were user complains about this, "why I need to come to GitHub to find out that this feature exists". Until now it's like they found an easter egg🥚. At this point, we need to reconsider making a dedicated button for the Coinlist in the Wallet.