Paying third parties using a JoinMarket coinjoin doesn't add privacy because an observer can still calculate which inputs belong to the taker and their change.
To use JoinMarket privately, you pay your own wallet with a coinjoin sweep for any incoming UTXO or any change UTXO created from a payment. Then you wait as a maker in between your own transactions to get paid for contributing remixing liquidity.
With respect (and I absolutely could be wrong...) I don't think the first part of this is true.
The outputs look identical from a Joinmarket transaction. With an anon set of... 8, 9, 10 etc.
Then when a 'change' address is provided from a payment it is never-before-used.
Which change output was the result of which tx output? Who knows. All the tx outputs look the same and are for the same amounts... so any 'change' from the actual 'spending' output could be from any the original outputs.
My understanding is that while coinjoins/Joinmarket txs don't add perfect anonymity... they obscure the utxo set for a price. Obviously one coinjoin will not provide infinite privacy... but alternating roles as taker and maker with coinjoins improves the anon set significantly.
reply
Here's a JoinMarket coinjoin that demonstrates the scenario I'm describing: https://mempool.space/tx/1e513e339213b1c02e574d34b920014a96bccd2a4b857e63c05243bd34d6615b
In this case, we know bc1q...vrhtt is the taker - His change landed in bc1q...lrl23, paying 10,212 sats in total fees:
  • 3,200 sats in fees to the bigger maker bc1q...5pll3 whose change went to bc1q...jd0vd
  • 2,200 sats in fees to the smaller maker bc1q...95xww whose change went to bc1q...cjz9p
  • 4,812 sats in fees to miners
So if you are the recipient of one of the 1 BTC equal sized outputs, you would know exactly which input sent it to you and you would know exactly which change output is owned by the same sender to continue tracing, just like any regular non-coinjoin transaction.
reply
Thank you for your comment, it is very thoughtful.
On looking at that transaction my initial reaction is.... wow that's a pitiful coinjoin. There are 3 outputs that are the same meaning that the anonymity set is... 3? That's not good.
Joinmarket's default settings I believe has an anon set of somewhere between 8-10. And so imagine if there are 10 outputs of the same size, with a few other outputs of various sizes... it seems to me it would be difficult to determine which sats belong to whom.
Especially if there are other coinjoins or 'maker' transactions before or after with the same outputs.
reply
10 sats \ 1 reply \ @kruw 28 Sep
Exactly, I cherry picked that JoinMarket tx for the demonstration because it is very small. Here's a very large JoinMarket tx where it's more difficult to determine the set of inputs linked to the users who created the bc1q...f2yxq and bc1q...xvdwu change outputs: https://mempool.space/tx/63b28f5e17e03fef27795e1ea7fbf821e2d5f072098ffcef3d27b8b2d23ca719
reply
This is a really interesting tx
reply