Bitcoin Forum
November 18, 2024, 08:29:37 AM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
   Home   Help Search Login Register More  
Pages: « 1 [2] 3 4 »  All
  Print  
Author Topic: bitcoind-ncurses: Terminal front-end for bitcoind  (Read 11337 times)
spin
Sr. Member
****
Offline Offline

Activity: 362
Merit: 262


View Profile
July 24, 2014, 07:31:58 AM
 #21

Thanks for this.  Tested it out and it works well. 
I have disabled wallet on bitcoind.  Perhaps the app can detect that when going to the wallet screen?

What happens? Does it simply display nothing, or is there some sort of error/crash? I can't test right now.

Not near it right now.  It doesn't crash, but I think it says transaction not found or something similar, and asks for a txid.

The country of peers based on geoip would be nice to have on the peers screen.

See this:
These are my peers:

Code:
$ perl
use warnings;
use strict;
use JSON;

my $json = qx{bitcoin-cli getpeerinfo};
my $peers = from_json $json;
my %countries;
foreach my $peer (@$peers) {
    my $ip = $peer->{'addr'};
    next if -1 != index $ip, 'onion';
    next if -1 != index $ip, '127.0.0.1';
    $ip =~ s/:\d+$//;
    my $country = qx{geoiplookup $ip};
    chomp $country;
    $countries{$country}++;
}
foreach my $c (reverse sort { $countries{$a} <=> $countries{$b} } keys %countries) {
    printf "%2d %s\n", $countries{$c}, $c;
}

Code:
46 GeoIP Country Edition: US, United States
 7 GeoIP Country Edition: CN, China
 7 GeoIP Country Edition: DE, Germany
 4 GeoIP Country Edition: NL, Netherlands
 4 GeoIP Country Edition: CH, Switzerland
 3 GeoIP Country Edition: JP, Japan
 3 GeoIP Country Edition: RU, Russian Federation
 2 GeoIP Country Edition: AT, Austria
 2 GeoIP Country Edition: FR, France
 2 GeoIP Country Edition: IP Address not found
 2 GeoIP Country Edition: PL, Poland
 2 GeoIP Country Edition: RO, Romania
 1 GeoIP Country Edition: UA, Ukraine
 1 GeoIP Country Edition: CZ, Czech Republic
 1 GeoIP Country Edition: SE, Sweden
 1 GeoIP Country Edition: HU, Hungary
 1 GeoIP Country Edition: DK, Denmark
 1 GeoIP Country Edition: FI, Finland
 1 GeoIP Country Edition: GB, United Kingdom
 1 GeoIP Country Edition: CA, Canada
 1 GeoIP Country Edition: A1, Anonymous Proxy
 1 GeoIP Country Edition: ES, Spain
 1 GeoIP Country Edition: NZ, New Zealand
 1 GeoIP Country Edition: IT, Italy
 1 GeoIP Country Edition: HR, Croatia
 1 GeoIP Country Edition: IL, Israel
 1 GeoIP Country Edition: MX, Mexico
 1 GeoIP Country Edition: CO, Colombia

Or, for poor perl-less souls:

Code:
for IP in $(bitcoin-cli getpeerinfo |grep -w addr |grep -vE "onion|127.0.0.1" |sed -e 's/.*"\([0-9].*\):.*/\1/'); do geoiplookup $IP; done |sort |uniq -c |sort -rn

If you liked this post buy me a beer.  Beers are quite cheap where I live!
bc1q707guwp9pc73r08jw23lvecpywtazjjk399daa
azeteki (OP)
Member
**
Offline Offline

Activity: 96
Merit: 10

esotericnonsense


View Profile WWW
July 24, 2014, 02:03:28 PM
 #22

Not near it right now.  It doesn't crash, but I think it says transaction not found or something similar, and asks for a txid.

Strange. I have just tested it with --disablewallet and for me the 'W' hotkey just doesn't do anything.
I believe there is possibly a bug that will stop it from updating information though (it'll silently think it's in 'wallet mode').
When you get time, please check for me exactly what happens, it would be useful to know.

The country of peers based on geoip would be nice to have on the peers screen.

I don't have geoiplookup on my system and I'm not really interested in adding dependencies just for cosmetic stuff. Sorry.
If there's some way to do it with standard python libs or you find the will to code up a list for me in Python I would be happy to add it.

azeteki (OP)
Member
**
Offline Offline

Activity: 96
Merit: 10

esotericnonsense


View Profile WWW
July 24, 2014, 02:09:38 PM
 #23

A debug console has been added (similar to the one in bitcoin-qt, or just ./bitcoin-cli command...) so that you can query directly yourself without leaving the program or having to type './bitcoin-cli -testnet ...' each time.

It's not complete and will likely fail on certain commands, so I would treat it as a toy (works fine for getblock, getblockhash, getwalletinfo, getinfo, help, etc) and not use it for producing transactions or anything that could result in loss of funds for now.

