Giter VIP home page Giter VIP logo

lntop's Introduction

  __  __     ______     __         __         ______
 /\ \_\ \   /\  ___\   /\ \       /\ \       /\  __ \
 \ \  __ \  \ \  __\   \ \ \____  \ \ \____  \ \ \/\ \
  \ \_\ \_\  \ \_____\  \ \_____\  \ \_____\  \ \_____\
   \/_/\/_/   \/_____/   \/_____/   \/_____/   \/_____/

https://edouard.paris

lntop's People

Contributors

darwin avatar edouardparis avatar georgetsagk avatar hieblmi avatar ibz avatar juhi24 avatar mmilata avatar rkfg 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

lntop's Issues

Sorting feature

Is there an option of sort especially the channel view per column? E.g. sort per Gauge level, Local funds...

Hangs with blank screen

I like the idea and look of this but can't get it to work with lnd 0.10.4 (go 1.14.6, macos). Just hangs at startup with a blank screen. Using it with a readonly macaroon if that makes any difference.

Feature Request: Add attributes to [channels] header

Hello,

The current header bar in lntop looks like this:

 The Wall lnd-v0.14.2 bitcoin mainnet [synced] height: 731695 peers: 153 

 [ Channels ]                                                                  [ Wallet ]
 balance:                                                                balance:   
 state  : 150 active 0 pending 1 inactive
 gauge  : [|||||||||||         ] 58%

Would it be possible to add some attributes here?

  1. Change "inactive" to "disconnected" for clarity
  2. Add "Disabled remote" to indicate which peers have disabled a channel
  3. Add "Disabled local" to indicate which channels are locally disabled

Thanks,
DEK

Log file of routing stream

The routing view is amazingly useful. I'm trying to figure out how to view a log file of the routing stream, shortened perhaps to the latest 2000 lines. Is this possible? Seeing a history of attempted routing events would be extremely useful for informing fee rates. Thanks again for this.

Wrong documentation

lntop --help shows --config value, -c value verbose. I expect "verbose" to be replaced by some meaningful description.

panic: send on closed channel

A panic I just saw to be investigated:

panic: send on closed channel

goroutine 31 [running]:
github.com/edouardparis/lntop/pubsub.withTickerInfo.func1({0x11b9cf0, 0xc0001ac000}, {0x11bf918, 0xc0001819f0}, 0xc00043d360, 0xc000182e01)
	/home/xxx/lntop/pubsub/ticker.go:44 +0x205
github.com/edouardparis/lntop/pubsub.(*PubSub).ticker.func1()
	/home/xxx/lntop/pubsub/ticker.go:27 +0x130
created by github.com/edouardparis/lntop/pubsub.(*PubSub).ticker
	/home/xxx/lntop/pubsub/ticker.go:18 +0x133

Question: binaries releases planned?

Hi Edouard, remember #16? :)

We're currently updating the RaspiBolt v3 bonus guides. The guide on lntop uses the binaries, and is still on version 0.1.0. I noticed that you recently released lntop v0.2.0, but there are no binary files.

Current pull request: raspibolt/raspibolt#811

Do you plan to provide binary releases? For the RaspiBolt v3 guide, ARM64 would be especially interesting.

If not: no problem. Then we'd need to rewrite the guide for users to compile the tool themselves. Not as easy, of course, but doable.

Remove config file creation at startup

After thinking more about it, the .lntop/config.toml creation at start up was a mistake which should be fixed in next versions.
I think everything needs to be more explicit and reflects the lncli behaviour:
https://github.com/lightningnetwork/lnd/blob/master/cmd/lncli/main.go#L263

  • lntop: search for config file in .lntop (for retro compatibility), starts lntop with all default values if no file is found
  • lntop --rpcserver=<...> --tlscertpath=<...> --macaroonpath=<...> starts lntop with specified values
  • lntop --conf <...> starts with the config values

The user then creates an alias the .bashrc according to his needs.
(tldr: lntop should not create a default config file "polluting" user config)

Offline/unreachable peer vs. disabled channel?

QQ, if lntop shows inactive as the status of a channel, my understanding is that this could mean one of 4 things:

1a) The other node is offline or some connection problem between them and us (e.g., broken Tor circuit)
1b) We are offline (and maybe them too)
2a) They disabled the channel (lncli updatechanstatus --action disable xyz xyz)
2b) We disabled the channel (and maybe them as well)

Would it be possible to differentiate at least some of these cases, given some can be fixed while others can not be fixed by us?

