Lightning Excel Plugin
Speakers: Pierre Rochard
Date: October 26, 2018
Transcript By: Michael Folkson
Media: https://www.youtube.com/watch?v=AXeUZrS-8mE&t=0s&list=PLpLH33TRghT2jmuP9YQRo-e8gk969Q2F_&index=10
Demo
My project is to create a user interface for lightning that might appeal to a different crowd than ours. We’re kind of used to Linux, open source, free software so being in a proprietary environment like Excel is unfamiliar territory for us. And yet I think that there is a large demographic of people who are interested in Bitcoin who work in the business world where they use Excel day to day. They’re interested in experimenting with lightning and going on Y’alls or going on Satoshi’s place and playing around with it. I wanted to give them a UI that went into their environment where they’re most comfortable. So I created this plugin that communicates with lnd. You click on this tab here and you click Set up Workbook and it will populate new worksheets within Excel with different pieces of data. Here you can see that you have your connection parameters and you can connect to a remote node by putting in the macaroon and the TLS cert. The other thing is that you can connect to a local node that is already running. It will check to see if that is going on. If a local node is not already running the add-in has lnd.exe packaged into it so it can spin up a local node. That way you can get on the network very quickly. So you have a number of tabs here. This is just lnd getinfo. You can see your balances. Oh crashed. That’s alright, it’s part of the game right? You’ve got your balances, you’ve got channels, you’ve got a list of payments. And then I have an interface through which you can send your payments. So we start from scratch here again. I really wanted to use Excel as a UI not as a data store. So it is not persisting any information in the spreadsheet, all of that information is flowing from your lnd node. Hopefully we’ll get it to where you can add some custom information inside of lnd to add a label for a payment or something like that. We’ve got balances, we’ve got your open channels here. We’ve got 6 open channels, the list of payments that you’ve sent. This interface is going to need to be iterated on quite a bit. If you’re getting paid to go shill on Y’alls and you’re using Dual all day long to pay your invoices and the Dragon’s Den accountant is like “hey you need to send me your expenses” you can open your spreadsheet here, get all the payments that you’ve made during the day whilst shilling and get them reimbursed. This is the Send Payment so you would go copy an invoice into the payment request here, it will decode it for you. It will try to find a route. Unfortunately I’ve been struggling with the query route, I think I need to poke it some more. Then hopefully send the payment but I’ve been having this bug where the payment is in transition. Unrelated to the plugin but probably also related to the plugin, I need to figure out a way to do retries or figure out how to get the payment routed so it is going to where it needs to go. If the node spun up within the plugin, then you have access to the logs in here that have been streaming in. Since it is actually running on its own in the background, you can’t redirect output from a process that has already started unfortunately. Thank you to Chaincode Labs and John and James for organizing this. I came in with this preconceived notion of what I was going to work on but seeing different ideas pop up through the week was awesome to iterate and try out different experiments on this platform.
Q & A
Q - How’s the C## developer ecosystem for Lightning and Bitcoin?
A - So Nicolas Dorier has a library called NBitcoin. I actually turned out to not need to use it all. Because lnd is so full featured, it really handles all of the annoying serialization or whatever it may be. And then with lnd, it should be easy but it was actually very hard to take the rpc.proto file and output the C## client library that I wanted. Once I got it working, it was fine but that was a very finicky command and it’s up on my GitHub if you want to go see that. Eventually, I imagine that lnd will ship with the corresponding code every time so you don’t have to run the gRPC generate command. But C## is a great language and I’ve enjoyed it a lot. It is in between C++ and Python; types but also feels a little bit more dynamic.
Q - What next?
A - So that’s a really tough question. I fear releasing this into the wild because I will be doing front-line customer support for Windows users until my early retirement age at 55 or something. I’ve been thinking about how to do this in a sustainable manner. One approach would be to have the binary behind a paywall so end users have to pay to get support. I think that would probably be a more sustainable approach than trying to hand hold a bunch of people as they onboard onto lightning. The question is how useful is this to Windows users or do they prefer an Electron app and this is just a little fun project. That’s going to be a test of the market. I’ve also had some thoughts about how through this interface… Right now you’re just communicating over gRPC with your lnd API but you could be communicating with other APIs. For example you could have SuredBits come out with an Excel plugin that allows you get sports stats and the payment is actually handled in the background because it is communicating with my plugin to handle that transaction. Then you could be sports stats analysis in Excel and paying on the fly that away. Or perhaps you’re trading on an exchange and you want to be trading within Excel. You could have a live data feed coming and you could be putting in market orders where you’re not keeping your coins on the exchange, you just send them to the exchange the instant that you’re buying. There’s interesting opportunities in that area. Traders love using Excel so it’s in their native environment.
Q - Could you hide or abstract that away and make it more user friendly for accountants?
A - I didn’t want this to be user friendly. I wanted it to present as much data as possible and really satisfy the curiosity of the pioneer users coming on now. This is not going to be in the accounting department of a Fortune 500 company tomorrow. This is not going to be used for enterprise payments any time soon. This is for someone who maybe they own the Bitcoin ETF and they don’t actually own any Bitcoins at all but they work in finance and they work in Excel and they have Windows. They see Satoshi’s Place and they’re like I want to get in on that fun. This is a one-click install where they can be in lightning.
Q - If I’m an average guy, what are the exact steps I would need to go through to get this plugin? Theoretically just going to the Excel repo and then syncing something like Neutrino in the background? Is that as streamlined as it could get to?
A - Yes you would just download setup.exe. You’d run that. You would open Excel. You’d hit Set up Workbook. Connect. And you’re online. There might be some lag from syncing. The other next step is having Neutrino on mainnet. Right now Neutrino is only on testnet. To get this working, you’d have to have your node connected to btcd or something else. I’m looking forward to seeing Neutrino on mainnet.