Today the "Lightning Developers" announced that they had successfully made payments on the Bitcoin mainnet . The actual payments were nothing to speak of, being to test websites, and the real news was the milestone which was achieved. A milestone where the different businesses developing their own products had done so in a way that allowed them to compatibly relay each other's payments.

While it is good they have achieved it, I am going to first demonstrate that to a future user it is nearly meaningless, and then I am going to point out the real obstacles that Lightning Network (referred to as LN from this point) usage has. I hope that this receives some attention, and even better, gets a clear counter-article that addresses usable practical solutions for the obstacles that I list.

...there are many usability obstacles and unclear aspects to LN, without which no-one can really know what using the final LN will be like.

If you are someone who has faith that LN is going to make Bitcoin Core usable again for normal users, who want to pay for a VPN, receive payment for small tasks or even buy a coffee -- ask yourself where the explanations for these things are.

Doing The Expected

If each business developed a unique Lightning Network (LN) product, then Lightning Network would at best be a collection of walled gardens, and users would have to work out which to adopt to deal with the party they wished to do business with. This would be a usability problem, and an obstacle in the way of any normal users who might wish to make use of it.

It makes no sense to not have the products work with each other, so this announcement is merely a first step of many yet to come before lightning is ready for those normal users. This is no "one giant leap", but more "just another brick in the wall" upon which a fully functioning Lightning Network would be built.

The two businesses dealt with in this test, were Yalls and Starblocks . Neither are real businesses, but rather both are demo websites. For the purposes of testing that the different businesses can compatibly relay payments between each of their products, this is the simplest test case and more than enough.

The Real Obstacles

It was always expected that there would only be one common Lightning Network. The businesses making the products would always have had make this happen. What we don't hear about are all the unresolved questions relating to how to make Lightning Network something a normal user can use, not just a fancy but complicated technical boondoggle.

Making Channels Simple

A while back, an earlier announcement lauded the development of an Electron-based wallet. Electron in this case, is a node.js based application development wrapper, that allows applications to be developed in a way where they can work easily on multiple platforms from Windows, MacOS to Linux. Today's announcement uses a later version of the same client.

This screenshot is from a wallet, specifically the one used in the announcement video. At this very early stage in the development of LN, it is entirely reasonable that they have arcane developer-oriented user interfaces. If it were easy to make an interface that made the concept of channels a non-issue for normal users, they would have done so.

This is a real obstacle.

In order to open a payment channel on the Bitcoin mainnet, you have to pay the high fees and deal with the transaction backlog. And closing a channel, which is the process of settlement, also encounters those same problems. Now take that, and think about the notion that LN wallets may transparently open new channels for you if necessary. If the current fee for a simple transaction is around 200 satoshis per byte, this is around $7 just to get your bitcoin mainnet transaction included in a block during the next two hours or so.

You'll notice that at no point in the demonstration does the presenter talk about anything related to how this would work -- and for good reason! It isn't the most appealing idea to look at your bitcoin wallet and see the lightning wallet has been pulling out this amount in fees just to make your lightning experience look like it's somewhat simpler!

How can this wallet be presented in such a way that it is both simple to understand and use? What is the way this can be done for normal users, who have until this point used a credit card or even comparatively simple on-chain transactions?

The UI used for the announcement is a complicated and arcane affair, which normal users cannot be expected to understand. There are no signs of any simple UI on the horizon, nor any apparent awareness that one is required.

Opening A Channel With A Scammer

A central part of payment channels is that the settlement must be done on the terms the two parties who opened a channel agreed on. If you open a channel with Starblocks, and fund it with $100 dollars, you eventually expect to either get the remaining funds back or to spend it all in some way.

However, Starblocks has the option of closing the channel (settling it on the blockchain) prematurely and taking the funds. What stops them from doing so, is that the valid transaction they hold is time locked for a period which might be something like three days. So you have three days to broadcast your own transaction which isn't timelocked, and beat theirs. You might very well wonder how a normal user is supposed to detect and react to this.

This is a real obstacle.

A normal user as part of operating a wallet that supports LN usage, if they are to retain control of their own funds, has to monitor the blockchain to detect if the other parties for all of their open channels broadcast their settlement transactions.

There are many questions that come to mind. Your wallet is on your phone, you drop it in the toilet/lose it/you don't have internet connection/you end up in hospital, what happens to your channels? These are real situations people might find themselves in where the practicality of maintaining payment channels becomes at the very least cumbersome, if not totally impossible.

