Skip to content
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

Groupsends #29

Open
rexmint opened this issue Oct 26, 2018 · 3 comments
Open

Groupsends #29

rexmint opened this issue Oct 26, 2018 · 3 comments
Labels

Comments

@rexmint
Copy link

rexmint commented Oct 26, 2018

Groupsends - hopefully someone can create a better cooler sounding name for this.

The idea behind GroupSends is to bring more privacy and fungibility to bitcoin by making it harder for blockchain analyst to accurately assign inputs and outputs to users. GroupSends will also lower the cost of transactions for users.

GroupSends is essentially users batching their transactions together using the same (or similar) setup as CoinJoin in WassabiWallet.

GroupSends can be setup to happen hourly, once per day and or once 100 inputs have been accumulated depending on demand.

Users would go into the GroupSends tab, select which UTXO(s) they which to use, the address(es) and amount(s) to send to and the wallet would create a change address for users. Once the target (hourly, 100, etc) for GroupSends was met then Wassabi Wallet will construct the transaction like it does for CoinJoins and transmit the transaction.

GroupSends would increase the anonymity of the outputs especially for the inputs that were previous;y CoinJoined.

@nopara73
Copy link
Contributor

At first glance what you describe is the first version of blockchain.info's SharedCoin, which is of course sumbsetsum deanonymizable. However... wasabi users have utxos with the same outputs, which breaks subset sum. So, if we apply groupsend only for these inputs, groupsend could be a huge addition.
However if Unequal Input Mixing is implemented, this will not be the case anymore.
Nevertheless, with groupsend and the newly identified benefits of fixed denomination mixing the question arises if Unequal Input Mixing would still be better or not.
One thing to think about if it'd be better to incorporate groupsend into the main mixing, thus it'd share liquidity.

@rexmint
Copy link
Author

rexmint commented Oct 26, 2018

Revising this into JoinSends

Users can only use UTXO(s) that are within a short range of the amount of CoinJoined mixed outputs. Currently this value is 0.05004 BTC. So, the UTXO range would be about 0.05003 to 0.05006 BTC. Once Wasabi Wallet is in Beta this value would go to 0.1 BTC. We will be assuming 0.1 BTC UTXOs to explain.

(?) Users can preferably CoinJoin to get access to JoinSends or create a UTXO within the range to get access to JoinSend.

The idea behind JoinSends is to bring more privacy and fungibility to bitcoin by making it even harder for blockchain analyst to accurately assign inputs and outputs to users by compounding the anonymity set created by CoinJoins. The anonymity set of each input of a JoinSend is essentially multiplied by the number of inputs thus making the anonymity set of outputs incredible high.

JoinSends are essentially users batching their CoinJoined transactions together using the same (or similar) setup as CoinJoin in Wasabi Wallet.

Users would go into the JoinSends tab which will display their list of available UTXO(s). Users will select which UTXO(s) to use, label the transaction for themselves, enter the address(es) and amount(s) to send to and the wallet would create a change address for users. Finally once the target (hourly, 100, etc) for JoinSends was met then Wassabi Wallet will construct the transaction like it does for CoinJoins and transmit the transaction.

JoinSends can be setup to happen hourly, once per day and or once 100 inputs have been accumulated depending on demand.

Here is an example of a JoinSend. 10 users select their 0.1 BTC UTXOs to send. (0 network/miner fees for simplification.)
Alice is sending 0.9 to somewhere.
Bob is sending 0.8.
Cara is sending 0.7.
Dick 0.6. Eric 0.5. Frank 0.4. G 0.25. H 0.25. I 0.1. J 0.3.
Once J joins and the target is met then Wassabi constructs the transaction.

(?) Maybe this isn’t needed. To further anonymize the participants the wallet figures the average or mean value of the ‘send to’ outputs. Those who have ‘send to’ values greater than the average like Alice, Bob, Cara, Dick and Eric will receive their change back - 0.1, 0.2, 0.3, 0.4 and 0.5 respectfully. The rest would get 2 change outputs each. The first would be an equal amount for each and the second would be their leftover change. The mixed changed UTXOs would be useable in future JoinSends.

This example transaction would have the 10 inputs and 26 outputs. 10 outputs to ‘send to’, 5 outputs to ‘send to(change)’, 5 outputs to ‘mixed change’, 5 outputs to ‘unmixed change’ and 1 output to ‘wallet fee’.

@nopara73
Copy link
Contributor

Combining this with UIM: https://gist.github.com/nothingmuch/544cdd47dd18ef8fe923b54e0d5ee141

@nopara73 nopara73 transferred this issue from WalletWasabi/WalletWasabi Dec 3, 2018
@nopara73 nopara73 added the ideas label Dec 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants