From 46e6faa6fb035f9cda005c7eb7778b934a6fe414 Mon Sep 17 00:00:00 2001 From: Duke Date: Wed, 25 Dec 2024 12:03:29 -0500 Subject: [PATCH] New script to calculate average blocktime between block heights To use the script: ./contrib/avg_blocktime.pl DRAGONX It has some default block heights defined, if you want custom ones than those are given as 2nd and 3rd arguments. Currently the script prints out: Avg blocktime over 3000 blocks = 36.0526666666667 So with this evidence it seems that DRAGONX has the correct average blocktime and network hashrate. --- contrib/avg_blocktime.pl | 57 ++++++++++++++++++++++++++++++++++++++++ contrib/block_time.pl | 4 +-- 2 files changed, 59 insertions(+), 2 deletions(-) create mode 100755 contrib/avg_blocktime.pl 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;