E.g., when I nmap [1] the nodes behind channels that are shown as inactive, I noticed that scenario (A) usually means that there's a connection problem, whereas (B) means that one of the parties has disabled the channel (=not much we can do, if it was them).

(A) Peer is probably offline

(B) Peer has probably disabled the channel

I'm not sure how much information lnd exposes, but if we could at least get the IPs / Onions of our peers, then we could make lntop aware of the true connection state and decide what status to show.

[1] Command: proxychains4 nmap -Pn -p 9735 XYZ.onion

git.schwanenlied.me missing

When running:
"go build" in lntop I get this message:

go: git.schwanenlied.me/yawning/[email protected]: git fetch -f git://git.schwanenlied.me/yawning/bsaes refs/heads/:refs/heads/ refs/tags/:refs/tags/ in /home/lnd/go/pkg/mod/cache/vcs/7eea7e6da5639dca452594d1b27f1f302ecc350d3818bf7255e110b8cdc8d151: exit status 128:
fatal: unable to look up git.schwanenlied.me (port 9418) (Name or service not known)

Now yawning has a mirror at https://gitlab.com/yawning/bsaes, but how do I use that in "go build"?

lnd-v0.11.99 mainnet [syncing] after new block

When lntop starts it shows status as [synced] in green, but since the lnd 0.11.99 tag, after a new block, lntop will then show [syncing] in orange and never return back to [synced] in green even though LND is synced.

$ lnd --version
lnd version 0.11.99-beta commit=v0.11.0-beta-90-g8668248d96a0531075513c8c32a5d3f63e325483

$ lntop --version
lntop version v0.1.0

Update actions in channel view

I am thinking of editing capabilities in the channel view. So far lntop is a read-only viewer but it could be very convenient to have actions like 'updating channel params' or 'closing channels' etc.. By clicking 'Enter' on the different fields a input/confirm dialog would pop-up:
image

feature-request: Live search in alias column

It would come in handy to be able to search in the alias column. Maybe accessible via a shortcut(Key+F) the cursor would jump to the first match and would adjust its position according to the input from the user.

Make lntop process terminate when lnd becomes unreachable

I noticed that lntop just hangs if lnd crashes or otherwise becomes unreachable. Besides, it still keeps hanging and doesn't recover when lnd becomes reachable again after a while.

That makes it difficult to rely on lntop alone for visual status monitoring. I've had a few situations where everything seemed great, but in realitylnd was long dead already and hadn't come back up (e.g., when I was out of disk space ...).

No output, no logs

I compiled lntop with go1.11.5. Running it on my node, where the files mentioned in the default config exist, I don't get any output. The .lntop directory is created, but the log file is empty.

The process runs, but doesn't show anything. CTRL+C stops the process, but this doesn't work all the time (I have to kill it).

Filters on routing view

It would be very nice if I could only see the forwards and ignore the rest or something similar.

Changing keyboard shortcuts from Function Keys

On MacBook Pro's with Touch Bar, if you're customized (Using BTT or something like that), you may no longer have access to function keys without using an on-screen keyboard.

I'd like to suggest that there be a way to change the keyboard shortcuts to NOT use Function keys, otherwise this is a total pain in the butt!

I might be the only one, though, who doesn't have function keys..

Routing efficiency column

After adding the NUPD column I often think about using it to rank the channels in order of their actual usefulness. NUPD represents the amount of attempts, not just successful forwards and it actually consumes disk space every time it increments. Though it's less of an issue in 0.15.0 after some great optimizations.

The main issue here is all the rebalancing or probing attempts, you can easily see them in the log as the amounts are very round (50/100/400k etc.) and 99.999% (use any amount of 9s lol) of them fail. So all they do is wasting your disk space. I don't think one should raise fees to prevent these from even going through the node, after all some of them succeed and earn you fees and you can't know beforehand which those are. But it's an interesting metric nevertheless as it represents how busy that particular channel is.

So I'm thinking about a formula that can represent the useful traffic share from the forwarded amounts and update count. The simplest would be (sent+received)/nupd in sats/update but it could be misleading compared to busier channels if nupd is low. The idea is to quickly locate inefficient channels that should be closed. If you only have a few dozens of channels it can be done manually just by sorting by NUPD and looking at the bottom but if there are many channels it becomes complicated. There are other tools like faraday (by Lightning Labs) but they don't have an UI and just spew a big JSON.

Another metric to consider might be the channel lifetime in blocks. So the result could be measured in sats/update/block or something like that. Maybe make two metrics, sats/block and sats/update. Some channels might have a lot of updates but only because they were opened long ago.

