It's pretty simple. Each of these steps is done on a VM in my QubesOS install. But you could do it on any Linux box too. I'm sure I'm not the only person doing this. It's an obvious enough idea. But you should too if you're technical.
  1. Download Wasabi Wallet
  2. Set the coordinator. I use https://btcpay.kruw.io/plugins/wabisabi-coordinator/
  3. Mix my coins.
  4. Install LND (you could probably use CLN for this too).
  5. Install Tor and/or a VPN.
  6. Configure LND to use tor in ~/.lnd/lnd.conf
  7. Deposit a mixed UTXO from Wasabi into LND with lncli newaddress. You can pick a specific UTXO in Wasabi by typing Crtl-C-D. Picking a specific UTXO is better for privacy, and more effficient.
  8. Find a LN node to open a channel too. There's a few strategies here. One interesting one is to pick new Lightning nodes, eg from https://1ml.com/node?order=newest as the new nodes are most likely to be small and eventually shutdown again.
  9. Open a private channel to that new node, using all the funds, with lncli openchannel --private --fundmax, and send all the funds on it to a different LN node/LN wallet. I like Phoenix myself as it's easy to run it on my phone without needing a node. Cashu wallets are good too.
  10. Close the channel with lncli closechannel --delivery_addr <addr> That option sends all the funds remaining in the channel to the address of your choosing. Depending on how much is left I either send it back to my Wasabi wallet. Or I donate it to a charity accepting on-chain donations. The reserve amount in a LN channel is like 1%, and sending 1% to charity is fine by me! My church suggests donating 10% after all.
  11. Delete everything in ~/.lnd other than lnd.conf, and go back to step #7. This is important, as it resets the LN node ID for the next new channel so you can't correlate each channel being created.
Why do I do this? Because I'm getting the privacy benefits of Coinjoin. Plus I'm getting the privacy benefits of Lightning. Between the two, I've completely unlinked the source of my funds, and where they go, using both coinjoin to add privacy, and the inherent privacy of Lightning payments through obscure anon nodes.
This does cost a bit. But I'm happy to pay random pleb nodes channel fees to do all this. And I'm sure some of them benefit from getting free incoming capacity. The only issue is I want more people to do this too to get a bigger k-anonymity set of people doing this. Thus I'm writing this post, and boosting it too.
Happy stacking!
110 sats \ 0 replies \ @joda 6 Jun
if you're just looking to obfuscate, why not atomic swap to a privacy coin or Liquid?
reply
Curious if there are any avenues or tools for normies or non-technical people to use to leverage private spending?
I think these steps maybe even a little too complicated for many. Just looking for all of this, streamlined to end users in a curated package.
reply
100 sats \ 1 reply \ @OT 6 Jun
Good info!
I’m wondering why you choose new nodes as they’re more likely to be shut down? Isn’t that a bad thing?
Also, doesn’t sending it to phoenix undo a lot of the CJ as they are seeing every LN TX?
reply
I’m wondering why you choose new nodes as they’re more likely to be shut down? Isn’t that a bad thing?
I think what the OP is doing here is taking advantage of the fact that when a node is shut down permanently, payment information gets deleted. They're only keeping the channel open long enough to move all the funds in it, so the nodes staying up long term isn't needed.
Right now LND (and CLN?) does not delete old routing information. In fact, there doesn't seem to be any way to delete old routing info at all. This is a big privacy problem as that routing data could be doxxed later, eg by warrantless requests for data held on LN nodes running in the cloud.
IMO the fact that LND doesn't expire old routing info regularly is really sketchy. Any other privacy application wouldn't even keep such data at all.
Also, doesn’t sending it to phoenix undo a lot of the CJ as they are seeing every LN TX?
Nope. The OP is quite successfully preventing Phoenix from learning where his funds came from. Acinq is definitely not seeing every LN TX – they have no idea where funds are ultimately coming from even at the LN level, let alone when you add the coinjoin's to the mix.
reply
Thanks for this, I'm bookmarking it to look at more carefully once I understand a bit more about coinjoins. And the rest of it, frankly.
Which steps here cost money? I assume step 3, mix my coins? Any others? About what percentage are you paying for this privacy?
When you say "install LND" - I assume it means this? https://github.com/lightningnetwork/lnd"
If you had to give an overview, would you basically say it is:
  • mix your coins
  • the mixed UTXO, send to through lightning to another address?
