#!/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/dragonx-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";
