user133407: How does dumplings work? Does every coinjoin added as wasabi needs to be a legit coinjoin transaction done by using zkSNACKs coordinator?

user133407: Dumplings scans blocks and tries to find transaction that match certain conditions. It is not necessary all coinjoin transactions added as wasabi in the stats are done by users or using zkSNACKs coordinator. There can be false positives or wash mixing involved in it.
For wasabi, all native segwit transactions that have more than 10 outputs, more inputs than outputs and most frequent equal outputs follow wasabi denominations will be added as wasabi volume in dumplings stats after sync.
This can be confirmed with a proof of concept on signet:

Create a signet wallet
Run bitcoind/bitcoin-qt with signet=1 config parameter, create 15 new native segwit addresses and send 0.001 sBTC to each address using signet faucet.

Setup dumplings
Clone dumplings from GitHub repository and install .NET Core SDK.
Open Dumplings/Dumplings/Constants.cs and make the following changes:
FirstJoinMarketBlock=1
FirstWasabiBlock=1
FirstSamouraiBlock=1
FirstWasabiNoCoordAddressBlock=1
ApproximateWasabiBaseDenomination = Money.Coins(0.001m)
WasabiBaseDenominationPrecision = Money.Coins(0.0002m);


Run dumplings
bitcoind -signet=1 -txindex=1 -server=1 -rpcport=8332 -rpcuser=user -rpcpassword=password -rpcworkqueue=128

dotnet run -- sync --rpcuser=user --rpcpassword=password


After scanning is finished you will see some transactions in scanner directory. There was no wasabi transaction for me although you will find 1 which was created in the end.


Create fake wasabi coinjoin
You should have 15 inputs in your signet wallet with 0.001 sBTC each. Create 10 new addresses, add as recipient in a new transaction with 0.001 sBTC each. Create 2 more new addresses, use one to add as recipient with 0.0002 sBTC and other as custom change address. All addresses should be native segwit.
Broadcast the transaction: c4f506516ef68c3b3daf71fda5383978b1dca0a85db436b9e731da3b0aef8f19

Check fake wasabi coinjoin in dumplings
dotnet run -- resync --rpcuser=user --rpcpassword=password


Check the transaction in explorers that support signet: https://mempool.space/signet/tx/c4f506516ef68c3b3daf71fda5383978b1dca0a85db436b9e731da3b0aef8f19



133407: <p>How does <a href="https://github.com/nopara73/Dumplings" rel="nofollow noreferrer">dumplings</a> work? Does every coinjoin added as wasabi needs to be a legit coinjoin transaction done by using zkSNACKs coordinator?</p>
 133407: <p>Dumplings scans blocks and tries to find transaction that match <a href="https://github.com/nopara73/Dumplings/blob/91d7c2d08c7264c100f90ef3edde35fdc96ba3fb/Dumplings/Scanning/Scanner.cs#L118" rel="nofollow noreferrer">certain conditions</a>. It is not necessary all coinjoin transactions added as wasabi in the stats are done by users or using zkSNACKs coordinator. There can be false positives or wash mixing involved in it.</p>
<p>For wasabi, all native segwit transactions that have more than 10 outputs, more inputs than outputs and most frequent equal outputs follow wasabi denominations will be added as wasabi volume in dumplings stats after sync.</p>
<p>This can be confirmed with a proof of concept on signet:</p>
<ol>
<li><p><strong>Create a signet wallet</strong></p>
<p>Run <code>bitcoind/bitcoin-qt</code> with <code>signet=1</code> config parameter, create 15 new native segwit addresses and send 0.001 sBTC to each address using <a href="https://signet.bc-2.jp/" rel="nofollow noreferrer">signet faucet</a>.</p>
</li>
<li><p><strong>Setup dumplings</strong></p>
<p>Clone dumplings from <a href="https://github.com/nopara73/Dumplings" rel="nofollow noreferrer">GitHub repository</a> and install .NET Core SDK.</p>
<p>Open <code>Dumplings/Dumplings/Constants.cs</code> and make the following changes:</p>
<pre><code>FirstJoinMarketBlock=1
FirstWasabiBlock=1
FirstSamouraiBlock=1
FirstWasabiNoCoordAddressBlock=1
ApproximateWasabiBaseDenomination = Money.Coins(0.001m)
WasabiBaseDenominationPrecision = Money.Coins(0.0002m);
</code></pre>
</li>
<li><p><strong>Run dumplings</strong></p>
<pre><code>bitcoind -signet=1 -txindex=1 -server=1 -rpcport=8332 -rpcuser=user -rpcpassword=password -rpcworkqueue=128

dotnet run -- sync --rpcuser=user --rpcpassword=password
</code></pre>
<p><a href="https://i.stack.imgur.com/rkLcV.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/rkLcV.png" alt="dumpling-scan1" /></a></p>
<p>After scanning is finished you will see some transactions in scanner directory. There was no wasabi transaction for me although you will find 1 which was created in the end.</p>
<p><a href="https://i.stack.imgur.com/BEXkb.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BEXkb.png" alt="dump-stats1" /></a></p>
</li>
<li><p><strong>Create fake wasabi coinjoin</strong></p>
<p>You should have 15 inputs in your signet wallet with 0.001 sBTC each. Create 10 new addresses, add as recipient in a new transaction with 0.001 sBTC each. Create 2 more new addresses, use one to add as recipient with 0.0002 sBTC and other as custom change address. All addresses should be native segwit.</p>
<p>Broadcast the transaction: <code>c4f506516ef68c3b3daf71fda5383978b1dca0a85db436b9e731da3b0aef8f19</code></p>
</li>
<li><p><strong>Check fake wasabi coinjoin in dumplings</strong></p>
<pre><code>dotnet run -- resync --rpcuser=user --rpcpassword=password
</code></pre>
<p><a href="https://i.stack.imgur.com/ENdw0.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ENdw0.png" alt="dump-stats2" /></a></p>
<p>Check the transaction in explorers that support signet: <a href="https://mempool.space/signet/tx/c4f506516ef68c3b3daf71fda5383978b1dca0a85db436b9e731da3b0aef8f19" rel="nofollow noreferrer">https://mempool.space/signet/tx/c4f506516ef68c3b3daf71fda5383978b1dca0a85db436b9e731da3b0aef8f19</a></p>
</li>
</ol>
