This story of feline acquisition begins with the demonstration of v0.5 of the C lightning prototype, a lightning-fast micropayment system we’ve been working on here at Blockstream. To test the impending prototype, we set up a web server to create invoices for test bitcoin payments over the lightning network, and in return to offer a cat, or at least an ASCII cat picture.
Dr. Christian Decker, another Blockstream developer working with me, purchased the feline picture using 0.01 test bitcoin to open a lightning channel with the server, which was mined in test block 928335. After a single confirmation, he paid the invoice with a 100 satoshi transfer. Afterward, he accessed the link to find his cat picture. He discovered it was an ASCII picture, with a nice bonus. Two cats! Christian promptly opened another node, connected to the first node, and bought a second copy of the cat picture by routing through the previous node.
What Happened Behind The Scenes?
A Digital Ocean server runs Apache, bitcoind, and lightningd. When accessed, a CGI script calls ‘lightning-cli invoice 100000’ to create an invoice, which is presented to the user. The user clicks through a unique link, and if ‘lightning-cli listinvoice’ indicates that the invoice was paid, the script presents the picture.
This is the first end-to-end test of a lightning micropayment network, including invoicing, multi-hop payment, and item delivery. It is very different from Acinq’s recent simulation of a lightning routing algorithm called Flare. Their work shows how, by way of simple analogy, one can create a streetmap to get from A to B in an efficient way, while the test we’ve demonstrated here with v0.5 of the C lightning prototype has us actually walking that path on the street.
What’s Next?
We found a few bugs in corner cases and hit some known FIXMEs, but also made lightningd more robust against misconfiguration. There are a few rough edges that we’d still like to smooth and some documentation that we’d like to write before the 0.5 release. Then, we want to create libraries to allow web developers to play with constructing their own cat picture stores!
In the meantime, here’s a short video that shows this working. The low production value fits with the ASCII art.