azeteki (OP)
Member
**
Offline Offline

Activity: 96
Merit: 10

esotericnonsense


View Profile WWW
July 25, 2014, 04:18:27 PM
 #24

This looks pretty cool, it reminds me of the days of the old BBS. Wil you add soundblaster 16 sounds by any chance?  Smiley

gmaxwell suggested that I add sounds from the blockchain. I think live mempool would be better. But unfortunately my musical abilities are extremely limited. Tongue

Updated to v0.0.14.

A few cosmetic tweaks to console view and a few bugfixes.
TX view verbose mode now shows whether transaction outputs are spent or not.
Monitor view now flashes when it detects an incoming block.
SPACE hotkey has been switched for enter at user request.
TX view coinbase no longer shows nonsense like negative fees.
TX view switches between outputs/inputs using TAB now.

Testnet displays units as 'TNC' to avoid confusion.
Previously you would rely on the coloring of the header only, which is not ideal for mono terminals or colorblind users.

Various cosmetic changes here and there.

azeteki (OP)
Member
**
Offline Offline

Activity: 96
Merit: 10

esotericnonsense


View Profile WWW
July 27, 2014, 04:28:20 AM
Last edit: July 27, 2014, 10:49:09 PM by azeteki
 #25

More updates:

The tool now supports bitcoin.conf files natively, no need to edit the file.
Copy it in or run using the -c switch and point to it.

There is a now a footer 'menu system' that follows through all views so that you don't have to remember hotkeys as much.



You can view transactions from your wallet by locating them with the cursor and pressing ENTER. Previously you'd need to copy paste which is hard without a tmux clone or X-terminal.

Verbose mode should now show whether transaction outputs unconfirmed spent or confirmed spent.

edit:

A number of drastic performance upgrades have been made.
The limiting factor for speed is generally now bitcoind-rpc rather than hardcoded time.sleep nonsense.
CPU usage on my machine is very low; though there are a few small tweaks I could make (customizable display update interval, for example).

azeteki (OP)
Member
**
Offline Offline

Activity: 96
Merit: 10

esotericnonsense


View Profile WWW
August 01, 2014, 05:59:31 PM
 #26

v0.0.19.

Added a feature to view coinbase strings. You can read the messages miners leave there.
Verbose mode in the TX view should now be much faster for large transactions.
A basic bandwidth chart has been added.


spin
Sr. Member
****
Offline Offline

Activity: 362
Merit: 262


View Profile
August 02, 2014, 04:02:30 AM
 #27

Thanks looking good.  Just updated.  It's correctly identifying the fact that I'm running with wallet disabled.

If you liked this post buy me a beer.  Beers are quite cheap where I live!
bc1q707guwp9pc73r08jw23lvecpywtazjjk399daa
dserrano5
Legendary
*
Offline Offline

Activity: 1974
Merit: 1029



View Profile
August 02, 2014, 02:28:33 PM
 #28

Probably a matter of personal taste but I find the J/K bindings counterintuitive to move among blocks. I'd expect J to go to the next block instead of the previous one since J is usually used to move forward. Re: "HOME/END: quicker" I'd use PgDn/PgUp for that, and maybe relegate Home/End to even larger jumps.

Although if it were me, I'd use H/L to browse blocks and J/K to move up/down in the transaction list, both in the Block and Wallet windows. Specifically, not having J/K in the Wallet window bugs me somewhat Smiley.

I just git pulled from a1989f3 to 6276b9f and noticed that now it's way faster to move among the transactions in the wallet, well done on this!
azeteki (OP)
Member
**
Offline Offline

Activity: 96
Merit: 10

esotericnonsense


View Profile WWW
August 02, 2014, 04:39:54 PM
 #29

Probably a matter of personal taste...

My plan is to move towards making hotkeys configurable via .conf or similar.

I actually don't really like J/K for block navigation either.

It used to be left/right but after adding the footer and allowing left/right to navigate views I changed it.

