How To Understand CoinJoin And Multi-Signature - A Concrete Example

in deeponion •  2 years ago  (edited)

I wanted to go in-depth on one part of the DeepSend feature which is planned for release in Q2 for DeepOnion. This feature will ensure untraceability in your transactions as a Sender on the DeepOnion BlockChain. What I am talking about is the CoinJoin with Multi-signature verification feature.

There are more parts than this in DeepSend; Zero-Knowledge Proofs and Ring-Signatures but that will be left to future articles.

CoinJoin with Multi-signature verification


This is quite an advanced concept and can be hard to grasp (I know I had a tough time) so as I did with Stealth Addresses I will bring it down to a concrete example and lead us through.

Our Scenario

  • You want to send 100 $ONIONs to CARL (DeepOnion address) for services rendered
  • You don't want this to be directly linked to YOU (DeepOnion Address) on the BlockChain

The first thing you do is send out an anonymous request for doing an untraceable transaction. The system will then randomly choose two people (who have accepted the responsibilities) to help you perform this transaction.

In our example "JOHN" and "JULIA" are chosen to act as 'Mixer' and 'Guarantor'. It is the Mixer:s job to act as 'intermediary' and actually performs the transaction to "CARL". The Guarantor is just there to sort out any disagreements that might occur between "YOU" (Sender) and "JOHN" (Mixer).

In order to understand what happens next, you must first understand what a Multi-Signature Transaction and a Multi-Signature Address is.

2-of-3 Multi-Signature Transaction and Address


The Multi-Signature Address is not an address that exists on the public BlockChain, but it is something that is used to perform the Multi-Signature Transaction.

A 2-of-3 Multi-Signature Transaction (which is the case in our example) works on the principle that you have three different (and unique) keys with which you can sign a transaction. BUT in order to approve a transaction, you'll need to use 2 of the 3 keys to perform it. That is why it is called 2-of-3 Multi-Signature Transaction. For a nice video explaining this concept, check out: What is Multi-Sig Technology?

How does this apply in our case?! It is in fact very simple, we have three parties; Sender, Mixer and Guarantor so each get's a unique "KEY" with which to sign off on the transactions. 2-of-3 parties will have to agree on what has taken place for the transactions to go through. Otherwise, money will be refunded and the transaction will fail.

The 2-of-3 Multi-Signature Address works through all this as a 'temporary address' where the Multi-Signature Transactions are registered for the participants, before being transmitted to the BlockChain.

Who paid to whom?!


What is really cool about a Multi-Signature Transaction is that more than one transaction can take place at the same time and it won't be possible to see who paid what to whom (on the BlockChain). The only thing an outside observer can see is that Sender, Mixer and Guarantor took part in transactions but not who gave whom what.

Step-by-Step Walkthrough of the transaction


This is a Step-by-Step walkthrough of what happens in the transaction after the parties have agreed to participate. It is important to note that YOU will have to have twice the send amount (100 $ONIONs) + Service fee in order to perform the transaction.

  1. Based on the public keys of the three parties a "Multi-Sig Address" is created
  2. YOU send 2x100 $ONIONs + the Service fee (undetermined as of yet) to "Multi-Sig Address" (Double Send amount has to be sent, one for escrow and one for payment)​
  3. JOHN and JULIA deposits the intended send amount (100 $ONIONs) into "Multi-Sig Address"
  4. JULIA creates a "Multi-Sig Transaction" which will repay the 100 $ONION 'escrow' each to herself, YOU and JOHN. Split the Service fee between herself and JOHN and also give the send amount (100 $ONIONs) to JOHN who is Mixer.
  5. The "Multi-Sig Transaction" is verified by YOU and JOHN that it contains the correct information
  6. JOHN sends the send amount of 100 $ONIONs to CARL. JOHN then shares the TX-ID of the transaction with YOU and JULIA for verification
  7. YOU check the TX-ID sent from JOHN to see that he has sent to the right address and with the right amount. If agreed then you sign the "Multi-Sig transaction" and ask JULIA to do the same.
  8. After YOU and JULIA have signed the "Multi-Sig transaction" the transactions take place and add to the BlockChain.

There can be a situation where YOU don't agree with the TX-ID information sent by JOHN. In those cases, then JULIA will act as a mediator and either confirm or cancel the "Multi-Sig Transaction". In case of a cancellation, YOU get a full refund (Escrow + Send amount + Service fee) and escrows are paid back to JOHN and JULIA.

After a successful transaction, what will be visible on the BlockChain afterwards is:

  • YOU sent +200 $ONIONs (200 + Service Fee) and received 100 $ONIONs in a multi-signature transaction, where JOHN sent 100 $ONIONs and received 200 $ONIONs + half of the Service fee, JULIA sent 100 $ONIONs and received 100 $ONIONs + half of the Service fee
  • JOHN sent 100 $ONIONs to CARL

Still worried?!


Now, this might seem like it could be traceable to you from an outside observer. BUT consider that:

  1. The 100 $ONIONs can be divided into 'standard' amounts of $1, 2, 4 ONIONs each
  2. This is not the only transactions on the BlockChain. YOU, JULIA, JOHN and CARL might at the same time be acting as Mixer/Guarantor in other transactions at the same time to other people.
If you combine this with "Stealth Addresses" (in regards to where escrow should be paid back to and the receiving address of CARL) then I see no way of being able to trace the transaction made between CARL and YOU.

I hope this gave you a bit better understanding of what CoinJoin and Multi-Signature Transactions are and how they are planned to be used by DeepOnion.

DeepOnion:s DeepSend will guarantee the untraceability and anonymity of a Sender when performing a transaction. DeepProtocol (Stealth Addresses) will ensure the anonymity of any Receiver of such a transaction. These two features combined will become the fundamentals on which the DeepOnion platform ensures the security and anonymity of its users.

To find out more about DeepOnion please check out these links:
DeepOnion Homepage
DeepOnion Whitepaper
DeepOnion Community Forum
DeepOnion BCT ANN Thread
Join DeepOnion AirDrop

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Nice Article! Cant wait for this feature!

You and me both 😊

Nice article man!

Thank you dear sir :)

You are very welcome!

This is great, but I have to say, I find it too hard to understand it fully. I want to be able to explain it to others, and since I can't, it means I didn't grasp the concept completely. I will go ahead and watch videos, maybe after that, things will be clearer

I hope it at least helped you get an initial understanding of the concept to help you in your search. Let me know if you find any other good material on the subject!

Wow

Interesting
I will follow you to see your future posts!

Glad to hear!