diff --git a/contrib/avg_blocktime.pl b/contrib/avg_blocktime.pl new file mode 100755 index 000000000..adfa25427 --- /dev/null +++ b/contrib/avg_blocktime.pl @@ -0,0 +1,57 @@ +#!/usr/bin/perl +# Copyright (c) 2016-2022 The Hush developers +# Distributed under the GPLv3 software license, see the accompanying +# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html + +use warnings; +use strict; +my $cli = "./src/hush-cli"; +my $coin = shift || ''; +unless (-e $cli) { + die "$cli does not exist, aborting"; +} +if ($coin) { + $cli .= " -ac_name=$coin"; +} +my $getblock= "$cli getblock"; +my $start = shift || 1850000; +my $end = shift || 1853000; + +my $blocks = qx{$cli getblockcount}; +if($?) { + print "ERROR, is node running? exiting...\n"; + exit 1; +} + +if ($end > $blocks) { + print "The block $end is beyond how many blocks this node knows about, exiting...\n"; + exit 1; +} + +if ($start < 1) { + print "Invalid start block $start, exiting...\n"; + exit 1; +} + +my $block = $start; +my $prev_blocktime = 0; +my $total_duration = 0; + +while ($block <= $end) { + my $blocktime = qx{$getblock $block | grep time}; + chomp $blocktime; + if($blocktime =~ m/(\d+)/) { + $blocktime = $1; + } + my $duration = $blocktime - $prev_blocktime; + if($prev_blocktime > 0) { + $total_duration += $duration; + } + #print "$block $blocktime $prev_blocktime $duration\n"; + print "$block $duration\n"; + $block++; + $prev_blocktime = $blocktime; +} +my $num_blocks = $end - $start; +my $avg_duration = $total_duration / $num_blocks; +print "Avg blocktime over $num_blocks blocks = $avg_duration\n"; diff --git a/contrib/block_time.pl b/contrib/block_time.pl index 3e3cf014d..2fc9299fb 100755 --- a/contrib/block_time.pl +++ b/contrib/block_time.pl @@ -5,7 +5,7 @@ use warnings; use strict; -# Given a block time, estimate when it will happen +# Given a block height, estimate when it will happen my $block = shift || die "Usage: $0 123"; my $coin = shift || ''; my $hush = "./src/hush-cli"; @@ -30,7 +30,7 @@ if ($block <= $blockcount) { if ($coin eq 'DRAGONX') { $minpb = 0.6; # minutes per block } elsif ($coin) { - # TODO: support custom bloctimes + # TODO: support custom blocktimes $minpb = 1; # assumes default blocktime of 60s } my $minutes = $diff*$minpb;