Что-то непонятно мне с этой совмещенной транзакцией от двух пользователей
берем пользователя A и B
NA - кол-во входов от пользователя A в этой транзакции на сумму SA
NB - кол- входов от пользователя B на сумму SB
имеем какое-то количество выходов
но эти выходы должны точно делиться на 2 группы - G1 и G2 , суммы которых соответственно равны SA и SB
простым перебором из всех выходов делаем разные пары групп G1i и G2i
из всех входов делаем пары N1i и N2i.
Если найдется , что N1i=G1i (соответственно N2i=G2i), то с большой вероятностью N1i - это NA, N2i это NB
а G1i и G2i это то, куда заплатили пользователи A и B
то есть мы легко разделили транзакцию на 2 исходных.
Сложности с определением могут возникнуть, если SA=SB, что маловероятно.
Или будет несколько вариантов раскладывания на 2 исходных.
Что в общем случае, тоже маловероятно, если кошелек специально не будет под это заточен.То есть надо специально подбирать входы за счет избыточности.
p/s/
еще надо учесть сумму комиссии, но принципиальных трудностей это не должно представлять.
Насколько мне известно, вся соль CoinJoin в том, что все входы одинаковой суммы. Вроде кратных 0.1 BTC каждый.