https://github.com/joinmarket-ng/coinjoin-simulator
Compact simulation toolkit for analyzing CoinJoin privacy under probing and adversarial taker pressure.
https://github.com/joinmarket-ng/coinjoin-simulator
bitcoin coinjoin joinmarket privacy sybil
Last synced: 9 days ago
JSON representation
Compact simulation toolkit for analyzing CoinJoin privacy under probing and adversarial taker pressure.
- Host: GitHub
- URL: https://github.com/joinmarket-ng/coinjoin-simulator
- Owner: joinmarket-ng
- License: mit
- Created: 2026-04-12T08:39:08.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-26T16:22:23.000Z (17 days ago)
- Last Synced: 2026-05-26T18:17:23.101Z (17 days ago)
- Topics: bitcoin, coinjoin, joinmarket, privacy, sybil
- Language: Python
- Homepage: https://joinmarket-ng.github.io/coinjoin-simulator/
- Size: 9.63 MB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CoinJoin Simulator
A simulation engine for evaluating privacy attacks and anonymity metrics in CoinJoin protocols,
with a focus on JoinMarket-style maker/taker architectures.
## What it does
The simulator models realistic JoinMarket networks, including maker wallet structures, fidelity
bonds, and mixdepths sampled from live orderbook data. It lets you run controlled experiments
against different attack models (probing, Sybil, role identification, surveillance) and measure
their impact on taker anonymity sets.
## Published studies
Results from two studies run with this simulator are available on the
[project site](https://joinmarket-ng.github.io/coinjoin-simulator/):
- **Probing attack and countermeasures** - how a malicious participant builds a UTXO database
of makers by probing, and which protocol changes limit the leakage
- **JoinMarket equal-output anonymity in practice** - a fee-fingerprint clustering and
forward-spend attribution attack replayed against a mainnet JoinMarket corpus
## Getting started
Requires Python 3.11+.
```bash
pip install -e ".[dev]"
```
Run the test suite:
```bash
pytest tests/
```
Rebuild the published site from the pinned study datasets:
```bash
python -m coinjoin_simulator.publish_site
python build_docs.py
```
## License
MIT