As a side note, this is trivial to change without even knowing Python, though unwieldy. Go into hotkey.py, look for keymap = {... and change the keys that map block_seek_forward_one and block_seek_back_one.

I just git pulled from a1989f3 to 6276b9f and noticed that now it's way faster to move among the transactions in the wallet, well done on this!

Originally I had a lazy time.sleep in both the RPC and interface threads, just to get up and running.

Now it's more sensible. The sleep function waits on data.

So if a message is passed from RPC to interface or vice versa, response should be instant, rather than waiting for the next iteration of the loop.

If you want some real fun, turn up your keyboard repeat rate to max. Cheesy

PRab
Member
**
Offline Offline

Activity: 98
Merit: 10


View Profile
August 05, 2014, 01:39:48 AM
 #30

After a bit of pain and debugging I successfully got bitcoind-ncurses working for both btcd and bitcoind simultaneously!

Newar
Legendary
*
Offline Offline

Activity: 1358
Merit: 1001


https://gliph.me/hUF


View Profile
August 05, 2014, 06:30:29 AM
 #31

After a bit of pain and debugging I successfully got bitcoind-ncurses working for both btcd and bitcoind simultaneously!
[...]

What needed modifying for btcd?

OTC rating | GPG keyid 1DC91318EE785FDE | Gliph: lightning bicycle tree music | Mycelium, a swift & secure Bitcoin client for Android | LocalBitcoins
spin
Sr. Member
****
Offline Offline

Activity: 362
Merit: 262


View Profile
August 05, 2014, 07:45:10 AM
 #32

After a bit of pain and debugging I successfully got bitcoind-ncurses working for both btcd and bitcoind simultaneously!
[...]

What needed modifying for btcd?

By looking at his screenshot I'm guessing that btcd doesn't support all the newest bitcoin rpc calls. From the screenshot I can see he had to remove chainwork display as I think it was only added via getblockchaininfo relatively recently to bitcoin core.

If you liked this post buy me a beer.  Beers are quite cheap where I live!
bc1q707guwp9pc73r08jw23lvecpywtazjjk399daa
PRab
Member
**
Offline Offline

Activity: 98
Merit: 10


View Profile
August 05, 2014, 12:51:58 PM
 #33

What needed modifying for btcd?

First issue was just getting it to run on Windows.
https://github.com/PRab/bitcoind-ncurses/commit/d13bfd3a59c86b097593d746c4f4b910eb355659

After that, I needed to figure out why btcd wasn't working. Nothing needed to change in btcd, but btcd requires SSL. I haven't been able to get SSL to work for bitcoind/bitcoin-qt so it was a bit tricky for me to test.
https://github.com/azeteki/bitcoind-ncurses/issues/5
https://github.com/jgarzik/python-bitcoinrpc/issues/35
azeteki (OP)
Member
**
Offline Offline

Activity: 96
Merit: 10

esotericnonsense


View Profile WWW
August 06, 2014, 12:01:02 AM
 #34

By looking at his screenshot I'm guessing that btcd doesn't support all the newest bitcoin rpc calls. From the screenshot I can see he had to remove chainwork display as I think it was only added via getblockchaininfo relatively recently to bitcoin core.

No; that should fail over safely.

A lot of the items on the monitor view should just disappear if the required info can't be obtained.

'disablewallet' support for example just works de facto because the getbalance req fails, and so nothing is displayed.

Not everything is totally safe against this (I don't really sanity check the information from bitcoind; if getblock reports no hash it might die, for example).

Unfortunately I don't really have the prereqs to test things like btcd.
My system is old and rather slow.
bitcoind reindex takes me a few weeks for example.
Hopefully at some point I will be able to justify buying a new system.

azeteki (OP)
Member
**
Offline Offline

Activity: 96
Merit: 10

esotericnonsense


View Profile WWW
August 09, 2014, 01:32:08 AM
 #35

Updated to v0.0.20.

A few small additions:

Errors field, for example 'This is a pre-release test build' for development releases
(note that this is only checked on boot; it does not refresh as of yet, this is planned)

Transaction view no longer quits the program if a tx is not found
Transaction verbose mode now colours outputs according to their spent/unspent status
A number of modularization updates that should ease code accessibility and speed up the program in areas
Monitor view now displays implicit hashrate as per diff (the hashrate that would be required to sustain average 10 minute block rate)
Peer view now displays node sync height and time connected
Monitor view now displays estimatefee data (on bitcoind development release only)
RPCSSL support (untested by me; thanks to PRab and mikegogulski on GitHub)

azeteki (OP)
Member
**
Offline Offline

Activity: 96
Merit: 10

esotericnonsense


View Profile WWW
August 09, 2014, 01:40:19 AM
 #36

I wanted to thank all of the people who have used and tested bitcoind-ncurses so far and especially those who have donated.
It is a good feeling to know that your work is appreciated. So, thank you all very much.

bitpop
Legendary
*
Offline Offline

Activity: 2912
Merit: 1060



View Profile WWW
August 16, 2014, 12:22:42 PM
 #37

Beautiful thank you

gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4284
Merit: 8808



View Profile WWW
August 16, 2014, 11:28:50 PM
 #38

WRT peer height.

The syncheight is based on what the peer has advertised to us, so if a peer is not synced up yet its syncheight will be -1. You might want to fall back to displaying the starting height there if and only if it's value is more than one less than your current height and syncheight is -1.
bitpop
Legendary
*
Offline Offline

Activity: 2912
Merit: 1060



View Profile WWW
August 17, 2014, 01:21:50 AM
 #39

My peers page has no heights

gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4284
Merit: 8808



View Profile WWW
August 17, 2014, 02:24:16 AM
 #40

My peers page has no heights
You're running a non-git version of bitcoind. Next major version will have them for you.
Pages: « 1 [2] 3 4 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!