Ideas are welcome!

`go.mod` containing one or more replace directives

Hello,

Running go install github.com/edouardparis/lntop@latest gives me the following error:

go install github.com/edouardparis/lntop@latest: github.com/edouardparis/[email protected]
        The go.mod file for the module providing named packages contains one or
        more replace directives. It must not contain directives that would cause
        it to be interpreted differently than if it were the main module.

Go version:
go version go1.16.7 freebsd/amd64

Is this related to the OS, or maybe there's something up with my Go installation?

Unable to run on Windows

Go 1.14
Windows 64bit

Error on startup:

$ lntop
2020/03/15 10:11:45 Near line 4 (last key parsed 'logger.dest'): expected eight hexadecimal digits after '\U', but got "C:\\Us" instead

Crash when trying to run the compiled binary

Hi!
Got this issue:

~/go/bin$ ./lntop
panic: runtime error: integer divide by zero

goroutine 7 [running]:
github.com/edouardparis/lntop/ui/views.gaugeTotal(0x0, 0x10cbc78, 0x0, 0x0, 0x11, 0x4b)
        /home/ubuntu/lntop/ui/views/summary.go:89 +0x30a
github.com/edouardparis/lntop/ui/views.(*Summary).display(0xc0002488a0)
        /home/ubuntu/lntop/ui/views/summary.go:71 +0xbd0
github.com/edouardparis/lntop/ui/views.(*Summary).Set(0xc0002488a0, 0xc000294240, 0x0, 0x1, 0xa9, 0x6, 0x0, 0x0)
        /home/ubuntu/lntop/ui/views/summary.go:49 +0x226
github.com/edouardparis/lntop/ui/views.(*Views).Layout(0xc000246600, 0xc000294240, 0xa9, 0x12, 0xa90012, 0xc0002f3c10)
        /home/ubuntu/lntop/ui/views/views.go:53 +0xb6
github.com/edouardparis/lntop/ui.(*controller).layout(0xc000260b20, 0xc000294240, 0x12, 0xc0002f3c78)
        /home/ubuntu/lntop/ui/controller.go:23 +0x4b
github.com/edouardparis/lntop/ui.(*controller).layout-fm(0xc000294240, 0x0, 0x0)
        /home/ubuntu/lntop/ui/ui.go:26 +0x34
github.com/jroimartin/gocui.ManagerFunc.Layout(0xc0003c8540, 0xc000294240, 0x0, 0xc0002f3ce0)
        /home/ubuntu/lntop/vendor/github.com/jroimartin/gocui/gui.go:329 +0x30
github.com/jroimartin/gocui.(*Gui).flush(0xc000294240, 0x2, 0xc000294240)
        /home/ubuntu/lntop/vendor/github.com/jroimartin/gocui/gui.go:435 +0xce
github.com/jroimartin/gocui.(*Gui).MainLoop(0xc000294240, 0xb4b4a0, 0xc000260b20)
        /home/ubuntu/lntop/vendor/github.com/jroimartin/gocui/gui.go:367 +0xbd
github.com/edouardparis/lntop/ui.Run(0xbdca00, 0xc000036098, 0xc00023ec60, 0xc000084780, 0x0, 0x0)
        /home/ubuntu/lntop/ui/ui.go:35 +0x1b9
github.com/edouardparis/lntop/cli.run.func1(0xbdca00, 0xc000036098, 0xc00023ec60, 0xc000084780, 0xc000173e30)
        /home/ubuntu/lntop/cli/cli.go:64 +0x6a
created by github.com/edouardparis/lntop/cli.run
        /home/ubuntu/lntop/cli/cli.go:63 +0x14e

Machine details:

~/go/bin$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic
~/go/bin$ uname -a
Linux ip-10-0-11-213 4.15.0-1035-aws #37-Ubuntu SMP Mon Mar 18 16:15:14 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Compiled with:

cd lntop && export GO111MODULE=on && go install -mod=vendor ./...

I did export LND_HOME=~/.lnd before running lntop. I got my ~/.lntop/config.toml properly setup

[logger]
type = "development"
dest = "/home/ubuntu/.lntop/lntop.log"

[network]
name = "lnd"
type = "lnd"
address = "//127.0.0.1:10009"
cert = "/home/ubuntu/.lnd/tls.cert"
macaroon = "/home/ubuntu/.lnd/admin.macaroon"
macaroon_timeout = 60
max_msg_recv_size = 52428800
conn_timeout = 1000000
pool_capacity = 3

