|
|
|
#!/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
|
|
|
|
|
|
|
|
# This script is used to generate the checkpoint data used by the SilentDragon Android SDK
|
|
|
|
# https://git.hush.is/fekt/hush-android-wallet-sdk/src/branch/main/sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet
|
|
|
|
|
|
|
|
use warnings;
|
|
|
|
use strict;
|
|
|
|
my $hush = "./src/hush-cli";
|
|
|
|
my $getblock= "$hush getblock";
|
|
|
|
my $gethash = "$hush getblockhash";
|
|
|
|
my $gettree = "$hush getblockmerkletree";
|
|
|
|
my $start = shift || 1390000;
|
|
|
|
my $end = shift || 1422000;
|
|
|
|
my $stride = shift || 10000;
|
|
|
|
|
|
|
|
my $blocks = qx{$hush getblockcount};
|
|
|
|
if($?) {
|
|
|
|
print "ERROR, is hushd 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;
|
|
|
|
while (1) {
|
|
|
|
last if $block > $end;
|
|
|
|
my $blockhash = qx{$gethash $block};
|
|
|
|
my $blocktime = qx{$getblock $block | grep time};
|
|
|
|
my $merkle = qx{$gettree $block};
|
|
|
|
chomp $merkle;
|
|
|
|
chomp $blockhash;
|
|
|
|
chomp $blocktime;
|
|
|
|
$blocktime =~ s/^\s+|\s+$//g;
|
|
|
|
my $checkpoint = qq{{\n\t"network": "main",\n\t"height": "$block",\n\t"hash": "$blockhash",\n\t$blocktime\n\t"saplingTree": "$merkle"\n}\n};
|
|
|
|
my $filename = "$block.json";
|
|
|
|
open(FH, '>', $filename) or die $!;
|
|
|
|
print FH $checkpoint;
|
|
|
|
close(FH);
|
|
|
|
|
|
|
|
$block += $stride;
|
|
|
|
}
|