It is improper saying “cleaning machine” but for a simple understanding let’s use this wrong term. There’s no such thing as “dirty sats”, all are equal valid and nobody can stop you to use them. But this process of “cleaning” is more for users that are obsessed with privacy using BTC.
It is about how to lose trace of your sats obtained from KYC sources and you want to use them in a more private manner.
If you are buying/obtaining BTC and never have in mind to sell them back for goat shit fiat, and just use them as money, I don’t see any problem in using sometimes KYC sources.
Yes, KYC is a really bad habit for exchanges and should be avoided as much is possible, but not from the POV of “hey, the gov will know how much BTC I have and I do not want to pay taxes for it”. I have news for you: the govs have no idea about your BTC stash and they are interested only in those who are selling back their BTC for fiat.
Even if you buy from a full verified account with your identity, you can always say “ups, I lost them”. Also there’s another “approach”, if a gov come to you and ask about your BTC, you can always say “fuck off, it is not your damn business what am I doing with my own money”. But that is another story and we can talk about it in another guide about full individual sovereignty and how to deal with gov agents.
There are some users focused only in buying BTC and HODL, passing through CoinJoin or mixing apps. Bitcoin already evolved in something else, is time for you guys to start using your BTC as money and in the same time “cleaning” those sats. And Lightning Network (LN) is one of the easiest and simple way, that also contribute to a growing usage of Bitcoin by more merchants and users.
So, for the peace of mind of those afraid of gov tracking, in this mini guide, I will try to give you some hints about how to use LN in your “cleaning” process and what apps you can use. Maybe is not the perfect “cleaning machine” but definitely help in many ways.
Will not enter into deep analysis and explaining too much the process, but you will have enough information to start learning and create your own “procedure” if you like. I am giving you the tools, how you use them, is your own way. Test, learn, improve and make it better for your own peace of mind.
NOTE: I don’t give a shit if this mini-guide is read by a gov agent. FUCK OFF! You have NO JURISDICTION over me, as a living man and I am not afraid of any gov apparatus.
Talks about privacy on Lightning Network:
- Advanced LND Routing, Node Optimization – by Bitcoin Magazine
- Lightning Privacy 101 w/ Anthony Ronning – by Bitcoin Kindergarten
Applications you can use
(use many as you can, each one have its own features pro/contra)
- Umbrel node (or any other LN node suite software) – the center of your “operations”, managing LN channels, txs, moving funds. It has built in LNDHUB from Bluewallet Lightning and LNbits apps. LNDHUB wallets are very powerful tools in the aspect of “cleaning” because there’s NO UTXO involed in funding of these wallets. Here is a guide how to use LNDHUB wallets from your node and also here using LNbits LNDHUB from your Umbrel node.
- Electrum desktop wallet – easy/best for coin control, private/trampoline/swaps LN channels, this can be used as a cache step, between exchanges and your node
- Zeus mobile wallet – complete mobile app to use with multiple LN wallets, also as a node manager. It has built in Tor and MPP (multi path payment) and supports also LNDHUB wallets. Good tool when your are about to use multiple wallets.
- BlueWallet (BW) – powerful mobile app to use with your own node and also as a LNDHUB wallet app. Good tool when you are using multiple wallets.
- Phoenix mobile wallet – easy to swap funds onchain/LN, also connect to your own node to validate privately your txs. Tor support too.
- Eclair ACINQ mobile wallet – full neutrino node, can open LN channels to your node
- Muun mobile wallet – easy to swap funds onchain/LN
- Lightning App desktop – (by Lightning Labs) powerful app to control LN channels, without need of a full node, is using its own Neutrino node for LN and you can manage channels with your node, private or public.
- CoinOS – amazing simple web LN wallet, with full control and swaps onchain/LN and L-BTC/LN, optional if you want to swap funds between Liquid and LN to be another step into your mixing procedure.
- Zap desktop – can be used in 2 ways, connected to your own node (as node manager) or as a standalone onchain/LN wallet and opening channels towards your own node and others.
- Blixt mobile wallet – is a new wallet app (still in beta), using LND + Neutrino on your mobile. You can open channels towards your node and others and use it as full functional node on your mobile. Can be used also as a backup solution for your regular LN node, it supports importing wallet from other LND sessions (but not in the same time, only in case of SHTF).
- Nayuta Core mobile – amazing simple node on your mobile. It creates a Neutrino node and from there you can use on the same mobile Zap/Zeus mobile apps to connect to it and use it a full private node.
- Simple Bitcoin Wallet (SBW) – this is new wallet has the base of the old defunct BLW, simple to use, opening public/private channels with your node and operating through Tor from your mobile
- ChainMarket – not very well known mixing web service (wasn’t so much promoted), between LN and onchain. It was developed by the same guy that created LntxBot. This is a very interesting service and few users know about it, but can help a lot for your mixing / swaps procedures.
- ZigZag – Lightning to/from Onchain swaps
- Submarine Swaps – Swaps from onchain to Lightning Network
- Azteco – LN exchange, no KYC, using vouchers system from physical shops. More LN exchanges here.
1 – Install / configure your LN node.
- Better use a Tor node, not-named node, not clearnet node. Here is a good article to read about Tor nodes, by Jameson Lopp.
- Start learning all the features and apps integrated into your node suite software
- Make backups of your LN channels every time your open/close one.
- Test your recovery plan in case your node is crashing. Never wait until is crashed and always make the test recovery when you do not have too much funds on it. Knowing how to recover is a very important step.
- Play a while with your node, making channel management and know well how this thing works, understand the process and how LN txs are routed, fees, UTXOs etc
2 – Connect some wallet apps to your node
- Make tests for sending/receiving txs, to be sure all works OK and you are comfortable with using those apps, know how to use them and when to use a specific app.
- Use only Tor connections, no matter you are using apps and node inside your LAN.
3 – Open channels with/to your private nodes/apps
- Besides of many other LN channels open with other nodes, just regular usage of your node funds, you will have to open also some private channels, using the apps mentioned before.
- Always use a single UTXO and with all the funds from it when you open a new LN channel (no matter if is private or public). Each time you want to open a new LN channel, first send to your node onchain wallet the specific amount you want to have that channel, to a single new BTC address from your node wallet (UTXO).
- Public channels are used more for routing txs and making your own regular txs
- Private channels are used more for making swaps between LN and onchain for those sats you want to keep them private
- DO NOT CLOSE YOUR LN CHANNELS! Yes, keep your LN channels open as much is possible. That means the UTXOs used to open the channels will always show on the blockchain that “opening balance” so the chain-analysis tools, will never “know” where those sats goes. In the moment a channel is closed, the remaining balance is settled and published on the blockchain, but all the “movements” are not known. This is a very important aspect of privacy on LN, that many users wrongfully ignore it. So keeping open a LN channel means you can have multiple “cleaning” txs of many sats. An open channel also can be re-funded with sats from onchain, making swaps or just simple LN txs from another wallets/sources.
4 – Start your “cleaning” process
- You can use LN desktop apps to open private channels towards your node (Electrum, LN App, Zap etc)
- Do not open small channels (like 20k-1M sats), try to use bigger channels (2M-10M sats), enough to cover your swap amounts into HODL onchain addresses.
- When you move funds, try to use MPP (multi path payment), that means your LN tx will be split into many small pieces, routed through many different channels and arrived later into the same LN wallet. This makes even harder a possible analysis.
- The “process” is quite simple: pay to yourself as many as you can LN invoices, into/from many LN wallet apps. Make swaps between LN/onchain, from/using many different sources. And use your sats to buy stuff, live using your bitcoins!
5 – Example of moving funds
- Using Electrum desktop, open a private channel (is always private) towards your node, of let’s say 2M sats
- Set the channel fees to zero (use RTL or Thunderhub)
- Option A: Using another swap LN mobile wallet (Phoenix, Muun), create a LN invoice. Pay that invoice from your Electrum. Funds will be routed from your private channel, through your node and some other hops (you can set that too) and arrive into your “external” LN wallet (using Tor and connected with your Electrum Server of your node). Make a swap of partial funds (never use the total amount from balance) into an onchain address, as you wish. Phoenix and Muun have this option to send from LN into onchain (external address) making the swap on the fly.
- Option B: If your Electrum channel is almost empty you can use the reverse way, create the invoice on your Electrum and pay it with your node wallet directly. Once you have them in Electrum you can make also swaps LN –>onchain, using the built in feature in Electrum app.
- Option C: Using a LN neutrino node (LN App, Zap Desktop, Eclair, SBW, Nayuta, Blixt etc). Create a LN invoice from the side where you want to receive the funds and be able to make the swap into onchain and pay with the side where you have more funds available.
- Option D: Using the same LN node, making swaps, from specific channels into onchain new address (can be external or internal of node). This swap will have a cost.
- Option E: using ChainMarket (see the apps section), posting LN funds to be swap into onchain address
- Option F: using ZigZag or Fixedfloat LN exchanges for swaps into/from onchain. This option also have an extra cost.
- Option G: ONLY WITH KNOWN PEERS! Open private or public channels with known/trusted peers and push back funds using the Thunderhub app feature for keysend. See here a dedicated guide for this procedure. So practically you open a channel, let’ say of 5M sats with a trusted peer. You push 3M sats on his side (you are giving him 3M sats) and your peer will send you those 3M sats onchain from another wallet to one of your onchain BTC addresses as you wish.
- Option F: Batching txs with Electrum as being coinjoins
– I used 2 electrum instances (2 wallets)
– took from each 10-20 addresses
– create a batch tx in excel, listing all 10-20 addresses from both wallets and dedicate to each a random amount, import that file into Electrum
– send that batch tx as being a coinjoin, connected to my node of course through Tor
– send some UTXOs to my secondary node (private)
– open private channels with each UTXO with my “public” node
– drain those sats into onchain or other LN wallets
– checking with Know Your Coin Privacy and there is NO way to trace those txs to me, all looks like a nice coinjoin
No need for all those complicated whirlpool/wasabi/joinmarket stuff. LN is doing great job. Optional you can use ChainMarket LN to move those sats, back into onchain.
- Be smart an inventive in creating your own routes of cleaning.
- Make small tests before starting the process, to learn about the fees and routes.
- Take notes, for your own knowledge, until you control the process.
- You can shut down your LN node anytime, emptying the funds from it and create a new one, new identity anytime.
- You can even create a new private node, connected to your “public” node, only using private channels. That nodeID will not be visible for routes but can make swaps to/from onchain. This private node is not necessary to be a full node, a big machine or all the time online. Can be any computer with a Neutrino sync (see the apps section).