Is there any way to debug this? Thanks!

Question: plans for ARM binaries?

Hej Edouard, thanks for this nifty tool! Do you plan to provide binary releases for the ARM platform, eg. ARMv7 for modern Raspberry Pis?

I think these are a primary target group for a tool like this, and I'd like to include it in my RaspiBolt guide. Compiling from scratch, however, is a bit of a stretch for a Beginner's guide.

Some node aliases are trimmed

2022-09-16_19-50-57
Not sure what causes it, needs investigation. should be 電母 and DiamondHands💎 should be DiamondHands💎🙌. Aliases are currently shortened to 24 bytes which is already incorrect since this can break multibyte characters (happens with JoltFun node, for example). I changed it to 24 runes, a trivial change like alias = string([]rune(alias)[:24]) but it still cuts these characters. Plus, emojis are two characters wide so it's still not as straightforward, can shift other columns I think.

fees: IN/OUT fees flipped depending on local/remote initiation of a channel

There seems to be a bug in my implementation of displaying channel fees: #72

The IN/OUT fee columns are flipped I believe depending on who the channel was opened by.

If remote opened to us the channelPolicy_1 refers to their incoming fee rate but we currently treat channelPolicy_1 as outgoing only. When we open a channel respectively flips that view.

I am confirming and work on a fix.

Unexpected crashes/exits

Switched to the routing view from channels and lntop crashed with this:

panic: send on closed channel

goroutine 14 [running]:
github.com/edouardparis/lntop/pubsub.(*PubSub).routingUpdates.func1(0x4000040f60, 0x400047c6c0, 0x4000040de0)
        /home/rkfg/soft/svn-soft/lntop/pubsub/pubsub.go:99 +0x3c
created by github.com/edouardparis/lntop/pubsub.(*PubSub).routingUpdates
        /home/rkfg/soft/svn-soft/lntop/pubsub/pubsub.go:96 +0xac

There are other cases of it exiting with no panic messages anywhere, I don't see any patterns but it often happens when I connect to the node from my phone and attach a tmux session where lntop runs. The terminal size obviously changes to the phone screen size and sometimes it causes lntop to quit (or crash silently as there are no messages in terminal and log) when I switch between the tabs or scroll the window. Doesn't happen often and mostly under these specific conditions.

Proposal: Navigation overhaul

mockup

I propose a rather radical navigation UI overhaul depicted in above partial screenshot. We would get rid of the menu completely. Instead, navigation between views would be completely based on keyboard shortcuts. Hints of the shortcuts would be shown in the footer with the current view highlighted.

I would maybe also get rid of the Enter and Quit hints as these feel quite self-evident and intuitive. Any user familiar with CLI tools such as top, would try <q> or <Ctrl-c> to quit, which are already supported. Optionally, these hints could be left in the footer. What do you think?

Currently, switching to the routing view requires a total of five key presses: <F2> <down> <down> <enter> <F2>. In contrast, in the proposed navigation logic, only one key press is needed, <r>. I think, the former is a representation of GUI style logic while the latter represents a more traditional CLI thinking. This would also simplify the code as we would get rid of the menu view completely.

The above screenshot is from a non-functional mock-up. If this proposal is endorsed by the developers and the users, I will proceed with the actual implementation.

Fix README.md git clone URL

README.md file points to https://github.com/edouardparis/lntop.git to clone the repo. But this only works with your credentials.

$ git clone [email protected]:edouardparis/lntop.git
Cloning into 'lntop'...
The authenticity of host 'github.com (192.30.253.113)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.253.113' (RSA) to the list of known hosts.
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Change it to https://github.com/edouardparis/lntop.git

$ git clone https://github.com/edouardparis/lntop.git
Cloning into 'lntop'...
remote: Enumerating objects: 50, done.
remote: Counting objects: 100% (50/50), done.
remote: Compressing objects: 100% (35/35), done.
remote: Total 2417 (delta 20), reused 38 (delta 13), pack-reused 2367
Receiving objects: 100% (2417/2417), 3.09 MiB | 16.94 MiB/s, done.
Resolving deltas: 100% (817/817), done.

Crash with wallet-balance

I compiled on another node and just copied the binary.

$ lntop wallet-balance
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x72da74]

goroutine 1 [running]:
go.uber.org/zap.(*Logger).clone(...)
	/home/cotto/lntop/vendor/go.uber.org/zap/logger.go:252
