Skip to content

Instantly share code, notes, and snippets.

@tolbrino
Created February 27, 2023 06:56
Show Gist options
  • Save tolbrino/fe1d48ae6d2640008d100f8abbb851e2 to your computer and use it in GitHub Desktop.
Save tolbrino/fe1d48ae6d2640008d100f8abbb851e2 to your computer and use it in GitHub Desktop.
Helper script to check availability of a set of Gnosis RPC endpoints
#!/usr/bin/env bash
# exit on errors, undefined variables, ensure errors in pipes are not hidden
set -Eeuo pipefail
do_curl() {
local endpoint="${1}"
local start end timing
start="$(date +%s%3N)"
curl \
-s \
-m 10000 \
-H "Content-Type: application/json" \
-X POST \
--data '{"method":"eth_blockNumber","params":[],"id":113,"jsonrpc":"2.0"}' \
"${endpoint}" | \
jq -r '.result' 2>/dev/null || echo ""
end="$(date +%s%3N)"
timing=$((end-start))
echo >&2 "Checking ${endpoint} took ${timing} milliseconds"
}
hex_to_number() {
local input="${1:-}"
if [ -z "${input}" ]; then
echo "FAILED"
else
printf '%d' $((16#${input#0x}))
fi
}
declare response_main response_pp response_ankr
echo ""
response_main="$(do_curl "https://rpc.gnosischain.com/")"
response_pp="$(do_curl "https://provider-proxy.hoprnet.workers.dev/xdai_mainnet")"
response_ankr="$(do_curl "https://rpc.ankr.com/gnosis")"
echo ""
echo "Gnosis Chain Latest Block #"
echo "---------------------------"
echo -e "Main:\t\t $(hex_to_number ${response_main})"
echo -e "Ankr:\t\t $(hex_to_number ${response_ankr})"
echo -e "Provider Proxy:\t $(hex_to_number ${response_pp})"
echo ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment