diff --git a/bin/localstate.pl b/bin/localstate.pl index 9864f021343f1fea0a5fdaaf6f6e4b9beba17943..96ab9e820f4e80255277753d58a69bd46b7051aa 100755 --- a/bin/localstate.pl +++ b/bin/localstate.pl @@ -9,10 +9,15 @@ use warnings; use Carp; use Math::BigInt; use JSON; +use IO::Socket::INET; BEGIN { die "\$BFAHOME not set. Did you source bfa/bin/env ?\n" unless exists $ENV{BFAHOME}; } +my %network = ( + 47525974938 => 'BFA red principal [est. 2018]', + 55555000000 => 'BFA red de pruebas numero 2 [est. 2019]', +); chdir $ENV{BFAHOME} or die $!; use lib $ENV{'BFAHOME'}.'/bin'; use libbfa; @@ -151,8 +156,49 @@ sub rpc my $netversion = rpc( $libbfa, 'net_version' ); if ( $netversion ) { - printf "Running on network number %s\n", $netversion; + if ( exists $network{$netversion} ) + { + printf "Running on network %s (#%s)\n", $network{$netversion}, $netversion; + } else { + printf "Running on network %s\n", $netversion; + } } + +### compare time +use constant days70y => 25567; + +my $s = IO::Socket::INET->new( + PeerAddr => "time.nist.gov:37", + Timeout => 3, + ); +if ( defined $s ) +{ + $s->recv(my $data, 8); + my $i = unpack('N', $data); + if ( $i > 0 ) + { + # rfc868 offset (seconds from 1900-01-01 to 1970-01-01) + $i -= 2208988800; + printf "NIST time: %s\n", scalar(localtime($i)); + my $heretime = time(); + printf "Here time: %s\n", scalar(localtime($i)); + if ( abs($i - $heretime) > 5 ) + { + print "WHY IS YOUR CLOCK OFF?"; + } + } +} + +### latest block +$result = rpc( $libbfa, 'eth_getBlockByNumber', '"latest"', "true" ); +my $block = block->new( $result ); +my $timediff = time()-$block->timestamp; +printf + "Our latest block number is %d. It's timestamp says %s (%s old).\n", + $block->number, + gmt($block->timestamp), + nicetimedelta( $timediff ); + ### syncing ? my $syncing = rpc( $libbfa, 'eth_syncing' ); if ( $syncing ) @@ -167,31 +213,22 @@ if ( $syncing ) } else { - print "We are currently not syncing (this is normal if you have all the blocks).\n"; + if ( $timediff > 90 ) + { + print "We are currently not syncing. WHY ARE OUR BLOCKS SO OLD?\n"; + } else { + print "We have all the blocks and are not syncing.\n"; + } } ### mining ? $result = rpc( $libbfa, 'eth_mining' ); if ( $result ) { - printf "We mine when we can.\n"; + printf "We are a sealer and are configured seal.\n"; +} else { + print "We do not seal.\n"; } -else -{ - print "We do not mine.\n"; -} - -### latest block -$result = rpc( $libbfa, 'eth_getBlockByNumber', '"latest"', "true" ); -my $block = block->new( $result ); -my $timediff = time()-$block->timestamp; -printf - "Our latest block number is %d. It's timestamp says %s (%s old).\n", - $block->number, - gmt($block->timestamp), - nicetimedelta( $timediff ); -print "WHY IS IT SO OLD?\n" - if $timediff > 90; # List peers $result = rpc( $libbfa, 'admin_peers' );