Running Samourai Wallet on your mobile phone and running a Ronin Dojo at home is a powerful, privacy preserving combination that can help users interact with Bitcoin in an anonymous way.
I wanted to write an article on using Samourai Wallet and using the Whirlpool feature because of the privacy focused nature of it. But as I started exploring I kept uncovering more and more features and tools. It truly is an incredible accomplishment that these developer teams have achieved. This article wound up extending far beyond my original intensions but I thought that it was important to piece it all together. This article covers the following features of the Samourai Wallet + Ronin Dojo stack:
Samourai Mobile Wallet
Ronin CLI
Dojo full node
Ronin UI
Whirlpool GUI
Electrum
Explorer
OXT
KYCP
@SamouraiWallet and @RoninDojoUI are two different developer teams. Dojo is meant to be used as your own full node in support of your SW for better privacy & trust mitigation. Ronin is the User Interface (UI) used to interact with your dojo.
@SamouraiWallet is a Bitcoin only, mobile wallet for Android. Like any other HD wallet, your xpub is used to display balances & generate addresses. As with any HD wallet, if you’re not running your own node then you’re introducing trust by using someone else’s.
However, unlike any other HD wallet, @SamouraiWallet has a suite of tools available to users like Ricochet, PayNym, Stonewall, & Whirlpool. These tools are significant advantages for users interested in enhancing privacy & on-chain anonymity. Info-graphics by @BitcoinQ_A
Before getting into the wallet’s features & tools, the Dojo full node needs to be set up on a single board computer (SBC). I chose a RasPi4, but consider using the RockPro64 for the smoothest set up. PC also required for the RoninUI.
The Ronin Dojo Wiki offers many helpful resources & detailed instructions. If you get stuck in the set up process, jump into the Telegram group. Community members are supportive and go out of their way to help new users get up & running.
I’m only giving a high level overview of the set up process because detailed instructions are on the RoninWiki page starting with step 1. First you'll want to assemble and connect your Single Board Computer hardware, then download & verify the Ronin image, & flash a MicroSD card with that image file. Then power up the SBC hardware.
I used Putty to establish the SSH connection with my RaspberryPi Single Board Computer, then configured the keyboard layout, username, ect. You'll just follow the prompts, it's pretty easy. Run updates & then clone Ronin repository as explained on the RoninWiki in Step 2. This will get Ronin CLI up & running. From here, the Dojo dependencies can be installed, which is the back-end server that interacts with Bitcoin.
Optionally, a user can install Indexer, a balance querying tool; and Electrum Rust Server, a hardware wallet interfacing tool. These options will only install after Dojo has completed the Initial Block Download (IBD) & they’ll take an additional 8 hours.
Depending on a number of factors, IBD will take at least 2 days, possibly a week. In the mean-time it is safe to get started on the User Interface setup. @RoninDojoUI is designed to make interacting with the Dojo full node more user friendly. Setting up the UI is explained on the RoninWiki in step 3.
Two computers are required for this set up, a RaspberryPi or other Single Board computer and a PC. Where the Single Board Computer is running the Ronin CLI & the Dojo full node, your PC will be running the RoninUI & Whirlpool GUI. With the @RonindojoUI a user can connect their @SamouraiWallet via QR code, monitor logs, & more. With the Whirlpool GUI, mixes can be managed.
On the PC, with Tor browser installed, download & verify RoninUI. Go to your CLI for RoninDojo and copy/paste the Tor credentials from Ronin CLI. Create password in the RoninUI. Now SamouraiWallet can be paired from your mobile phone to RoninUI. Download on Android, select main-net & Tor, select Connect to existing Dojo, scan QR from @RoninDojoUI
@SamouraiWallet sets up like most other wallets. You’ll need to create a PIN code for accessing the app & secure a BIP39 passphrase/12-word mnemonic. No personal info is collected. You can restore external wallets. You also get a BIP47 PayNym!
Stop & think. What you have so far is a mobile bitcoin wallet with a built-in ZeroLink CoinJoin implementation. An array of post-mix spending tools at your disposal. Using a Tor connection to communicate with your own full node. All managed by the UI on your PC.
Privacy
Anonymity
Trustless
User friendly
On the same PC as the @RoninDojoUI User Interface, download the Whirlpool GUI. Ensure the Tor browser is open first. In the RoninUI select Start Whirlpool. In the WhirlpoolGUI select Remote CLI. Then copy & paste the Whirlpool .onion URL from RoninUI, leave the API key blank on initial connection. Then press connect. These steps are explained in more detail on the RoninWiki step 4.
A prompt from the Whirlpool GUI will ask you for the pairing payload from your Samourai Wallet. On @SamouraiWallet go to Menu>Settings>Transactions>Pair to Whirlpool GUI. This is under the experimental section. Use the PC webcam to scan the QR code. Smash that Initialize GUI button, enter your BIP39 passphrase and Whirlpool will connect to your wallet and start operating. Now your UTXOs can continue mixing 24/7 even while you out on the go.
Whirlpool is a Zerolink CoinJoin implementation. Each mix has 5 inputs & 5 outputs, no two UTXOs ever share the same mix twice, two fresh participants minimum, up to three free-riders. Zero address reuse and zero deterministic links in every mix. Additionally, each mix has1,496 interpretations as to which I/O are connected. Info-graphic by @P_Hold.
The concept is that users gain anonymity by blending into a crowd of same sized UTXOs. There are three pools users can choose to join: 0.5 BTC, 0.05 BTC, & 0.01 BTC. For example, if you want to mix 1 BTC in the 0.01 pool, you’ll get 99 equal sized UTXOs, since a little bit of that 1 BTC need to be used for the miners fees & Whirlpool fee.
Once funds are deposited & the wallet is synchronized with Whirlpool, a user can specify desired mix count up to infinity. Remixes are free, so you only have to pay the whirlpool fee once and then you can continue joining new mixes as a free-rider while the new participants to a mix cover the miners fees. Every remix adds more entropy to a UTXO's origin, making it more difficult to trace and breaks deterministic links.
Leftover change is first separated from Whirlpool input UTXOs before premix registration. There is a separate xpub for this change called Bad Bank. Users are prompted to flag this change, but if one wanted to spend those funds later at the risk of privacy then they can. It is crucial that leftover change that is not being mixed is not returned in the same transaction as the CoinJoin.
The newly created UTXOs are all the same size and separated from the doxxic change in what’s called Transaction Zero (Tx0). The like-sized UTXOs are then registered in a premix xpub as available inputs to the corresponding Whirlpool.
New participants to a mix pay the miners fee. After initial mix, free riders can continue mixing for free, infinitely. Select which UTXOs to spend from the postmix list at anytime.
From the Samourai Wallet home screen, select “+” sign > Whirlpool > Whirlpool icon > Mix UTXOs > make selection > choose priority & pool > review > Yes to flag doxic change > and begin.
Whirlpool statistics can be monitored anytime by sending @SW_whirlpool_bot a DM on Telegram using the pictured commands. Be sure to check out this guide by @Crazyk_031
@BitcoinQ_A wrote a detailed whirlpool article here: https://www.bitcoinqna.com/post/whirlpool-faq
Stop & Think. Remixes are free. Every mix has 1,496 interpretations. Every mix achieves 10.546 bits of entropy. All happening on a desktop client infinitely mixing UTXOs. Connected to a mobile wallet. All over Tor. Built in postmix tools on the mobile wallet.
Once a user's UTXOs have been mixed there is a variety of postmix spending tools available. These tools help users maintain the privacy achieved during mixing by employing a variety of techniques such as hops, stealth addresses, & mini CoinJoins.
Ricochet was designed to add extra hops between spend & final destination. For example, if a user wanted to cash out at an exchange & is worried about the funds being flagged, this tool adds distance from a CoinJoin tx of concern. Mining fees for hops are paid up front.
Some info on exchanges impeding a user’s funds: https://6102bitcoin.com/coinjoin-flagging/
And here as well.
PayNym is a BIP47 implementation. This gives users a reusable public payment code without revealing any addresses or tx history. Using special encryption techniques, a combined secret key is generated between PayNym users.
A one-time fee is required to establish the on-chain connection between PayNyms. Once established, PayNyms can transact anonymously as much as they want and only the regular mining fees apply.
Stonewall is designed to use multiple inputs & outputs so that there is reasonable doubt as to UTXO ownership. Stonewallx2 transactions are made between two peers. They split the miner fee & both gain anonymity. Funds can be sent to a third party other than the collaborator.
To an outside observer the two transaction types, Stonewall & Stonewallx2, are indistinguishable. A Stonewall tx will have minimum 1.584 bits of entropy. A Stonewallx2 tx will have minimum 4.643 bits of entropy. These are akin to miniature CoinJoins.
Stonewall is the default postmix spending tool. They always have 4 outputs, 1 is the spend, 1 decoy & 2 change outputs are returned to the user's wallet. Outside observers cannot know if these tx's were made by an individual or collaborators. These can be sent to anyone.
Stowaway is used between two @SamouraiWallet users, details left on the blockchain make it difficult to determine which UTXO was change & which was payment. This transaction type can only be used with the person receiving payment. Users will swap a few QR codes to make the transaction.
Here is the Stowaway tx on KYCP. 4 inputs, 2 outputs. Inputs 0, 1, & 2 were decoys and confuse the interpretation. 0.00806013 sent, 0.00802 received. 0.00004013 in miner fees.
PayJoin transactions like Stonewallx2 & Stowaway will soon be available over the Tor/Soroban comms layer, removing the need to manually scan a few QR codes between participants.
Stop & think. Anonymity achieved during Whirlpool mixes. Toxic change separated. Postmix spend Stonewall by default with minimum three interpretations. Collaborate with peers to gain more plausible deniability. Make every spend a CoinJoin.
Electrum enables a user to interface with a hardware wallet like @COLDCARDWallet. Download & verify the application, as described on the RoninWiki in step 5. Once Indexer is finished synchronizing, Electrum can be pointed at the Dojo as it's server. I’ll do a separate article on Electrum.
Explorer provides a way to use your Dojo to feed data to a full fledged Bitcoin blockchain explorer. Copy the .onion URL & password from Dojo settings page, paste into Tor Browser, leave username blank, paste the password, bookmark page.
OXT & KYCP are are free to use. They provide users with bleeding edge blockchain analysis tools to explore, learn, & verify. No personal information is requested. Simply create a username & password.
There are many features & tools built into OXT, such as advanced graphs like these of a transaction where the mixed inputs were merged together. There was much activity in this tx, but it accomplishment little in terms of anonymity.
Below is what a Whirlpool tx looks like. No deterministic links. No address reuse. 1,496 different ways this tx can be interpreted.
Stop & think. Explore the blockchain without leaking any personal information. Backed by personal full node. Ability to verify various tx interpretations. Full coin control over high entropy UTXOs. Pocket sized mixer. All from a mobile wallet.
@SamouraiWallet can sweep private keys too. Great for @OPENDIME
users, which I explain in this thread: https://twitter.com/econoalchemist/status/1271287041737633792
Some notable features: Tor by default, Sentinel watch-only app, Multi-address support, Batch Spending, Scrambled PIN, & Smart Miner Fees. There is too much to list but if you start exploring you'll discover the potential this stack has.
Everything presented here has been crafted by developers dedicated to censorship resistance, privacy, and anonymity. People have immediate needs for these tools where ever oppressive authorities infringe on individual liberties. People are being arrested, KYC collection is becoming common place, privacy must be defensively guarded. This is not a drill.
Interested in learning more about the forces acting behind the guise of anti-money laundering in order to strip you of your rights? Check out this thread by @J9Roem and see for yourself why the work of @SamouraiWallet and @RoninDojoUI is important.
@stephanlivera has recorded several thought provoking podcasts with @SamouraiWallet:
And here: https://stephanlivera.com/episode/150/
…and here: https://stephanlivera.com/episode/209/
Here is an episode from @TFTC21 discussing Ronin Dojo: https://www.youtube.com/watch?v=MaC27vLnI7o
Here is an episode from @ocbtcn discussing Samourai Wallet & Ronin Dojo with the developers: https://www.youtube.com/watch?v=jqFspCuacrA
Thanks for reading! I hope you found this thought provoking and decide to start incorporating some of the tools described here into your Bitcoin activity to preserve your privacy and interact anonymously.
If you enjoyed this content, leave me a tip here: Donate.
This article is available on Twitter as a thread here.
Comments