nopara73 / ZeroLink

The Bitcoin Fungibility Framework
MIT License
348 stars 76 forks source link

Dynamic Mix Denomination #41

Open wintercooled opened 6 years ago

wintercooled commented 6 years ago

When a user wants to mix coins we need a way to show what possible output denominations are available for other users to join the mixing.

Either set this on the server side or allow users to propose them.

For example: If Alice has 0.21 BTC that she wants to mix she could either select a mix from the server (which may show '0.1 BTC output pool', '0.2 BTC output pool' etc) or she may propose a pool somehow (maybe from the post-mix wallet?) - by proposing a 0.21 BTC pool that other users could then see and join if the wanted to.

If for example the following were submitted/proposed:

0.21 BTC 0.22 BTC 0.30 BTC

The server could create a mix where all outputs were 0.21 BTC if there was not already sufficient liquidity to cover the 3 proposals. So the users that had proposed the above could all join the 0.21 BTC mix with the seconds and third users getting change of 0.01 BTC and 0.1 BTC respectively to their pre-mix wallet.

nopara73 commented 6 years ago

For now it's just a tumbler configuration. This not only not needed to be figured out in implementation time, it's the tumbler operator who must decide.

However I was long thinking introducing some kind of dynamic denomination, something similar you proposed here, but that needs some thoughtful considerations, because this would come with some GUI challenges. The GUI wouldn't be able to estimate fees, number of rounds and time of mixing upfront. Luckily, it's just a server configuration, easy to change later.

At the beginning however we should start with a common denomination per mix and stick with it as long as we reach stable hundredish anonymity set.

Anyway it was a braindump, we'll need to think of it further.