go.uber.org/zap.(*Logger).With(0x0, 0xc0000a4c40, 0x1, 0x1, 0x0)
	/home/cotto/lntop/vendor/go.uber.org/zap/logger.go:163 +0x44
github.com/edouardparis/lntop/network.New(0xc0001ceca0, 0xbdbe80, 0x0, 0x0, 0xbdbe80, 0x0)
	/home/cotto/lntop/network/network.go:23 +0x219
github.com/edouardparis/lntop/cli.getNetworkFromConfig(0xc00019b5c0, 0xc0001cdd70, 0x5708a2, 0xc00019b5c0)
	/home/cotto/lntop/cli/cli.go:108 +0xdb
github.com/edouardparis/lntop/cli.walletBalance(0xc00019b5c0, 0xb24d97, 0xe)
	/home/cotto/lntop/cli/cli.go:112 +0x2f
gopkg.in/urfave/cli%2ev2.(*Command).Run(0xc0001b8480, 0xc00019b560, 0x0, 0x0)
	/home/cotto/lntop/vendor/gopkg.in/urfave/cli.v2/command.go:167 +0x709
gopkg.in/urfave/cli%2ev2.(*App).Run(0xc000001c80, 0xc00000c060, 0x2, 0x2, 0x0, 0x0)
	/home/cotto/lntop/vendor/gopkg.in/urfave/cli.v2/app.go:261 +0x675
main.main()
	/home/cotto/lntop/cmd/lntop/main.go:11 +0x4f

[Routing View] Routing events showing up inconsistently

Under the routing menu F2 -> ROUTING the routing events don't seem to persist for long or show up inconsistently. Is this behavior expected or do others see this as a bug too?

Ideally a list of routing events should be appended to with the size of the buffer/file configurable in the config.toml

[Idea] Show other nodes

Kinda insane idea but why not. lnd has a so called Mission Control which is a database of failed and succeeded forwards for other channels in the network. It can be populated during rebalancing since it's a long process of probing multiple routes. lntop can use this data to show estimated channel balances of other nodes. Failed amount indicates there's less than that sats on the "from" side, successful — more than that (the estimation could be like 1.5x of the successful amount). Unknown channels can be shown at 50%.

I don't think this mode would be much useful, it's kind of a gimmick. Still, if you rebalance channels you should have this information and being able to visualize it is kinda cool, especially if you're interested in smaller nodes that can be probed quickly.

Can't see routing view on my node

Hey everyone, I can't find a way to see the routing view, I already have the [views.routing] section on the ~/.lntop/config.toml file and still I don't see this option when I press F2, any ideas?

Captura de pantalla de 2021-08-31 16-12-45

Raspbian still on go 1.11 ... maybe put a disclaimer somewhere?

I assume a good chunk of the lntop users is on Raspbian (Raspberry Pi .... e.g., Raspibolt), and by default Rasbian still ships with go 1.11, which fails to build lntop. Maybe you could put a more prominent explanation somewhere to save people a bit of time.

If it helps someone, I used the below to get a more recent go installed ... don't forget to update your path to include /usr/local/go/bin, and remove your old go (sudo apt remove golang && sudo apt autoremove).

The below downloads binaries, but does not verify signatures by itself!

#! /usr/bin/env -S bash -ex

GO_VERSION="${1}"

if [ -z "${GO_VERSION}" ]; then
    GO_VERSION="1.16.5"
fi

echo -en "\n\nINSTALLING GO ${GO_VERSION} ...\n\n"

# WARNING: DOES NOT VERIFY SIGNATURES!
cd /tmp/
axel --no-clobber "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" || true
sudo rm -rf /usr/local/go || true
umask 022
sudo mkdir -p /usr/local/go
sudo tar -xvf "go${GO_VERSION}.linux-armv6l.tar.gz" -C /usr/local/go --strip-components=1
rm "/tmp/go${GO_VERSION}.linux-armv6l.tar.gz"

Error in log

{"level":"error","ts":1556304206.854988,"caller":"models/models.go:70","msg":"refreshChannels: cannot find Node","logger":"models","pubkey":"03a9d79bcfab7feb0f24c3cd61a57f0f00de2225b6d31bce0bc4564efa3b1b5aaf","stacktrace":"github.com/edouardparis/lntop/ui/models.(*Models).RefreshChannels\n\t/home/cotto/go/src/github.com/edouardparis/lntop/ui/models/models.go:70\ngithub.com/edouardparis/lntop/ui.(*controller).SetModels\n\t/home/cotto/go/src/github.com/edouardparis/lntop/ui/controller.go:74\ngithub.com/edouardparis/lntop/ui.Run\n\t/home/cotto/go/src/github.com/edouardparis/lntop/ui/ui.go:21\ngithub.com/edouardparis/lntop/cli.run.func1\n\t/home/cotto/go/src/github.com/edouardparis/lntop/cli/cli.go:67"}

