@@ -20,6 +20,12 @@ MAINNET_START='2024-06-05T00:00:00Z'
2020now=$( date +%s)
2121mainnet_start=$( date --date=" $MAINNET_START " -u +%s)
2222
23+ # Exit if ledger with specified prefix is really old (i.e. not synced for a long time)
24+ # This is a safety mechanism to avoid using an old ledger by mistake
25+ # (e.g. when ledger prefix is not updated for a long time)
26+ # If set, script will exit with code 2 if the ledger is older than 1 year
27+ EXIT_ON_OLD_LEDGER=${EXIT_ON_OLD_LEDGER:- }
28+
2329# Ledger prefix to use for structuring ledger
2430LEDGER_PREFIX=${LEDGER_PREFIX:- staking-$(( (now-mainnet_start)/ 7140/ 180 ))}
2531
@@ -44,6 +50,8 @@ while [[ $# -gt 0 ]]; do
4450 KEY_BALANCE=" $2 " ; shift ; shift ;;
4551 -p|--ledger-prefix)
4652 LEDGER_PREFIX=" $2 " ; shift ; shift ;;
53+ -o|--exit-on-old-ledger)
54+ EXIT_ON_OLD_LEDGER=1; shift ;;
4755 -* |--* )
4856 echo " Unknown option $1 " ; exit 1 ;;
4957 * )
@@ -73,7 +81,8 @@ echo "Using ledger with prefix: $LEDGER_PREFIX" >&2
7381if [[ ! -f " $ledger_file " ]]; then
7482 ledgers_url=" https://storage.googleapis.com/storage/v1/b/mina-staking-ledgers/o?maxResults=1000&prefix=$LEDGER_PREFIX "
7583 echo " $ledgers_url " >&2
76- ledger_url=$( curl " $ledgers_url " | jq -r ' .items | sort_by(.size|tonumber) | last.mediaLink' )
84+ ledger_url_content=$( curl -s " $ledgers_url " )
85+ ledger_url=$( echo " $ledger_url_content " | jq -r ' .items | sort_by(.size|tonumber) | last.mediaLink' )
7786 if [[ " $ledger_url " == null ]]; then
7887 echo " Couldn't fine ledger with prefix $LEDGER_PREFIX " >&2
7988 exit 2
@@ -83,6 +92,17 @@ if [[ ! -f "$ledger_file" ]]; then
8392 if [[ " $( head -c ${# not_finalized_msg} " $ledger_file " ) " == " $not_finalized_msg " ]]; then
8493 echo " Next ledger not finalized yet" >&2 && rm " $ledger_file " && exit 2
8594 fi
95+ if [[ " $EXIT_ON_OLD_LEDGER " != " " ]]; then
96+ ledger_timestamp=$( echo " $ledger_url_content " | jq -r ' .items | sort_by(.size|tonumber) | last.timeCreated' )
97+ ledger_time=$( date --date=" $ledger_timestamp " -u +%s 2> /dev/null || echo 0)
98+ one_year_ago=$(( now - 365 * 24 * 3600 ))
99+
100+ if [[ $ledger_time -lt $one_year_ago ]]; then
101+ echo " Ledger is older than 1 year (timestamp: $ledger_timestamp ), exiting" >&2
102+ rm " $ledger_file "
103+ exit 2
104+ fi
105+ fi
86106fi
87107
88108keys_=" "
0 commit comments