Bitcoin Forum
May 02, 2024, 10:53:28 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: In coinjoins, why are UTXOs combined instead of doing multiple transactions?  (Read 107 times)
markcolls (OP)
Member
**
Offline Offline

Activity: 60
Merit: 21


View Profile
November 30, 2020, 08:47:20 AM
Merited by mocacinno (1), ABCbits (1)
 #1

I am a novice and I'm trying to understand coinjoins, so bear with me.

Suppose in a coinjoin three people have 0.1 BTC each and they want to do a coinjoin. So what happens is each of their 0.1 UTXO is combined in a single transaction and new UTXOs are created and sent to their output address. But what if instead each of the UTXOs are sent to a random address of one the 3 output addresses, then it is done in 3 separate transactions. Wouldn't that reduce the network fees significantly, especially for coinjoins involving lots of people, while still providing the same amount of privacy?
1714690408
Hero Member
*
Offline Offline

Posts: 1714690408

View Profile Personal Message (Offline)

Ignore
1714690408
Reply with quote  #2

1714690408
Report to moderator
Even in the event that an attacker gains more than 50% of the network's computational power, only transactions sent by the attacker could be reversed or double-spent. The network would not be destroyed.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714690408
Hero Member
*
Offline Offline

Posts: 1714690408

View Profile Personal Message (Offline)

Ignore
1714690408
Reply with quote  #2

1714690408
Report to moderator
1714690408
Hero Member
*
Offline Offline

Posts: 1714690408

View Profile Personal Message (Offline)

Ignore
1714690408
Reply with quote  #2

1714690408
Report to moderator
1714690408
Hero Member
*
Offline Offline

Posts: 1714690408

View Profile Personal Message (Offline)

Ignore
1714690408
Reply with quote  #2

1714690408
Report to moderator
mocacinno
Legendary
*
Offline Offline

Activity: 3374
Merit: 4919


https://merel.mobi => buy facemasks with BTC/LTC


View Profile WWW
November 30, 2020, 08:52:39 AM
 #2

I'm having a hard time wrapping my head around your question to be honest...

If you'd split a coinjoin tx into 3 transactions, it would just be 3 people funding their own address with their own unspent outputs. It would be super-easy to trace, since it would be a transaction with one input and one or two outputs (depending on wether you use a change address or not).

Also, one transaction with 3 inputs and 6 outputs is usually smaller than the sum of the size of 3 transactions with 1 input and 2 outputs.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
20kevin20
Legendary
*
Offline Offline

Activity: 1134
Merit: 1597


View Profile
November 30, 2020, 08:57:44 AM
 #3

If there are 50 participants, there are at least 50 inputs and 50 outputs. If you had a single tx for each input & output, it'd be easy to know who received the coins from who.

Consider the following:
Code:
In1   -   Ou1
In2       Ou2
In3       Ou3
In4       Ou4
...
In50      Ou50
where In = input and Ou = output.

You don't know whether Input no. 1 sent Output no. 1 a certain number of coins or Input no. 26 was the one who did. They're all together so nobody knows who sent who and how much. There are people who join with more than 0.1BTC. If the coinjoin was done in separate txs for each, it'd be way easier to know who that person is because then, if you put together all the txs, this is how it'd look:

Code:
In1    -   Ou5
In6    -   Ou2
In42   -   Ou13
...
AB de Royse777
Legendary
*
Offline Offline

Activity: 2478
Merit: 3892


Hire Bitcointalk Camp. Manager @ r7promotions.com


View Profile WWW
November 30, 2020, 09:07:40 AM
 #4

@mocacinno
I have an additional question just had the thought. I can not figure out how all those coins sent by the individuals are joined together and broadcast using one TX?

I have noticed this in Wasabi. In the process of coinjoin my output (input of the join tx) was combined with other users' output too. Without having private key isn't it impossible to join two address in one TX? Does this mean when I am sending coins to mix in coinjoin, I am signing a way that my private key is exposed with other users private key?

Not sure if I was able to explain the whole.

..Stake.com..   ▄████████████████████████████████████▄
   ██ ▄▄▄▄▄▄▄▄▄▄            ▄▄▄▄▄▄▄▄▄▄ ██  ▄████▄
   ██ ▀▀▀▀▀▀▀▀▀▀ ██████████ ▀▀▀▀▀▀▀▀▀▀ ██  ██████
   ██ ██████████ ██      ██ ██████████ ██   ▀██▀
   ██ ██      ██ ██████  ██ ██      ██ ██    ██
   ██ ██████  ██ █████  ███ ██████  ██ ████▄ ██
   ██ █████  ███ ████  ████ █████  ███ ████████
   ██ ████  ████ ██████████ ████  ████ ████▀
   ██ ██████████ ▄▄▄▄▄▄▄▄▄▄ ██████████ ██
   ██            ▀▀▀▀▀▀▀▀▀▀            ██ 
   ▀█████████▀ ▄████████████▄ ▀█████████▀
  ▄▄▄▄▄▄▄▄▄▄▄▄███  ██  ██  ███▄▄▄▄▄▄▄▄▄▄▄▄
 ██████████████████████████████████████████
▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄
█  ▄▀▄             █▀▀█▀▄▄
█  █▀█             █  ▐  ▐▌
█       ▄██▄       █  ▌  █
█     ▄██████▄     █  ▌ ▐▌
█    ██████████    █ ▐  █
█   ▐██████████▌   █ ▐ ▐▌
█    ▀▀██████▀▀    █ ▌ █
█     ▄▄▄██▄▄▄     █ ▌▐▌
█                  █▐ █
█                  █▐▐▌
█                  █▐█
▀▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀█
▄▄█████████▄▄
▄██▀▀▀▀█████▀▀▀▀██▄
▄█▀       ▐█▌       ▀█▄
██         ▐█▌         ██
████▄     ▄█████▄     ▄████
████████▄███████████▄████████
███▀    █████████████    ▀███
██       ███████████       ██
▀█▄       █████████       ▄█▀
▀█▄    ▄██▀▀▀▀▀▀▀██▄  ▄▄▄█▀
▀███████         ███████▀
▀█████▄       ▄█████▀
▀▀▀███▄▄▄███▀▀▀
..PLAY NOW..
mocacinno
Legendary
*
Offline Offline

Activity: 3374
Merit: 4919


https://merel.mobi => buy facemasks with BTC/LTC


View Profile WWW
November 30, 2020, 09:36:32 AM
Merited by ABCbits (1), TryNinja (1)
 #5

Well, i'll try to give an ELI5 explanation... Do realise the reality is a tad bit more complex...

What happens when you enter a coinjoin with (for example) 10 other participants each using 1 unspent output as an input for the coinjoin tx, and 10 new unspent outputs getting created (one output to each participant's address):

First, an unsigned transaction gets generated. This transaction uses 10 unspent outputs as an input and generates 10 new unspent outputs as an output.
Secondly, said unsigned transaction gets signed by all 10 participants, one by one... In order to sign the unsigned tx, each participant signs the transaction on his/her local machine. Private keys never get broadcasted.
Thirthly: after all 10 participants signed the tx, it gets broadcasted

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
markcolls (OP)
Member
**
Offline Offline

Activity: 60
Merit: 21


View Profile
November 30, 2020, 10:24:04 AM
 #6

I'm having a hard time wrapping my head around your question to be honest...

If you'd split a coinjoin tx into 3 transactions, it would just be 3 people funding their own address with their own unspent outputs. It would be super-easy to trace, since it would be a transaction with one input and one or two outputs (depending on wether you use a change address or not).

Also, one transaction with 3 inputs and 6 outputs is usually smaller than the sum of the size of 3 transactions with 1 input and 2 outputs.

It wouldn't be 3 people funding their own address. The address is chosen at random from all the output addresses. In other words, the computer chooses at random which of the 3 output address the first person sends to, then the computer chooses at random from the two remaining address which address to send to, and the third person send to the last remaining address.


With respect to the size, 1 input to 1 output is 192 bytes. But 3 inputs to 3 outputs is 556 bytes. And as I am writing this I just realized 556/3 = 185, which is less than 192 bytes ,and therein lies the answer to my question.
mocacinno
Legendary
*
Offline Offline

Activity: 3374
Merit: 4919


https://merel.mobi => buy facemasks with BTC/LTC


View Profile WWW
November 30, 2020, 10:49:49 AM
Merited by ABCbits (1)
 #7

--snip--
Also, one transaction with 3 inputs and 6 outputs is usually smaller than the sum of the size of 3 transactions with 1 input and 2 outputs.

It wouldn't be 3 people funding their own address. The address is chosen at random from all the output addresses. In other words, the computer chooses at random which of the 3 output address the first person sends to, then the computer chooses at random from the two remaining address which address to send to, and the third person send to the last remaining address.

A coinjoin transaction is trustless... Which computer would pick which address? I mean, in order for this to work, each participant would have to send the address they want their "coinjoined" unspent output to fund to a central authority. This central authority would have to send a random address to be funded to each participant.
What if i send my "to-be-funded" address to the central authority. I get a "to-be-funded" address from somebody else in return, but in reality it's an address that belongs to the central authority. I fund said address, but the central authority never funds the address i created: I just got robbed by the central authority....


With respect to the size, 1 input to 1 output is 192 bytes. But 3 inputs to 3 outputs is 556 bytes. And as I am writing this I just realized 556/3 = 185, which is less than 192 bytes ,and therein lies the answer to my question.

I'm glad you figured it out Smiley That's what i meanth when i said "the sum of the size of 3 transactions..." in my previous post

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!