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.
This commit is contained in:
57
contrib/avg_blocktime.pl
Executable file
57
contrib/avg_blocktime.pl
Executable file
@@ -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";
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
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 $block = shift || die "Usage: $0 123";
|
||||||
my $coin = shift || '';
|
my $coin = shift || '';
|
||||||
my $hush = "./src/hush-cli";
|
my $hush = "./src/hush-cli";
|
||||||
@@ -30,7 +30,7 @@ if ($block <= $blockcount) {
|
|||||||
if ($coin eq 'DRAGONX') {
|
if ($coin eq 'DRAGONX') {
|
||||||
$minpb = 0.6; # minutes per block
|
$minpb = 0.6; # minutes per block
|
||||||
} elsif ($coin) {
|
} elsif ($coin) {
|
||||||
# TODO: support custom bloctimes
|
# TODO: support custom blocktimes
|
||||||
$minpb = 1; # assumes default blocktime of 60s
|
$minpb = 1; # assumes default blocktime of 60s
|
||||||
}
|
}
|
||||||
my $minutes = $diff*$minpb;
|
my $minutes = $diff*$minpb;
|
||||||
|
|||||||
Reference in New Issue
Block a user