-
Notifications
You must be signed in to change notification settings - Fork 3
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
Implement the withdrawDeposit function in the Mixer contract #2
Comments
[WIP] Further testing on the |
Ping me when you have described this a little more ;-) |
Here is a bit more information about it @barryWhiteHat :)
The idea is to avoid to withdraw, and then deposit in case where Bob knows the secret of a an "unspent commitment in the tree" (for which the nullifier has not been revealed) |
The longer the value stays within the contract the more secure it is IMO, think of it as a single step WithdrawThenDeposit, so internal transfers can be made without revealing the identity of either party? Some background notes from me on another project: clearmatics/mobius#15 |
If we have:
If Bob; wants to pay Charlie 1ether, then he doesn't have to proceed to a desposit, he can just use the fact that he possess the information required to generate a proof that he "controls" a commitment in the three binded to an unspent nullifier. The idea is just to avoid modifying the public balances too often (if we can get rid of these -1ether on sender balance, +1ether on contract's balance during deposit, and -1 contract balance, +1 recipient balance, I think it'd be better, as we'd remove one source of leakage of information)
Hum... the sender needs to call the contract from a founded address so, his identity is still going to be leaked (we'll know that Bob did a payment to someone because his address called the "forward" function). Moreover, looking at the ways the nullifiers are generated for now ( I guess the solution to this problem would be to generate commitments and nullifiers like they do in ZeroCash: The creation of the commitment takes the recipient's public key as argument so that sender can create a new coin for the recipient (by "binding" it to its public key), but, the nullifier is only computable by the recipient, by using a PRF ( |
There are 3 problems I'm thinking of:
Yup, the That solves problem 1.
This could be any key that Bob controls, not just his permanent / long-term address, as long as he can supply a signature from that address that verifies to the same address via e.g. instead of supplying the nullifier ( That kinda solves problem 3 and you end up with a coin that only the owner of that one-time-key can spend. |
But what if you wanted to use denominations that aren't 1 ether? e.g. you can deposit any amount, transfer any amount to anybody, and withdraw any amount? That would require coin splitting, and coins of arbitrary value, where the values aren't known when being transferrer around - only that the sum of |
I think if we want to provide private transactions of arbitrary size we need to move off chain. Otherwise it will be too expensive for the majority of people to use. Since we can use snarks to do confirm multiple transfers in a single transaction. It seems like a really nice way to encourage widespread adoption of private transactions. That is my current research goal. I think that miximus is good to provide on chain anonymous coins, id and signals. But in order to get any kind of adoption and there for reasonable anonymity set we need to move off chain. |
Also sorry for my delayed response. I have just been super busy. |
No description provided.
The text was updated successfully, but these errors were encountered: