Skip to content

Commit 5988609

Browse files
committed
added optional guardian for not accepting too old ledger
1 parent 164ea2f commit 5988609

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

scripts/hardfork/run-localnet.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ NODE_ARGS_2=( --libp2p-keypair "$PWD/$CONF_DIR/libp2p_2" )
104104
"$MINA_EXE" libp2p generate-keypair --privkey-path $CONF_DIR/libp2p_2
105105

106106
if [[ "$CUSTOM_CONF" == "" ]] && [[ ! -f $CONF_DIR/ledger.json ]]; then
107-
( cd $CONF_DIR && "$SCRIPT_DIR/../prepare-test-ledger.sh" -c 100000 -b 1000000 "$(cat bp.pub)" >ledger.json )
107+
( cd $CONF_DIR && "$SCRIPT_DIR/../prepare-test-ledger.sh" --exit-on-old-ledger -c 100000 -b 1000000 "$(cat bp.pub)" >ledger.json )
108108
fi
109109

110110
if [[ "$SLOT_TX_END" != "" ]]; then

scripts/prepare-test-ledger.sh

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ MAINNET_START='2024-06-05T00:00:00Z'
2020
now=$(date +%s)
2121
mainnet_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
2430
LEDGER_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
7381
if [[ ! -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
86106
fi
87107

88108
keys_=""

0 commit comments

Comments
 (0)