user109336: I would like to know how I can detect bitcoin transactions that are mixed by Mixers' services?
Is there any sample code or sample set or any applicable example in this regard?
Thank you

user-1: Whirlpool
Most of the transactions are 5 inputs, 5 outputs and use equal amounts (0.001, 0.01, 0.05 and 0.5). So we need to scan all blocks for such transactions and assume they belong to Samourai Whirlpool coinjoin implementation.
One project already exists which can make it easier to visualize and undertstand this: https://github.com/zeroleak/whirlpool-live

Example tx: 5553386e94b07112fb7b6789cae2f89f380ca20a28935812c51f0f3387bd5243
Wasabi
API can be used to check coinjoin transactions that are not confirmed yet and in mempool using https://wasabiwallet.io/api/v4/btc/ChaumianCoinJoin/unconfirmed-coinjoins
Example tx: 16a7c04139883d33997ed475918afcc4f54355478cb1737076cbb8b97c208316
Joinmarket
snicker-finder.py can be used to find Joinmarket coinjoin transactions in blocks.
Example tx: 422e0aec25e667eebb1c453b446b65726440623c69b2ab381681ede2afd7c514

A project that helps in scanning coinjoin transactions for different coinjoin implementations:
Dumplings:
  && mostFrequentEqualOutputCount >= 10 // At least 10 equal outputs.
  && inputCount >= mostFrequentEqualOutputCount // More inptu than outputs.
  && mostFrequentEqualOutputValue.Almost(Constants.ApproximateWasabiBaseDenomination, Constants.WasabiBaseDenominationPrecision) // The most frequent equal outputs must be almost the base denomination.
  && uniqueOutputCount >= 2; // It's very likely there's at least one change and at least one coord output those are distinct.

  && inputCount == 5 // Always have 5 inputs.
  && outputCount == 5 // Always have 5 outputs.
  && outputValues.Distinct().Count() == 1 // Outputs are always equal.
  && Constants.SamouraiPools.Any(x => x == poolSize) // Just to be sure match Samourai's pool sizes.


How to find transactions for custodial mixers?

Find bitcoin addresses using search engines, social media, block explorers (OXT) etc.
Use custodial mixers
Read forum threads, blogs, newsletters etc. to know more about mixing services used
Check transactions related to all these addresses

Example: Bitcoin Fog

109336: <p>I would like to know how I can detect bitcoin transactions that are mixed by Mixers' services?
Is there any sample code or sample set or any applicable example in this regard?</p>
<p>Thank you</p>
 -1: <h3>Whirlpool</h3>
<p>Most of the transactions are 5 inputs, 5 outputs and use equal amounts (0.001, 0.01, 0.05 and 0.5). So we need to scan all blocks for such transactions and assume they belong to Samourai Whirlpool coinjoin implementation.</p>
<p>One project already exists which can make it easier to visualize and undertstand this: <a href="https://github.com/zeroleak/whirlpool-live" rel="nofollow noreferrer">https://github.com/zeroleak/whirlpool-live</a></p>
<p><a href="https://i.stack.imgur.com/D72do.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/D72do.png" alt="whirlpool-live" /></a></p>
<p>Example tx: <code>5553386e94b07112fb7b6789cae2f89f380ca20a28935812c51f0f3387bd5243</code></p>
<h3>Wasabi</h3>
<p>API can be used to check coinjoin transactions that are not confirmed yet and in mempool using <a href="https://wasabiwallet.io/api/v4/btc/ChaumianCoinJoin/unconfirmed-coinjoins" rel="nofollow noreferrer">https://wasabiwallet.io/api/v4/btc/ChaumianCoinJoin/unconfirmed-coinjoins</a></p>
<p>Example tx: <code>16a7c04139883d33997ed475918afcc4f54355478cb1737076cbb8b97c208316</code></p>
<h3>Joinmarket</h3>
<p><a href="https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/scripts/snicker/snicker-finder.py" rel="nofollow noreferrer"><code>snicker-finder.py</code></a> can be used to find Joinmarket coinjoin transactions in blocks.</p>
<p>Example tx: <code>422e0aec25e667eebb1c453b446b65726440623c69b2ab381681ede2afd7c514</code></p>
<hr />
<p>A project that helps in scanning coinjoin transactions for different coinjoin implementations:</p>
<p><a href="https://github.com/nopara73/Dumplings/blob/master/Dumplings/Scanning/Scanner.cs" rel="nofollow noreferrer"><strong>Dumplings</strong></a>:</p>
<pre><code>  &amp;&amp; mostFrequentEqualOutputCount &gt;= 10 // At least 10 equal outputs.
  &amp;&amp; inputCount &gt;= mostFrequentEqualOutputCount // More inptu than outputs.
  &amp;&amp; mostFrequentEqualOutputValue.Almost(Constants.ApproximateWasabiBaseDenomination, Constants.WasabiBaseDenominationPrecision) // The most frequent equal outputs must be almost the base denomination.
  &amp;&amp; uniqueOutputCount &gt;= 2; // It's very likely there's at least one change and at least one coord output those are distinct.
</code></pre>
<pre><code>  &amp;&amp; inputCount == 5 // Always have 5 inputs.
  &amp;&amp; outputCount == 5 // Always have 5 outputs.
  &amp;&amp; outputValues.Distinct().Count() == 1 // Outputs are always equal.
  &amp;&amp; Constants.SamouraiPools.Any(x =&gt; x == poolSize) // Just to be sure match Samourai's pool sizes.
</code></pre>
<hr />
<h3>How to find transactions for custodial mixers?</h3>
<ol>
<li>Find bitcoin addresses using search engines, social media, block explorers (OXT) etc.</li>
<li>Use custodial mixers</li>
<li>Read forum threads, blogs, newsletters etc. to know more about mixing services used</li>
<li>Check transactions related to all these addresses</li>
</ol>
<p>Example: Bitcoin Fog</p>
