Chris Belcher – What’s The Problem With Bitcoin Surveillance? – Stephan Livera
JoinMarket NG logo and SimpleX chat ready! image
wagoodman/dive: A tool for exploring each layer in a docker image ![](https://m.stacker.news/124381)
JoinMarket NG Announcing today a full rewrite of all JoinMarket components in modern Python. Focusing on performance, maintainability, and extensibility. While maintaining compatibility with the existing JoinMarket network. Why JoinMarket? Has no central coordinator: most censorship resistant and peer to peer. Why a rewrite? The reference implementation has served the community well for years, and we're deeply grateful for all that the contributors have done. However, the project is no longer actively developed (181 open issues and 41 open pull requests) and had architectural limitations such as relying on Bitcoin Core's BerkeleyDB wallets (deprecated since v26.0.). New features: - Support for light clients using Neutrino - Rate limiting to prevent logs flooding - Extensive protocol and implementation documentation - Realistic E2E tests including reference implementation makers and takers Future plans: - Nostr relay integration - Lightning Network integration (CoinJoinXT) to hide roles and eliminate fee traces - A lot more ideas Help wanted: - Funding: Applied to HRF Bitcoin Dev Fund and soon to OpenSats. Other grant ideas or direct donations welcome. - Security: Need sponsorship or a volunteer for external security audit. - Contributors: Peer review, testing, documentation. Entrypoint for migrating makers: The reference JoinMarket served us well for a decade. Let's make sure the protocol thrives for the next one.
Analyze JoinMarket Bitcoin CoinJoin transactions using ILP. # JoinMarket Analyzer: Understanding CoinJoin Change Outputs I've released a tool called **joinmarket-analyzer** to match inputs and change outputs in JoinMarket transactions, identifying who the taker was. **Goal:** The purpose is **not to spread FUD**, but to raise awareness. It'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. The tool uses Integer Linear Programming (ILP) to match inputs with their respective changes and determine which participant is the likely "Taker" (the one initiating the transaction and paying fees) and which are the "Makers" (liquidity providers earning fees). ## Example Usage You can run it easily with Docker: ```bash docker run --rm ghcr.io/m0wer/joinmarket_analyzer:master \ 0cb4870cf2dfa3877851088c673d163ae3c20ebcd6505c0be964d8fbcc856bbf \ --max-fee-rel 0.001 --max-solutions 1 ``` ## Results The tool outputs the probable structure of the transaction: ``` ... Taker: Participant 4 (pays 21,368 sats) 💰 Participant 1 (maker) Inputs: [0] Outputs: Equal=6.3M sats, Change=113M sats Fee receives: 458 sats ... 🎯 Participant 4 (taker) Inputs: [4] Outputs: Equal=6.3M sats, No change output Fee pays: 21,368 sats ... ``` [View this transaction on mempool.space]() ## Future Possibilities This tool lays the groundwork for more advanced privacy research: * **Entropy Evaluation:** Measure how "ambiguous" change outputs are. If multiple valid solutions exist, the Taker is harder to pinpoint. * **Algorithm Design:** Evaluate and improve taker algorithms to intentionally create ambiguous change structures. * **Market Stats:** Analyze historical CoinJoins to gather statistics on fee limits used by takers and earnings by makers. Check out the code and contribute: https://github.com/m0wer/joinmarket-analyzer