The recommended solution for this is to trust your payment channels to third parties! This both introduces risk from them, and gives them information about you and your transactions. Do you really want to put your funds in a custodial wallet, and hope what happened today to Nicehash (or more importantly to it's users) doesn't happen to you? Do you want to have to pay a recurring fee to have someone else manage your payment channels? They aren't going to do it for free, and if they did and weren't a real business, would you trust them?

Keeping the decentralization, desiring to avoid any possible centralization, seem to get mentioned a lot these days. But when the only safe way to secure your channels is to host and pay third party services to do so, what is this other than centralization? You will want to go with a popular one in the hope they are more trustworthy, which will further push it to a limited set of main payment channel management services.

Rent Seeking And Surprise Fees

Paying fees is not a bad thing. It both secures the many bitcoin variants, and allows you to get a better quality service. But at this time LN is a vague concept and none of us really know where the fees will be charged, or how much and really to be honest -- what they will be necessarily charged for.

We know that you will have to pay a fee to a payment management channel service, should you not have the capability to reliably protect your channels. And you should pay a fee, to ensure you get the best service in this regard because you definitely will want your channels protected.

We know that your LN wallet will need to connect to a LN node to even monitor your own payment channels and submit transactions, there has also been talk of charging fees for them to use the nodes.

We know that you will have to pay a fee to create a payment channel. And if you can't relay a payment via other channels, you will probably have to pay another fee to open another payment channel. Similarly, we also know that you will have to pay a fee to close or settle the payment channel.

We know that if you can relay a payment to other channels, someone isn't going to do this for free. There's the possibility for a fee on this, from all the points of relay.

And then there's all the businesses offering LN products, ask yourself what their business plans are.

This is a real obstacle.

How can it be known if LN will prove to be usable by normal users, if we have no idea what fees will be incurred. And in some cases like automated payment channel creation, even when they will happen. Your wallet UI now has to either lock in fee payments, or gain estimates and say "Want to try it for this amount?" or perhaps even "Want to retry it for more?"

How can this be presented to a user in a manner which not only makes it clear how much something will cost, but also easy to understand without burdening them down with all the current complications?

Where Lightning Network Stands Today

We are promised that LN is the future of Bitcoin payments. On-chain transactions are positioned as not being intended for this purpose, and LN and further layers above it will step in and solve the problem. But as I have highlighted above, there are many usability obstacles and unclear aspects to LN, without which no-one can really know what using the final LN will be like. Yet, if you visit the /r/bitcoin subreddit this minor achievement announced today, is heralded as if LN is ready (or even close enough! ) for use.

Lightning Network is Far From Ready

We have seen that payment channels have to be monitored by their owner, or they need to be controlled by a third party who monitor it for them. We see that there is no user interface which abstracts the concept of channels in any way close to what a normal user can understand and attempt to manage. We see that there are fees on things that may even happen automatically without your approval, and there's no clear idea of what will have fees or even how much they will be.

At this time, LN looks like something the much referenced normal user would dismiss as arcane and unusable.

The Artificial Creation Of The Need For Lightning Network

Bitcoin Core has been changed to prepare for off-chain transactions.

The block size was intentionally limited, in order to force development of off-chain solutions.

“A mounting fee pressure, resulting in a true fee market where transactions compete to get into blocks, results in urgency to develop decentralized off-chain solutions.” -- Wladimir J. van der Laan (Lead Bitcoin Core Maintainer)

The whole backed up mempool, and pressure to pay high fees to ensure your transactions are processed was a decision by Bitcoin Core developers. One intentionally made to create an artificial situation where off-chain solutions became necessary, where they weren't before.

Bitcoin Core forked themselves in a way that breaks the Bitcoin model in an incompatible way, from that of the Bitcoin blockchain that preceded it, by shoehorning in the complicated "Segwit" changes. A feature that only really serves to facilitate the off-chain solution that there isn't otherwise a need for, without the artificial fee pressure. And even then, both payment channels and even earlier forms of LN had been implemented without Segwit. Because their narrative is that block size increases are bad, which sounds a lot better than "we're making it hard to use and expensive so we can work out a way to tax you with a more complicated solution", they now use a bizarre notion of "block weight" to cloud the implicit block size increase that Segwit creates.

One final change in aid of enabling off-chain solutions at the expense of on-chain solutions, is how long it now takes for an unconfirmed transaction to time out and be discarded. In a normal Bitcoin, a transaction times out in 72 hours. This means a user on finding their transaction has too low a fee, can just wait for it to expire and retry if the need still applies. 72 hours is a user friendly period. In Bitcoin Core, in order to make it more suitable for use cases like payment channels, they were forced to extend the period to 2 weeks making it now awkwardly long for normal users and resulting in what we now observe as the permanently bloated transaction backlog.

As you can see, Bitcoin Core has committed to creating a Bitcoin variant that is more and more unusable and inhospitable for the simpler on-chain transactions. And it has done so, to force the otherwise unnatural and artificial need for off-chain solutions.

Lightning Network Versus Bigger Blocks

At this point we can see that Lightning Network is not ready. It is not in any usable state for normal users, whether it can be made to be is questionable. And it isn't even clearly defined how it will work in real use cases, or how much it will cost to use. Do people even want to lock up funds in payment channels? Does it even make sense to base a generic payment solution for a cryptocurrency on the whole notion of locking your money up in payment channels? Who knows?!

Now consider you show a normal user who has perhaps done some on-chain BTC transactions a Lightning Network wallet with payment channels. You explain how he might get scammed if he doesn't watch out, and might have to hand over their funds to a centralized service to ensure he doesn't get ripped off. And even then, losing control of their funds by doing so, may also mean total loss of those funds if the service gets hacked or turns out to be untrustworthy. Explain it all to them, show them the arcane interface.

Then show them Bitcoin Cash. Explain how they can just do those same payments with one BCH transaction, exactly like they did with BTC but with reasonable fees, no artifical block size limit that was imposed to subsidize development of off-chain solutions like LN. How they can easily retain control of their funds, simply by not giving away that control to either third party centralized solutions or locking them into payment channels in the first place.

Which one do you think the user will pick?



