forklog.media

Blockstream’s Christian Decker: It’s Really Hard to Inject Usefulness Into Proof-Of-Work

Lightning Network, a second layer payment protocol, can mean a lot to Bitcoin and other blockchain-based systems. It is hailed as a solution to scalability problems and a way to make crypto payments ubiquitous, but the tech isn’t quite mature enough to handle all that.

In this piece, Christian Decker, a software engineer at Blockstream working on the Lighting specification and C-Lighting implementation, talks about the inherent problems of blockchain systems, Lightning Network, and the steps to further Bitcoin adoption.

Most Blockchains Have Scalability Issues

I guess the most obvious problem we have is the scalability of blockchain systems in general. They just don’t scale. For the entirety of my Ph.D., I tried to find a solution to scalability issues. What I settled on, in the end, was this layer 2 or off-chain protocols. They scale much better than having stuff on-chain.

Another problem is energy consumption. It would be nice to have a system where the work you performed to secure the network also had other use cases. I did not make any progress there.

That was probably more than I could achieve

We Need More Use Cases for Proof-of-Work

The properties of Proof-of-Work are pretty restrictive in that you can’t really reuse that word for much else. I think the only example of a useful Proof-of-Work besides securing the network that I found is Primecoin, which basically finds prime numbers. The question is how useful are prime numbers.

It’s really hard to inject usefulness into Proof-of-Work because there are a few properties that you need from a PoW system. Namely, you need to have some way of committing to the transaction data you want to validate, it has to be scalable in that we are targeting one block every 10 minutes.

I think to call it waste is a bit of a strong word. PoW is useful in that it secures the network but it would be nice to have additional use cases for it as well.

Lightning Network and Bitcoin Adoption

I think Lightning is definitely a good development for Bitcoin adoption because it adds many more use cases to what we can do with Bitcoin. We can do micropayments down to a very small amount. We can have real-time payments. We have the ability to use the scarce resources that we have in Bitcoin, namely the block space, much more efficiently. I think it’s these incremental but still very important features that make Lightning important for the adoption of Bitcoin.

It’s definitely not going to replace Bitcoin but it adds use cases. It makes it more useful.

For Lightning Network to actually work we needed to have SegWit activated. The way we handle transactions in Lighting is that we have this chain of transactions that is unconfirmed at any point in time. If we have transaction malleability in the system, we might break this connection from one transaction to another and suddenly you don’t have a solution on how to handle funds in this transaction.

When Litecoin was going to activate SegWit before Bitcoin, I sat down and asked: “how hard can it be to port Lightning onto Litecoin?” It’s really easy, so, a few hours before activation, I contacted some other developers and asked if they wanted to do the first-ever main net Lighting transaction with me. Sadly, I was a bit too late.

Lightning’s Spontaneous Payments vs. Invoice

Spontaneous payment is a method for us to send a payment without having to exchange an invoice beforehand.

Currently, the way we use Lightning is like this: I go to a vendor and put something on the counter, then they create an invoice for me and I scan that invoice to pay. That’s very important for the Lightning protocol because the way we ensure that the payment actually goes through is by having this setup using that invoice first.

With spontaneous payments, we can do something without this setup. Let’s say I want to pay Andrew. I don’t want to talk to Andrew or to get an invoice first but I still want to send them some money. I know their name or node identity and I can create a Lightning payment saying: “hey, please somehow get to Andrew and once you receive the incoming payment I will give you the necessary information to claim that payment as well.” With the invoice workflow, you’d be the one telling me how to send money to you so that you can claim it.

There is also a small difference in the assurances you get from invoice versus spontaneous. If I get an invoice from you and I pay that invoice, I have a way to prove that I paid. I’d have the invoice and a matching secret you generated when creating that invoice. With these, I can then go to court. With spontaneous payments, I don’t have an invoice and therefore I cannot prove to anybody that I did pay.

Watch the full interview on the ForkLog LIVE YouTube channel

Follow us on Twitter and Facebook and join our Telegram channel to know what’s up with crypto and why it’s important.