#!/usr/bin/perl # Copyright (c) 2016-2024 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 data used by a light-wallet checkpoints.rs file. # The checkpoint format follows the upstream silentdragonlite-cli reference: # https://git.hush.is/hush/silentdragonlite-cli/src/branch/master/lib/src/lightclient/checkpoints.rs#L24 use warnings; use strict; # call this script like this to generate checkpoints for another chain: # CLI=./src/hac-cli ./contrib/sdl_checkpoints.pl ... my $cli = $ENV{CLI} || "./src/dragonx-cli"; my $gethash = "$cli getblockhash"; my $gettree = "$cli getblockmerkletree"; my $start = shift || 300000; my $end = shift || 840000; my $stride = shift || 10000; my $blocks = qx{$cli getblockcount}; if($?) { print "ERROR, is dragonxd 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 $merkle = qx{$gettree $block}; chomp $merkle; chomp $blockhash; print qq{($block,"$blockhash",\n\t"$merkle"\n),\n}; $block += $stride; }