reply
218 sats \ 1 reply \ @anon 6 Jun
Which steps here cost money?
Lots of steps. The coinjoin costs money due to transaction fes and mixing fees (actually not sure if the kruw coordinator charges fees; Wasabi did when they were running one). It's important that coinjoin's have a cost to discourage attacks from chainalysis firms flooding the mixes.
Transferring the funds from wasabi to LN costs a transaction fee too. I wish there was a way to deposit from a Wasabi mix right into my LN wallet!
Opening the channel again costs a transaction fee. Again, I wish there was a way to open a lightning channel directly from a coinjoin. But that sounds hard.
Transferring the funds over Lightning costs fees too. In fact, it's common on Lightning for large transfers to cost more money in fees than on-chain. The financials of a Lightning channel mean the cost of a transaction is mainly related to the total amount transferred, as channel capacity ties up money.
Closing the channel costs a transaction fee too. And I often donate the 1% or so remaining to charity. But charity is an important part of my faith, so I'm ok with that! You could also say that me doing all this is a charity for others: I frankly am getting more privacy than I really need. But you need everyone getting privacy so the people who *really need it have a k-anonymity set of other people doing what they're doing.
I guess you could say all these steps have a cost for my time. But it's fun to play with cool tech that I don't get to play with at work!
reply
I wish there was a way to deposit from a Wasabi mix right into my LN wallet!
There's support for this via the RPC interface. Unfortunately not yet via the GUI.
I wish there was a way to open a lightning channel directly from a coinjoin.
This is theoretically possible. But would require quite a bit of coordination, as you'd need to get the other party to sign a commitment transaction with the specific txid of the coinjoin, prior to fully signing the coinjoin. Wasabi could probably do this if code was added to Wasabi itself. But it's not really practical to do right now.
Had lightning instead gone with the original, pre-segwit, idea for channels using SIGHASH_ANYONECANPAY this would be a lot easier.
reply
11 sats \ 0 replies \ @anon 6 Jun
When you say "install LND" - I assume it means this? https://github.com/lightningnetwork/lnd"
Oh, yes, I mean that.
reply
108 sats \ 4 replies \ @Catcher 6 Jun
Why can't you do the same but without mixing? I think the lightning transaction is anonymous enough?
reply
208 sats \ 0 replies \ @anon 6 Jun
(not the op)
You absolutely could do the same without mixing first. Doing both adds a layer of protection in case you end up depositing your funds to a Lightning node that violates your privacy. None of these things are perfect you know. It's always possible that a privacy protection will fail. So layering them makes it less likely that all the layers fail at once. I think this is the reason why the OP suggested doing this via Tor and/or a VPN (https://www.ivpn.net/ accepts lightning!).
Also I think coinjoining the funds first is a good courtesy if your funds are potentially coming from sketchy sources. Like it or not "hot" coins are a potential issue. Coinjoining first means you aren't potentially giving someone a UTXO that could maybe cause them problems. They're kinda choosing to accept that possibility by accepting incoming transactions. But still, diffusion is good.
If I were running an LN node, I'd rather people give me coinjoined funds. I don't want to know where their money is coming from!
reply
When nodes open a new channel with the UTXO of an old channel, analysis can apply heuristics that reveal which node funded the new channel. It can also label the closing balances of the old channel.
This degrades the privacy of your node and your peers. Even if your node uses coinjoin, a peer can still harm your privacy this way.
reply
In other words if you become a very interesting target they can probably track you even with coinjoin as you will make mistake sooner or later. But for keeping some basic privacy like buying giftcards online for example lightning payment from non-kyc wallet should be just fine.
reply
218 sats \ 0 replies \ @anon 6 Jun
(not the op)
The problem with coinjoin (and monero) is if someone knows where you spent money to, and is trying to determine if you were the receipient of a source of funds, they can just look at the chain and see there is an on-chain link between the two UTXOs. Far from 100% of coins out there have been coinjoined. So if that link shows up, there's still a decent chance the connection is a real one and not coincidence.
Coinjoin is good at ensuring that people sending you money, and people receiving your money, can't determining much from that information alone. But there are cases where you need better privacy than that.
Lightning is good for completely eliminating the on-chain links. As long as the adversary doesn't have information on what transactions happened in the chain of Lightning nodes you used, they just don't have the information necessary to make that linkage. But Lightning isn't perfect either. Bad actors like chainalysis agencies can try to monitor LN channel balances with probing attacks. And those bad actors might be running nodes too.
But that's always true of privacy tech. So layer protections and don't rely on any one thing!
reply
11 sats \ 2 replies \ @anon 6 Jun
There's a way simpler way to do this.
  1. Have lightning node
  2. Buy channels from Magma
  3. Loop in
This completely breaks the relationship between your previous UTXOs and your new UTXOs.
reply
0 sats \ 1 reply \ @anon 7 Jun
(not OP)
If you're doing that aren't you giving information on your txs to Amboss? I don't trust them. They're into AML/KYC bullshit.
reply
0 sats \ 0 replies \ @anon 7 Jun
Amboss doesn't know about your lightning transactions; they only run the channel marketplace, but whichever swap service you use would know about your transactions.
reply
The question that remains is: now that Wasabi is no longer coordinating the mixing, is this step by step valid?
reply
Yes. In Wasabi coordinators are for the most part, not trusted, and multiple third parties are running them. The OP provided the URL of what's probably the most common third party coordinator.
reply
Great post.
reply
Very useful post, indeed!!!
Bookmarked and will repeat it reading so as to score more on privacy like you ..
reply
100 sats \ 1 reply \ @Rsync25 6 Jun
Bookmarked 🫡
reply
Indeed
reply
@anon leading the privacy charge…. Useful post!
reply
The hero we need, but don’t deserve
reply
10 sats \ 2 replies \ @anon 6 Jun
Thanks to stacker.news for making anon posts possible, and Lightning for making them spam-free. And Tor for protecting my privacy against stacker.news
I wouldn't want to post this from my real ID as there might not be too many people doing this trick yet.
reply
Still waiting for the warrant canary on SN 👀
reply
And the good thing about @anon is you can go back to shitposting with your identity untarnished by associations to useful information :D
reply
10 sats \ 3 replies \ @anon 6 Jun
Thanks! I know it's kinda technical. But maybe someone can make a wallet that automates all this in an easy-to-use package?
reply
Be the change!
reply
10 sats \ 1 reply \ @anon 6 Jun
Sigh, I'm not a programmer unfortunately. Just a sysadmin type. I should upgrade my skills though.
reply
It seems like you have a solid foundation though :)
Edit: I'm the opposite. Software engineer by trade, dabbling in sysadmin type things.
reply
peg into liquid then swap it for lightning to phoenix using boltz.exchange
reply
Thanks for sharing! Instant bookmark!
I feel this shows how early we are with this technology. Can’t wait to see how this evolves!
reply
whats an example of where you would spend? that also wouldnt comp you after doing all that?
reply
Bookmarked thanks! 🙏🙏
reply