PHP Developer / Systems Administrator / DevOps Engineer
Minneapolis, Minnesota, USA|


Created: Q2-Q3 2013
Language: PHP, SQL, CodeIgniter, Bootstrap.css
Software: Bitcoin, Tor

Bitwasher is a service for obscuring the destination of Bitcoins from the public ledger that is the Block Chain. This was one of the first generation Bitcoin mixing / tumbler services. It pre-dates the paper about Mixcoin (Jan 20, 2014), pre-dates the CoinShuffle protocol (Apr 12, 2014), and pre-dates the paper Sybil Resistant Mixing for Bitcoin (Aug 25, 2014).

How it works:
The mixing service has many options. You can send us your incoming coins on up to 10 different Bitcoin addresses. You can send the total amount of coins in random amounts at random times of the day, up to 7 days after placing the order. Then we mix up the coins with other coins, and send them back to you, on up to 10 of your Bitcoin addresses. We will generate up to 100 random size transactions for each of your receiving addresses, and send them back randomly over the next 7 days, or faster for a higher fee.

This was a fun distributed project to keep secure. The washing backend had multiple wallet nodes hidden behind Onion Services. A master "smoke screen" script would, at random intervals, send a random amount of coins from one random wallet node to another random wallet node. When a customer deposited their coins to one or more washing addresses, their coins were added to the fog and started tumbling around internally between multiple wallets over the Tor network. Then, each minute, a payout script processes the queue of pending transactions and sends the washed coins from a random node. Blockchain analysis tools were supposed to have a hard time tracing the destination of coins after they went in to the artificial entropy cloud, because of all the hops between wallets on anonymous IP addresses. It would obfuscate the trail of coins in the blockchain.


  • So much randomness, for so many different parts in the whole system.
  • Public webserver decoupled from the private washing backend to prevent breaches.
  • Geographically distributed anonymous washing nodes, never having all the coins in the same place at the same time.
  • Scalable to many nodes.
  • Database encryption to prevent associating input addresses with output addresses.
  • Limited data capture, customer orders based on Session ID, IP addresses never logged.
  • Rolling purge of order database, oldest data is always less than 14 days old.
  • Low risk for abuse or problems.
  • Fully automated, zero maintenance.
  • Marketing promo codes for a % discount on the processing fee


  • Confirm this mixing method was not pseudoscience.
  • Purge previously used private keys from the wallet on a 14 day schedule.


Home Page

Informational landing.


First step of placing a washing order. Select number of input and output addresses.

Step 2

Receiving addresses, and number of transactions over number of days.

Step 3

Final step, confirm everything is correct.

Order Confirmation

Order complete, assign the output addresses.

Order Lookup

Check on the status of an order. Automatically updates depending on order status.

News / Blog

Standard minimal blog page to get more content on the site for search engine purposes.


Frequently Asked Questions


About Bitwasher. More content for search engine purposes.