Chaumian CoinJoin implementation by the developers of Samourai Wallet
Whirlpool is a framework backed up by a collection of software tools that mathematically disassociates the ownership of inputs to outputs in a given bitcoin transaction. This is to increase the privacy of the users involved, protect against financial surveillance, and to increase the fungibility of the Bitcoin network as a whole.
Whirlpool is a fully modular CoinJoin implementation based on a heavily modified fork of the ZeroLink theory. You can review the theory or review the architecture in further detail.
Current Status - PUBLIC BETA
-
Fast
- Focusing on many smaller CoinJoin cycles instead of a single large cycle allows for a theoretical anonymity set that grows exponentially in minutes instead of hours.
-
Portable
- Modular architecture allows Whirlpool to be embedded anywhere. Our focus on creating a system that can handle the limitations of a mobile environment has created a robust protocol usable under most conditions.
-
Usable
- Focusing on the spending by enforcing best practices to prevent privacy damaging pitfalls automatically without the user needing to intervene. A simple UX that feels familiar to most users.
-
Strong
- Structurally built on a strong mathematical foundation. Each Whirlpool cycle:
- 100% maximum entropy (10.54 bits)
- 1496 possible interpretations
- Never any deterministic links between inputs and outputs
- Never cycle with yourself
- Never cycle with UTXOs seen in a previous cycle.
- Structurally built on a strong mathematical foundation. Each Whirlpool cycle:
An example of a Whirlpool CoinJoin transaction can be found on KYCP.org
Whirlpool requires the use of a blinded coordinator server to pass messages between clients. This server doesn't and crucially cannot know the contents of the messages it is passing. The following clients have been created and open sourced by the developers of Samourai Wallet and offer unrestricted access to the Samourai operated coordinator server.
NOTE - Whirlpool is currently in a public beta state. While we are confident in the architecture and the core functionality, it is essential to keep Whirlpool up to date throughout the development cycle. Bug reports and other issues can be relayed to support@samouraiwallet.com
- An electron/react GUI desktop client is available on Windows, OSX, and most flavors of Linux. You can find binaries for the most recent release
hosted on the
whirlpool-gui
repository.
- A REST API is made available to quickly bootstrap your own applications on top of Whirlpool.
- Java and Android libraries can be found within the
whirlpool-client
repository. - A command line client is also available. You can find more information within the
whirlpool-client-cli
repository.
Samourai has strived to create a toolkit that can easily be implemented and embedded at any level of your existing technology or product stack. We would love to discuss how you plan to use Whirlpool within your own products and services and how we can help. Email us at implementations@samourai.io
Whirlpool theory is based on a fork of the original ZeroLink framework which was originally co-written by nopara73 and TDevD, with thanks to Adam Gibson and Chris Belcher from JoinMarket, Ethan Heilman from TumbleBit, Dan Gershony from Breeze Wallet and Kristov Atlas from Open Bitcoin Privacy Project for their reviews, suggestions and feedback.
Significant changes have been made since the fork from ZeroLink. We thank TDevD and ZeroLeak of Samourai, and LaurentMT of OXT.me for their continued contributions.
If you appreciate our work and wish to support our continued efforts in providing free, unencumbered, open source code that enhances your sovereignty please consider a donation.
bc1qh287jqsh6mkpqmd8euumyfam00fkr78qa9kqk2
PM8TJVzLGqWR3dtxZYaTWn3xJUop3QP3itR4eYzX7XvV5uAfctEEuHhKNo3zCcqfAbneMhyfKkCthGv5werVbwLruhZyYNTxqbCrZkNNd2pPJA2e2iAh