I found the only limiting factor is the maximum standard transaction size which is 100k bytes.
The most common transactions we are concerned with are 1 input, 2 outputs and the second most common are be 2 inputs 2 outputs transactions and the sizes of these transactions are about 220 byte and 360 byte.
therefore the maximum achievable anonimity set would go from 270 to 450 (100k/360=270, 100k/220=450).

  1. Am I correct so far?
  2. Is there any more limiting factors?
  3. Does SegWit elevate the size of the signature out of the calculation of maximum standard transaction size, therefore resulting around 30% more anonimity sets? (Signatures are 71 bytes on average.) So in this case 351 to 468.
  • 1
    For future reference, meta is only for questions about Bitcoin StackExchange itself.
    – Nick ODell
    Jul 25, 2017 at 2:16
  • My bad. This explains why I couldn't add proper tags.
    – nopara73
    Jul 25, 2017 at 3:17

2 Answers 2


Regardless of the maximum size of a single transaction, a CJ anonymity set can be made arbitrarily large (bounded, of course, by participants) by building a multi-stage switching network out of joins.

This was described in the original coinjoin post:

In particular, if you can build transactions with m participants per transaction you can create a sequence of m*3 transactions which form a three-stage switching network that permits any of m^2 final outputs to have come from any of m^2 original inputs (e.g. using three stages of 32 transactions with 32 inputs each 1024 users can be joined with a total of 96 transactions). This allows the anonymity set to be any size, limited only by participation.

There is no atomiticy required between these transactions-- other than if some users drop out the anonymity set will be less than expected.


You assumed inputs and outputs were the same size, which they're not. A typical input is 148 bytes, an output is 34. Hence, the maximum anonymity set is 549 inputs to 549 outputs.

I didn't do the maths for SW type outputs, but they'd allow a larger anonymity set, assuming other limits like sig ops (signature operations) and hashing operations are respected.

  • > You assumed inputs and outputs were the same size I did not assume, they just don't matter. I simply went with a 1in2out 220byte and 2in2out 360byte tx estimation. Your estmation is 1in1out. Which will likely never happen in a CJ transaction, because CJ transactions must have a common output denomination, therefore a change output is inevitable in almost every case.
    – nopara73
    Jul 26, 2017 at 22:34
  • But using small transactions as a basis is not correct either, since there's a fixed 10 bytes overhead per transaction, no matter the number of participants.
    – alcio
    Jul 27, 2017 at 8:43
  • Indeed, that'd result 5% (in case of 220 bytes tx) and 2.5% (in case of 360 bytes tx) anonimity set increase.
    – nopara73
    Jul 28, 2017 at 4:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.