How To Ride The Lightning!
With the tongue firmly in cheek ;-), this is a how-to guide on operating a LND node, with ‘Ride The Lightning’ Web UI, running on LND/Bitcoin.
For the un-initiated, ‘Ride The Lightning (RTL)’ is a platform agnostic web application to manage the LND node operations. Introductory post here. Please note, the application is currently in alpha testing phase, and should only be run on the testnet.
This guide assumes you have setup the required application stack i.e. Bitcoind/LND/RTL. In case you need help with setting up Lightning network node with the complete app stack, you can follow the below guides:
Setup on Windows:
A guide for testing RTL web UI with LND and Bitcoin on Windowsmedium.com
Setup on a Raspberry Pi:
Setup Bitcoin + LND: https://github.com/Stadicus/guides/blob/master/raspibolt/README.md
With the setup of the application stack complete, you need to fire up LND and create a LND wallet with ‘lncli create’ on the command line. Once this is done, you are ready to start using the ‘Ride The Lightning’ app to manage your lightning node operations.
The rest of this post focuses on the UI features available to the users and how a new user can get started on RTL. The high level list of UI feature available on RTL is below:
- Home Page (Dashboard and Node Status)
- LND Wallet (Wallet functions available on LND)
- Peers (Manage LN Peers)
- Channels (Dashboard, Management)
- Payments (List Payments, Verify and Send Payments)
- Invoices (Generate Pay request, List Invoices)
The Home page provides an overview of the critical parameters for your node, which you need to monitor. Parameters like Wallet Balance, Number of Peers on the network, Number of Active channels, Channel Balance and Chain Sync status. Additionally, it also displays the fee report and network information from your node.
To become operational on lightning network, you need to follow the below three steps:
Step1: Fund Your Node
To get started on the lightning network node, the first step is to fund your node. You can access the wallet features on RTL, by clicking on ‘LND Wallet’ menu. You can generate a new address to deposit your coins (warning: this is in alpha testing phase, so please run the node on testnet and fund with test BTC).
In the the ‘Receive Funds’ section, you can select the address type as ‘np2wkh’ and click on ‘Generate Address’ to generate a new address. Its advisable to generate a new address every time you are adding funds to your node. Once you have added some funds to your node, the funds will initially show up under the ‘Total Balance’ and ‘Unconfirmed Balance’ panes, and will show up under the ‘Confirmed Balance’ after the funding transaction is mined and confirmed.
You can also use the ‘Send Funds’ section to move coins out of your node. Please note that only the funds available under ‘Confirmed Balance’ can be moved out of your node.
Once the node is funded you are ready to connect with peers and open channels.
Step 2: Connect with Peers
Connecting with peers is the next step required to become operational on lightning network. When LND is instantiated, it tries to find peers automatically to connect with your node, which you can view on the Peers screen. You can also locate peers from other sources like yalls and 1ml.com to connect with.
Lightning Network Search and Analysis Engine1ml.com
Publish and read content using micro-paymentstestnet.yalls.org
To connect with a peer you need a public key of the peer and you can enter that key on the ‘Add Peer’ panel, where it prompts for ‘Lightning Address’ and click on ‘Add’. If the peer is live and available, you will get a ‘Peer Added Successfully’ message and you can refresh the screen, to view the peer on the list below.
You can also click on any row in the list, to view the detail of the connected peers.
Next step is to open channels. You will be able to open channels, only with the connected peers.
Step 3: Open Channels
Channel Management has two screens for channel status and channel management.
The Dashboard screen provides an aggregate count of the channels which are active, inactive or pending. It also aggregates the total balances on the active channels and shows a comparison of local and remote balances. This view provides an insight into how unbalanced your channels are and which side (local or remote) you need to focus on. The objective should be to keep both at par, for efficient routing.
Hint: To get remote balance up, you need to actively advertise your node, so that others can connect and open channels with yours.
Channel Management screens allows you to open/close channels with your connected peers and also shows a list of active and inactive channels.
A channel can be opened with a peer in the ‘Add Channel’ section of the screen. Select the peer from the Alias drop down menu, provide the amount in satoshis, you need to commit to the channel and click ‘Open’. If the channel is successfully opened, you will get a confirmation. The channel will not appear on the list, until the funding transaction is mined on the chain and confirmed. Once the transaction is confirmed you can view the channel in the list and click on the row to open the details of the channel.
To close a channel, you can click on the icon on the ‘Close’ column of the channel row. If the channel is active, it will be closed immediately. But if the channel is inactive, the application will ask for a confirmation to force close. Please note, upon force closure of the channel, your funds in the channel are not available to you immediately, and you will have to wait for some time to get the funds back in your wallet.
Once you have the channels open and active, you have a functioning node, which allows you to make payments, route payments and generate invoices. Effective node management requires active monitoring of all the important parameters like
- Node sync status
- Connected Peers
- Channels (Monitoring inactive channels, ensuring channels are balanced)
- Fee Report for routing fee earned.
Rest of the post, will provide an overview of additional features like making lightning payments and generating invoices.
Making Lightning Payments
Payments has two screens for verifying & sending payments and listing payments.
a) Verify and Send Payments
You can enter the lightning payment requests in the ‘Payment Request’ and click on ‘Decode’ to see the details of the invoice being paid.
If you click on ‘Send Payment’, the same invoice will be paid, after you have confirmed. Upon successful payment, you will get a confirmation message like the one below:
b) List Payments
All the payments made successfully by your node are listed on this screen, you can click on each row to view the details of the payments.
This section allows you to generate invoices for any amount that you wished to get paid for. You can enter the memo text (optional) and the invoice amount in satoshi (optional) and click on ‘Add’ to generate the invoice.
Upon the generation of the invoice, you can copy the payment request from the confirmation screen and share with the party, from whom you want to get paid. The confirmation screen will look like below:
Upon refreshing the screen, you can see the generated invoice added to the list. You can click on the row to view the detail of the invoice and also check the status.
There are some other cool features on the app like skins customization for look n feel preference and toggling of the units from BTC to Sats, which I am not getting into, as its pretty intuitive.
We are actively working on adding more features on the app, to make it more complete from the point of the view all the functionality available on LND. While also working on improving the usability of working with a full node. We will keep this post active and fresh as more features are rolled out on the app.
We look forward to feedback from early alpha testers who can help us make the application better and also make lightning network more and more usable for anyone and everyone.
Please feel free to open issues on our github (referenced below) if you encounter any problems. We also maintain an active feature list and roadmap on our git repo.
That’s all for now. If you have any questions or feedback, please leave a comment or find me on twitter (@Sauby_k).
Lets Ride The Lightning, together! :-)
RTL Build. Contribute to ShahanaFarooqui/RTL development by creating an account on GitHub.github.com