Yet Another Mixing Protocol

Stealth Transfers

The usual approach of the above protocol is to deposit a box to the pool, perform many mixes and then withdraw from the pool.

This allows us to distinguish mix transactions from ordinary “transfer of value” transactions.
However, we can use “sigma Or” to hide transfer of value transactions within mix transactions.

This can be done by joining the zero-knowledge clause with the owner clause in the mix

 val validW = proveDHTuple(h, w, hOut1, wOut1) || 
  	     	  proveDHTuple(h, w, hOut2, wOut2) ||
              owner

This allows the owner to also create a mix-like transaction that is actually a transfer of value.

After this change, there is no particular need to withdraw from the pool, except in unusual use-cases.

We call this technique of hiding transfer of value within mix transactions as Stealth Transfers

5 Likes