<oembed><type>rich</type><version>1.0</version><title>m0wer wrote</title><author_name>m0wer (npub1w3…t4c5c)</author_name><author_url>https://nostr.now/npub1w3vaxva0vcrx7pnvlpmede5smvafdl69xnu7ma82kaxl9us89zdsht4c5c</author_url><provider_name>njump</provider_name><provider_url>https://nostr.now</provider_url><html>Analyze JoinMarket Bitcoin CoinJoin transactions using ILP.&#xA;https://github.com/m0wer/joinmarket_analyzer&#xA;&#xA;# JoinMarket Analyzer: Understanding CoinJoin Change Outputs&#xA;&#xA;I&#39;ve released a tool called **joinmarket-analyzer** to match inputs and change outputs in JoinMarket transactions, identifying who the taker was.&#xA;&#xA;**Goal:** The purpose is **not to spread FUD**, but to raise awareness. It&#39;s crucial to understand that this analysis **only affects change outputs**. The equal-amount outputs—which provide the actual privacy in a CoinJoin—remain indistinguishable.&#xA;&#xA;The tool uses Integer Linear Programming (ILP) to match inputs with their respective changes and determine which participant is the likely &#34;Taker&#34; (the one initiating the transaction and paying fees) and which are the &#34;Makers&#34; (liquidity providers earning fees).&#xA;&#xA;## Example Usage&#xA;&#xA;You can run it easily with Docker:&#xA;&#xA;```bash&#xA;docker run --rm ghcr.io/m0wer/joinmarket_analyzer:master \&#xA;  0cb4870cf2dfa3877851088c673d163ae3c20ebcd6505c0be964d8fbcc856bbf \&#xA;  --max-fee-rel 0.001 --max-solutions 1&#xA;```&#xA;&#xA;## Results&#xA;&#xA;The tool outputs the probable structure of the transaction:&#xA;&#xA;```&#xA;...&#xA;Taker: Participant 4 (pays 21,368 sats)&#xA;  💰 Participant 1 (maker)&#xA;    Inputs: [0]&#xA;    Outputs: Equal=6.3M sats, Change=113M sats&#xA;    Fee receives: 458 sats&#xA;  ...&#xA;  🎯 Participant 4 (taker)&#xA;    Inputs: [4]&#xA;    Outputs: Equal=6.3M sats, No change output&#xA;    Fee pays: 21,368 sats&#xA;...&#xA;```&#xA;&#xA;[View this transaction on mempool.space](https://mempool.space/tx/0cb4870cf2dfa3877851088c673d163ae3c20ebcd6505c0be964d8fbcc856bbf)&#xA;&#xA;## Future Possibilities&#xA;&#xA;This tool lays the groundwork for more advanced privacy research:&#xA;*   **Entropy Evaluation:** Measure how &#34;ambiguous&#34; change outputs are. If multiple valid solutions exist, the Taker is harder to pinpoint.&#xA;*   **Algorithm Design:** Evaluate and improve taker algorithms to intentionally create ambiguous change structures.&#xA;*   **Market Stats:** Analyze historical CoinJoins to gather statistics on fee limits used by takers and earnings by makers.&#xA;&#xA;Check out the code and contribute: https://github.com/m0wer/joinmarket-analyzer&#xA;&#xA;https://stacker.news/items/1296366</html></oembed>