How to make lntop more accessible in a docker?

Hi
Every time I want to start a new LNDTOP session, I need to first do
export LND_HOME=~/.lnd

And then run it with the longer command, using the full file path.

I wonder if there isn't a way to permanently set the LND_HOME, and also set up a command so I can just type "lntop" in the future.

I was able to do this with bashtop following these instructions (https://bigl.es/tuesday-tooling-on-a-fun-friday-bashtop/), so perhaps it's doable also with lntop - but I don't know, because I didn't try bashtop in a docker.

Layout issues

Thanks, I finally managed to start lntop :) I now notice some things that don't look right.

  • long node names (LN-Fukaya Japan 020c92d71dfe47d4) are shown in full, causing the whole row to look wrong
  • when going to the channel details (ENTER), the last line above the one describing F1/Enter/F10 still shows a channel (the one that is at that position in the list)
  • F1 does not have any effect on my computer

Wrong channel detail when scrolling

  • Run lntop with many open channels.
  • Resize terminal window so that channel list exceeds window height
  • Scroll channel list to bottom
  • Press Enter to get detail

Program displays data for wrong channel. Can be fixed by scrolling up to the first channel in the list.

Zero amounts on receiving in routing view

Not sure we can do much about it. Sending shows fine because it generates a ForwardEvent (see router.pb.go) that has HtlcInfo in it and there are incoming/outgoing amounts so this amount can be displayed. Receiving doesn't generate such event, only SettleEvent which is empty. So there's no way from these events alone to see how many sats you've received.

Just leaving this issue here so it's known. Either we should watch for other events just for this or maybe escalate it to the lnd developers so they add more information to the protocol.

Problem with config file

I installed the program on my umbrel node, but the config file is not created. Can you provide instructions on what I have to do to create the config file and start the program

package github.com/edouardparis/lntop is not a main package

go install github.com/edouardparis/lntop@latest
go: downloading github.com/edouardparis/lntop v0.3.0
go install: package github.com/edouardparis/lntop is not a main package

main.rs should be moved from /cmd/lntop to directory root
use go install ./... for now

Routing view breaks on FEE_INSUFFICIENT events

The new routing view by @mmilata is great, however it becomes unusable on events with details like FEE_INSUFFICIENT NO_DETAIL FeeInsufficient(htlc_amt==7000 mSAT, update=(lnwire.ChannelUpdate) { (a structure dump follows). It looks like this:
2021-06-16_02-01-00

Feature request: list routing entries with most recent first

Hi Team,

Could a feature be added to change the sort order of forwards in the "ROUTING" pane?

My eye is naturally drawn to the top of the page where the rest of the metrics are. It's slightly awkward to look at the bottom of the window to see the latest forward.

I realize this may be a frivolous change in the grand scheme of things, but thought I'd ask anyway.

Feature request -n <number of iterations> command line option

top has an option to run for n iterations:

   -n  :Number-of-iterations limit as:  -n number
        Specifies the maximum number of iterations, or frames, top should produce before ending.

This is useful when passed to other utilities, for example:

$ lntop -n 1 | grep inactive | wc -l
3

[Enhancement] Add inbound and outbound fee rates in channel overview

Displaying channel fees(especially fee-rate in ppm) helps routing node operators to more efficiently take decisions on manual fee rate adjustments.

Proposed below are four new column headers BASE_FEE_IN, BASE_FEE_OUT, IN-FEE(ppm) and OUT-FEE(ppm) that would display incoming and outgoing fee rates in ppm satoshis.

[ Channels ]                                                                                                                   [ Wallet ]
 balance: 1000 (1000|0)                                                                                       balance: 500 (500|0)
 state  : 10 active 0 pending 0 inactive
 gauge  : [|||||||||||||||     ] 75%

STATUS        ALIAS        BASE_FEE_IN IN-FEE(ppm)    BASE_FEE_OUT     OUT-FEE(ppm)         GAUGE                 LOCAL          CAP         SENT     RECEIVED  HTLC UNSETTLED  CFEE   LAST UPDATE     PRIVATE ID         

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.