Sunday, June 30, 2019

Raising the Baby Lightning Network

One of the key developments in modern technological advancement has been the ability to transfer important information between automated systems.  The systems that motivated this post are Lightning Network Clients ("LNCs").  I run two flavors of such clients, Lnd and Eclair.  Both of these software programs implement the "BOLT Protocol" ("Basis Of Lightning Technology") and so each of them must store some information.

These two flavors of LNC are already able to transfer some information between each other because BOLT requires them to have that ability.  That's the only way they can participate in the Lightning Network.  There is also information which the software cannot transfer from one flavor to the other, and that information represents, at a minimum, the secret information that each LNC must hold in order to protect itself and be able to manage "Lightning" channels.

I'm writing this post to motivate myself and interested readers to help to create a standard way to represent all the information that LNCs must hold in order to function.  Once such a standard is in place, anyone can write a program to read the information from their favorite LNC and save it in the standard format, or read the information from the standard format and write it into their favorite LNC.  This solves a problem I have, which is that I have channels on my Eclair node that I would like to run from my Lnd node.

The next step for me is to examine the structure of the backups that Lnd and Eclair make.  These backups necessarily hold all the information required.  It's entirely possible to use the code and the structure of the backups to write a program that will convert between Eclair backups and Lnd backups.  However, such software will only work for the specific versions and flavors of LNCs for which it is written.  I'd prefer to see a common format for the backup to make it easy for Lightning Network Enthusiasts to switch between LNCs.

No comments: