By Gustavo Flores Echaiz & Turbolay
Bitcoin network mining fees rose as high as 643 sats/vbyte for the next block confirmation in May 2023, which is the highest bid required since 2017. This has disrupted the on-chain activity of many users and businesses, forcing companies like Binance, the world’s biggest cryptocurrency exchange, to work on implementing the Lightning Network, Bitcoin’s leading scaling solution.
Wasabi Wallet’s implementation of the WabiSabi coinjoin protocol doesn’t integrate with the Lightning Network yet, but what does the Lightning Network-enabled coinjoin future look like?
Opening payment channels with private coins created from Wasabi is currently done by completing the coinjoin and channel opening individually, creating multiple unnecessary on-chain transactions. A new implementation called Vortex allows for Lightning Network channels to be created directly from the private outputs of a Chaumian coinjoin, but has some caveats. A future potential Lightning Network-enabled WabiSabi coinjoin could fix some of these issues. Lightning Network channel closures are at a different level of complexity, so this article won’t cover them.
Read further to learn more about the details of why the Lightning Network is Bitcoin’s leading scaling solution, why payment channel openings and coinjoins go well together, how to currently open a Lightning Network channel from a Wasabi Wallet private UTXO, how Vortex presently handles the direct opening of channels from coinjoin outputs, and finally, how a future Lightning Network-enabled WabiSabi coinjoin might solve that problem.
The Lightning Network as Bitcoin’s Main Scaling Solution
As of 2023, it’s not a controversial statement to say that the Lightning Network is Bitcoin’s main scaling solution; it’s simply a fact. New technologies might emerge, and research is highly encouraged. Still, the Bitcoin business and developer communities have converged towards working on solutions to make the Lightning Network user experience seamless for many as a top priority.
What is the Lightning Network?
Lightning Network is a decentralized peer-to-peer payment network that allows instant, low-cost bitcoin transactions. Participants open a payment channel, which means they lock funds on the blockchain with another peer to transact with them freely in an off-chain manner. A participant can simply close the payment channel to bring back their funds on-chain. If you want to learn how the Lightning Network works, read here.
The critical part to retain is that the Lightning Network isn’t a magical solution; it requires payment channel openings, closures, and liquidity management. It’s also important to understand that Lightning is a privacy solution per se; it has some complex implications that you can learn about on Lightning Privacy, a research project sponsored by zkSNACKs and the Wasabi Wallet team.
Let’s follow up by looking at how Wasabi can be used today to open Lightning Network channels. Initiating your journey on the Lightning Network with private UTXOs is essential.
Open a Lightning Channel with a Wasabi Wallet Private UTXO
In this section, we will go through all the steps required to achieve the stated goal by using Wasabi Wallet to obtain private UTXOs, sending your funds to a Lightning Network wallet, and opening a payment channel.
Be aware that Wasabi can only provide private UTXOs to open Lightning channels with and can’t guarantee the privacy of transactions made within the Lightning Network.
Using Wasabi Wallet
To obtain private UTXOs, you only need to generate a wallet on Wasabi, back up your seed phrase, receive funds, and wait for the coinjoin magic. Depending on the amount and your settings, this will take a few minutes to a few days.
Once you have a private UTXO, you’re ready to send it to a Lightning Network Wallet, but first, you should choose a wallet.
Choosing and Using a Lightning Network Wallet
To choose a Lightning Network Wallet, you need to consider the level of security, privacy, and sovereignty you wish to have. For example, options like Wallet of Satoshi or Blink (Bitcoin Beach Wallet) are straightforward but fully custodial. This means they have a theft risk, so we don’t recommend custodial solutions.
On the other hand, you could use an LND or Core Lightning server on the command line, and you would have the most control over your funds and your lightning network experience, but this is often reserved for technical users.
Breez and Blixt Wallet are non-custodial solutions, private (implementing block filters, same network privacy as Wasabi), and easy to use. Still, there are also many other good wallets to choose from.
Whichever you decide to use, you will have to install it, generate a wallet, and send an on-chain transaction from Wasabi to this new wallet.
Open a Lightning Network Channel
If you’ve paid attention, we’ve made three transactions so far and still haven’t completed our goal. You must execute a final on-chain transaction by finding a peer and opening a channel on the user interface of your Lightning Network wallet.
It’s evident that it takes a lot of work to go from a non-private UTXO to having private funds on the Lightning Network.
Combining the privacy benefits of a coinjoin with the scalability of the Lightning Network is essential for a promising bitcoin future. Let’s look at how these two technologies go so well together.
Why Coinjoin and Lightning Network Channel Opens Go Well Together
To understand why a coinjoin is a perfect place to open a Lightning channel, let's go back to the basics and the exact definition of a coinjoin:
A distributed task that requires every participant to be online and reactive at the same time so they can follow a protocol to build and then sign a transaction together within a specified timeframe.
But wait... This exact definition also applies to a Lightning Network channel opening! That's why these processes blend so nicely together.
The only real difficulty is to settle the Lightning Network channel negotiation within 10 minutes, which is the time frame. All the processes between channel negotiations until the broadcast of the coinjoin must happen within 10 minutes.
Constructing a coinjoin with many participants can be much more time-consuming than opening a channel. As a result, it might be easy to pass this limit, resulting in one party revoking the channel opening.
However, since the coordinator decides on the timeframe for each phase, making the process less than 10 minutes is perfectly possible, assuming that channel negotiation between nodes happens at the end of the input registration phase.
The flowgraph above shows the two protocols mixed together to open a channel by sending the funding transaction using a coinjoin output.
Let’s follow up by examining how this is implemented on Vortex's released solution and how it could work on Wasabi Wallet or another Wabisabi coordinator.
Open a Lightning Channel Directly from a Coinjoin
Vortex is an open-source tool that you can use on top of Core Lightning, LND, or simply Bitcoin Core. It allows you to execute taproot-enabled collaborative transactions, such as coinjoins, that can open directly a Lightning Network channel. This software is still in the alpha stage of development, but a transaction demo has been completed on the Bitcoin network. It’s based on the Zerolink protocol.
Vortex’s developer, Ben Carman, announced in December 2022 that even though the goal of opening a Lightning Network channel directly from a coinjoin transaction had been achieved with Vortex, it’s not optimal to use it with Core Lightning and LND but instead only with LDK, because privacy on Lightning lacks elsewhere.
He’s currently developing Mutiny Wallet, which is expected to implement Vortex lightning network channel open-enabled coinjoins.
Caveats of Vortex’s Implementation
Vortex’s Lightning Network-enabled coinjoin implementation has some caveats, most inherent to the ZeroLink protocol.
First, outputs must be registered during input registration (blinded outputs), the first phase of the coinjoin. As a result, channels must be negotiated at this time, which augments the time restraint. This is different from Wasabi Wallet’s current coinjoin implementation.
Then, Vortex inherits the toxic change problem from the ZeroLink protocol since the size of the private output is chosen by the coordinator server.
Finally, a challenge that Vortex is facing is liquidity. It's already hard for a coinjoin coordinator to gather enough inputs interested in participating in a coinjoin. Therefore it's even more complicated if we need every one of these participants to want to open a lightning channel specifically and even more challenging if we also need all these channels to be funded with the same amount.
To fix this last problem, Vortex uses an extra round before the inputs registration phase to gather enough inputs until a certain threshold is reached (2 is enough to break deterministic links). The same technique was used in Wasabi Wallet 1.0.
Now that we’ve explored Vortex’s caveats, let's look at how the Lightning Network channel openings in WabiSabi could work differently.
Wasabi Wallet’s Future Potential Case
For the initial problem, the WabiSabi protocol makes it possible to begin negotiation right before the output registration phase, much closer to when the transaction will be broadcasted. This doesn’t fix the time restraint in an absolute manner, but it makes it an easier problem to fix.
The main advantage of using WabiSabi is that change from the Lightning Network channel openings is also coinjoined into private UTXOs in most cases. This allows the entire amount owned by each peer to be made private, not just the UTXO created for the Lightning channel. Consolidating these private UTXOs can still be problematic, so spending the whole wallet balance in one transaction should be avoided to ensure a payment can’t be recalculated to match the value of a specific coinjoin input.
We also saw that one of the issues of Vortex is to gather liquidity. This problem would be worse using WabiSabi because this protocol works best with many inputs. For example, the zkSNACKs coordinator requires 150 inputs to proceed with a coinjoin round.
One of the easiest ways to solve this problem is by using the zkSNACKs coordinator along with users of other services (Wasabi Wallet, Trezor, BTCPayServer...) to open the Lightning channels. Even if the other participants are not opening channels, coinjoining with them would be extremely helpful to make it hard to know who opened the channel (especially considering that it could be various inputs with dual-funded channels).
The implementation is also fully open-source, reasonably light (complexity is on the client side rather than the backend), and built to intentionally reduce the number of privacy leaks to the coordinator as much as possible. As a result, the coordinator has almost the same amount of information as any observer of the chain and can't deanonymize users.
Remaining Issues with WabiSabi’s Implementation
Some issues remain, and the most tricky one is failed rounds. A round fails if some users register inputs but do not provide a signature for those inputs once the entire transaction has been assembled by the coinjoin coordinator. The next round is known as the “blame round”, where only inputs successfully signed in the initial round can register. These restricted rounds are recursively retried until all signatures are successfully collected or until there are not enough whitelisted inputs left.
Round failures can lead to friction with the current implementation of the Lightning protocol: A channel opening can't be canceled; it can only fail if the transaction is not broadcasted after the allowed window (10 minutes by default).
But if a round fails, the commitment transaction previously created is not valid anymore, and the channel opening negotiation has to be started again, which is only possible once the first 10-minute window has ended.
So the whole coordinator must wait to accommodate the 10-minute timeframe for Lightning users, but waiting is terrible in coinjoins because it exponentially increases the probability of some clients becoming not responsive and disconnecting.
The simplest solution is to never participate in blame rounds if the intention is to open a Lightning channel. This solution is great, but it would take a lot more time to open channels because each attempt takes 10 minutes and has only a 15% success rate (based on data measured with zkSNACKs’ coordinator parameters), so it would take about 1 hour to broadcast the funding transaction.
With WabiSabi, you can't know upfront how much anonymity you will get from the round. Sometimes you will gain a lot of privacy; sometimes, you will gain almost nothing.
This is not an issue for normal Wasabi users because they can just participate in new rounds with their outputs if their anonymity gained is not as good as expected. But outputs used to open channels can't be remixed, and therefore we must be sure that enough anonymity is reached in one shot.
There is no easy fix for that without changes to the WabiSabi protocol, or at least to its implementation (an example of a change would be for users to declare the denominations of the outputs they'd like to receive before the round). However, clients can just make a round fail if they see that they won't gain enough anonymity, but this would be considered a DoS attack, and they'd be banned temporarily from future coinjoin rounds by the coordinator.
This article introduced the definition and direction of the Lightning Network, how Wasabi Wallet can be used today to open private payment channels, why Lightning Network-enabled coinjoin transactions is a powerful idea that is already possible with Vortex, and how a future WabiSabi implementation combining both technologies could differ and solve some caveats.