Bitcoin Lightning Network #3: Paying for goods and services
Lightning Network aims to make micro-payments faster, cheaper, and more secure than zero-confirmation Bitcoin transactions. Is it unfairly easy to pay with Lightning? Andreas goes shopping.
In the second part of my Lightning Network review I became the largest node in the Lightning Network. Today I’ll try to pay for goods and services.
TL;DR: Sending payments using the Lightning Network is cheaper than the regular Bitcoin network, but suffers from routing errors and wallet bugs that make it impractical even for highly technical users.
I have split this review of the Bitcoin Lightning Network into multiple parts for better readability. Subscribe to the newsletter and I’ll tell you when I publish the next part.
Parts of the review
SatoshiTweet lets the user pay a small amount of bitcoin to send a tweet from the SatoshiTweet account. They only accept Lightning Network payments.
I write a message encouraging people to connect to my Lightning Network node.
I click the Pay 2020 satoshis to Tweet button.
I click the button a few more times. The error remains the same. I look in the Google Chrome network inspector. SatoshiTweet is returning a generic
500 Internal Server Error response.
Back in my
lnd dashboard channels are still being established.
I edit the
lndconfig to increase fees by adding two more zeroes. I restart
There’s at least one dice site using Lightning Network payments, Lightning Spin.
I click the Spin button.
Lightning Spin is glitching. The payment invoice is changing rapidly. I restart my browser and try again.
This time the payment request remains stable. I look in the
lncli help to see how I can send funds.
There are plenty of routes available, at least ten. I use
decodepayreq to see what the Lightning Network payment invoice actually contains.
ubuntu@ip-172-31-33-128:~$ lncli decodepayreq lnbc1m1pd5xfe7pp56spv65p5sr52q8gax8ugkxqj838waadn9qrm7kmdxck3366px4pqdqlf35kw6r5de5kueeq2dcxjm3q95sr27qcqzysmdfw5q5w6npkg7ashyjfqr5qcszdrua0shxq8nzvxq9ee2leucrk5mxjp4tzkkhexgha34dqdsf6ujxd02tjx8f94uzps8nl09apxdgqpmczyv
"description": "Lightning Spin - 5x",
The amount and node identifier are correct. I run the
lncli payinvoice command.
ubuntu@ip-172-31-33-128:~$ lncli payinvoice lnbc1m1pd5xfe7pp56spv65p5sr52q8gax8ugkxqj838waadn9qrm7kmdxck3366px4pqdqlf35kw6r5de5kueeq2dcxjm3q95sr27qcqzysmdfw5q5w6npkg7ashyjfqr5qcszdrua0shxq8nzvxq9ee2leucrk5mxjp4tzkkhexgha34dqdsf6ujxd02tjx8f94uzps8nl09apxdgqpmczyv
The payment will be sent through two hops and pay 1800 msats (0.00000002 BTC or 0.000135 USD).
Back in the web browser the spin has been detected and I have won 400,000 sats (0.004 BTC or $30 USD)!
I click Withdraw.
I must create a Lightning Network payment invoice for 500,000 satoshis. I consult the
$ lncli -h | grep inv
payinvoice Pay an invoice over lightning.
addinvoice Add a new invoice.
lookupinvoice Lookup an existing invoice by its payment hash.
listinvoices List all invoices currently stored.
addinvoice command looks like what I need.
The command has a lot of parameters. I start to experiment.
$ lncli addinvoice --amt 500000
Easy enough. I paste the
pay_req string into Lightning Spin.
The website claims the payment has been sent! I return to
lncli to check the status.
The payment has been received and settled! I’m not entirely sure what that means, but I’ll assume it’s safe.
While I’ve been enjoying gambling,
lnd is still opening channels and approaching 100 channels. I add some more zeroes to the fee settings and restart
The settings are
Blake, the Chief Meme Officer of Shitcoin.com quickly designs a 1000x800 pixel version.
I find a tool that converts uploaded images to Lightning Network invoices to paint pixels on Satoshi’s Place.
I decide to pay all eight invoices in one command.
The first few Lightning invoices pay quickly and the image starts appearing on Satoshi’s Place.
The bottom of the picture never appears. Back in
lncli there are several error messages.
I retry the invoice corresponding to the bottom right of the image. The
TemporaryChannelFailure has become a permanent channel failure. I restart
lnd, which as this point must be terminated with the
kill command as opposed to stopping normally.
I ask on the Lightning Network Slack chat. They recommend I establish channels manually to Satoshi’s Place or to users that have channels to Satoshi’s Place.
I take a few hours break to have dinner with some friends.
After dinner, my image has been vandalized.
I reset the fee settings hoping it will alleviate the issues I have with sending payments and restart
lnd which is currently eating most of my CPU. I make one last attempt at opening some channels.
It’s late and I don’t want to diagnose any more. Perhaps I’ve been excluded from the network?
Bitrefill is a service that lets you buy gift cards and phone top-ups with Lightning Network payments.
Their website also offers Reddit Gold. I click to find out more.
I run the
lncli payinvoice command to pay the invoice.
The command completed without errors. I return to the Bitrefill website.
Looks good! I check on Reddit.
The Blockstream Store
I click Proceed to Lightning Payment.
And pay using
The command hangs for five minutes. I terminate it. Restarting
lnd and retrying does not help.
Perhaps the problem is with
Zap Wallet (Desktop)
In an attempt to buy the hoodie I check out the Zap Wallet after it was recommended in the Lightning Network Slack chat. I visit the website.
The Zap Wallet website is minimalistic and sleek. I press Download Desktop Wallet.
The most recent release of Zap Wallet was nearly six months ago, in February 2018. There is commit activity, but mostly minor and cosmetic fixes. I download
v0.1.1-beta for macOS.
The Zap Wallet loading spinner indicates loading is 73% completed. I take a break.
After 15 minutes the progress bar is still on 73%. The Lightning invoice for the Hoodie will expire soon.
My Lightning Network invoice in the Blockstream Store expires.
I take a break.
Eclair Wallet (Android)
Another wallet that’s been recommended is the Eclair for Android. I find it in the Google Play Store and download.
I accept the warning and look around in the Zap Wallet for a way to fund the wallet. There must be on-chain BTC in the wallet to pay for fees to establish payment channels.
I send enough funds to pay for the hoodie from my other wallet, Mycelium.
I wait for the funds to confirm. Next, I will open a Lightning Network channel.
Eventually my funds confirm. I open a channel to
lnd.shitcoin.com, which is now the largest hub in the Lightning Network, approaching 50% of the network capacity.
After some more waiting, the channel shows as Normal. I scan the Blockstream Store Lightning Invoice QR Code with my phone and press pay.
Is the payment routing failing because
lnd.shitcoin.com does not have a route to the Blockstream Store Lightning node? It’s hard to believe, but I’m desperate.
My Eclair Wallet has no more BTC to open a channel directly with the Blockstream Store. I decide to open a channel from
lnd.shitcoin.com to the Blockstream Store. This way the payment can go from my Eclair Wallet to
lnd.shitcoin.com and from there to the Blockstream Store.
The Blockstream Store does not announce its Lightning Network node connection information on its website. I ask around.
I open a channel from
lnd.shitcon.com to the Blockstream Store node with enough funds to cover the hoodie.
After the Lightning Network funding transaction has confirmed, the Blockstream Store Lightning Network invoice has expired again. I re-enter my billing and shipment information and press check out.
A new invoice has been generated. I scan its QR code with my Eclair wallet and press Pay.
I give up on buying the BlockStream hoodie for now.
Sending payments using the Lightning Network is cheaper than the regular Bitcoin network, but suffers from routing errors and wallet bugs that make it impractical even for highly technical users.
In part four I’ll decide what to do with my Lightning Node after the review is published. Is it safe enough to keep online? Will it ever become profitable Subscribe to the newsletter below to find out.
See you back here for part four, blockchainers!
About The Author
Follow me on Medium and Twitter for more reviews.