mirror of
https://github.com/mempool/mempool.git
synced 2026-08-13 12:33:11 +02:00
211 lines
6.5 KiB
Bash
Executable file
211 lines
6.5 KiB
Bash
Executable file
#!/usr/bin/env zsh
|
|
delay=0.5
|
|
hostnameBitcoin=127.0.0.1:82
|
|
hostnameLiquid=127.0.0.1:83
|
|
|
|
warm()
|
|
{
|
|
echo "$1"
|
|
time curl -o /dev/null -s "$1"
|
|
sleep $delay # delay between queries to not DoS mariadb
|
|
echo
|
|
}
|
|
|
|
warmCommonURLs=(
|
|
'/api/v1/blocks'
|
|
'/api/v1/statistics/2h'
|
|
'/api/v1/statistics/24h'
|
|
'/api/v1/statistics/1w'
|
|
'/api/v1/statistics/1m'
|
|
'/api/v1/statistics/3m'
|
|
'/api/v1/statistics/6m'
|
|
'/api/v1/statistics/1y'
|
|
'/api/v1/statistics/2y'
|
|
'/api/v1/statistics/3y'
|
|
'/api/v1/statistics/4y'
|
|
'/api/v1/statistics/all'
|
|
)
|
|
|
|
warmMiningURLs=(
|
|
'/api/v1/mining/pools/24h'
|
|
'/api/v1/mining/pools/3d'
|
|
'/api/v1/mining/pools/1w'
|
|
'/api/v1/mining/pools/1m'
|
|
'/api/v1/mining/pools/3m'
|
|
'/api/v1/mining/pools/6m'
|
|
'/api/v1/mining/pools/1y'
|
|
'/api/v1/mining/pools/2y'
|
|
'/api/v1/mining/pools/3y'
|
|
'/api/v1/mining/pools/all'
|
|
'/api/v1/mining/hashrate/3m'
|
|
'/api/v1/mining/hashrate/6m'
|
|
'/api/v1/mining/hashrate/1y'
|
|
'/api/v1/mining/hashrate/2y'
|
|
'/api/v1/mining/hashrate/3y'
|
|
'/api/v1/mining/hashrate/all'
|
|
'/api/v1/mining/hashrate/pools/3m'
|
|
'/api/v1/mining/hashrate/pools/6m'
|
|
'/api/v1/mining/hashrate/pools/1y'
|
|
'/api/v1/mining/hashrate/pools/2y'
|
|
'/api/v1/mining/hashrate/pools/3y'
|
|
'/api/v1/mining/hashrate/pools/all'
|
|
'/api/v1/mining/reward-stats/144'
|
|
'/api/v1/mining/blocks/fees/24h'
|
|
'/api/v1/mining/blocks/fees/3d'
|
|
'/api/v1/mining/blocks/fees/1w'
|
|
'/api/v1/mining/blocks/fees/1m'
|
|
'/api/v1/mining/blocks/fees/3m'
|
|
'/api/v1/mining/blocks/fees/6m'
|
|
'/api/v1/mining/blocks/fees/1y'
|
|
'/api/v1/mining/blocks/fees/2y'
|
|
'/api/v1/mining/blocks/fees/3y'
|
|
'/api/v1/mining/blocks/fees/all'
|
|
'/api/v1/mining/blocks/rewards/24h'
|
|
'/api/v1/mining/blocks/rewards/3d'
|
|
'/api/v1/mining/blocks/rewards/1w'
|
|
'/api/v1/mining/blocks/rewards/1m'
|
|
'/api/v1/mining/blocks/rewards/3m'
|
|
'/api/v1/mining/blocks/rewards/6m'
|
|
'/api/v1/mining/blocks/rewards/1y'
|
|
'/api/v1/mining/blocks/rewards/2y'
|
|
'/api/v1/mining/blocks/rewards/3y'
|
|
'/api/v1/mining/blocks/rewards/all'
|
|
'/api/v1/mining/blocks/fee-rates/24h'
|
|
'/api/v1/mining/blocks/fee-rates/3d'
|
|
'/api/v1/mining/blocks/fee-rates/1w'
|
|
'/api/v1/mining/blocks/fee-rates/1m'
|
|
'/api/v1/mining/blocks/fee-rates/3m'
|
|
'/api/v1/mining/blocks/fee-rates/6m'
|
|
'/api/v1/mining/blocks/fee-rates/1y'
|
|
'/api/v1/mining/blocks/fee-rates/2y'
|
|
'/api/v1/mining/blocks/fee-rates/3y'
|
|
'/api/v1/mining/blocks/fee-rates/all'
|
|
'/api/v1/mining/difficulty-adjustments/24h'
|
|
'/api/v1/mining/difficulty-adjustments/3d'
|
|
'/api/v1/mining/difficulty-adjustments/1w'
|
|
'/api/v1/mining/difficulty-adjustments/1m'
|
|
'/api/v1/mining/difficulty-adjustments/3m'
|
|
'/api/v1/mining/difficulty-adjustments/6m'
|
|
'/api/v1/mining/difficulty-adjustments/1y'
|
|
'/api/v1/mining/difficulty-adjustments/2y'
|
|
'/api/v1/mining/difficulty-adjustments/3y'
|
|
'/api/v1/mining/difficulty-adjustments/all'
|
|
)
|
|
|
|
warmLightningURLs=(
|
|
'/api/v1/lightning/channels-geo?style=widget'
|
|
'/api/v1/lightning/channels-geo?style=graph'
|
|
'/api/v1/lightning/statistics/latest'
|
|
'/api/v1/lightning/statistics/1m'
|
|
'/api/v1/lightning/statistics/3m'
|
|
'/api/v1/lightning/statistics/6m'
|
|
'/api/v1/lightning/statistics/1y'
|
|
'/api/v1/lightning/statistics/2y'
|
|
'/api/v1/lightning/statistics/3y'
|
|
'/api/v1/lightning/statistics/all'
|
|
'/api/v1/lightning/nodes/isp-ranking'
|
|
'/api/v1/lightning/nodes/isp/15169,396982' `# Google`
|
|
'/api/v1/lightning/nodes/isp/14618,16509' `# Amazon`
|
|
'/api/v1/lightning/nodes/isp/39572' `# DataWeb`
|
|
'/api/v1/lightning/nodes/isp/14061' `# Digital Ocean`
|
|
'/api/v1/lightning/nodes/isp/24940,213230' `# Hetzner`
|
|
'/api/v1/lightning/nodes/isp/394745' `# LunaNode`
|
|
'/api/v1/lightning/nodes/isp/45102' `# Alibaba`
|
|
'/api/v1/lightning/nodes/isp/3209' `# Vodafone Germany`
|
|
'/api/v1/lightning/nodes/isp/7922' `# Comcast Cable`
|
|
'/api/v1/lightning/nodes/isp/34197' `# SHRD SARL`
|
|
'/api/v1/lightning/nodes/isp/42275' `# Three Fourteen SASU`
|
|
'/api/v1/lightning/nodes/isp/16276' `# OVH SAS`
|
|
'/api/v1/lightning/nodes/isp/10796,11351,11426,11427,12271,20001,20115,33363' `# Spectrum` \
|
|
'/api/v1/lightning/nodes/isp/701' `# Verizon`
|
|
'/api/v1/lightning/nodes/isp/12876' `# Scaleway`
|
|
'/api/v1/lightning/nodes/isp/33915' `# Ziggo`
|
|
'/api/v1/lightning/nodes/isp/3320' `# Deutsche Telekom AG`
|
|
'/api/v1/lightning/nodes/isp/8075' `# Microsoft Azure`
|
|
'/api/v1/lightning/nodes/isp/212531' `# UAB Interneto vizija`
|
|
'/api/v1/lightning/nodes/isp/63949' `# Linode`
|
|
'/api/v1/lightning/nodes/isp/51167' `# Contabo GmbH`
|
|
'/api/v1/lightning/nodes/countries'
|
|
'/api/v1/lightning/nodes/rankings'
|
|
'/api/v1/lightning/nodes/rankings/liquidity'
|
|
'/api/v1/lightning/nodes/rankings/connectivity'
|
|
'/api/v1/lightning/nodes/rankings/age'
|
|
)
|
|
|
|
warmLiquidURLs=(
|
|
'/api/v1/assets/icons'
|
|
'/api/v1/assets/featured'
|
|
'/api/v1/liquid/pegs'
|
|
'/api/v1/liquid/pegs/month'
|
|
'/api/v1/liquid/pegs/volume'
|
|
'/api/v1/liquid/pegs/count'
|
|
'/api/v1/liquid/reserves'
|
|
'/api/v1/liquid/reserves/month'
|
|
'/api/v1/liquid/reserves/addresses'
|
|
'/api/v1/liquid/reserves/addresses/total'
|
|
'/api/v1/liquid/reserves/utxos'
|
|
'/api/v1/liquid/reserves/utxos/total'
|
|
'/api/v1/liquid/reserves/utxos/expired'
|
|
'/api/v1/liquid/reserves/utxos/emergency-spent'
|
|
'/api/v1/liquid/reserves/utxos/emergency-spent/stats'
|
|
'/api/v1/liquid/reserves/status'
|
|
)
|
|
|
|
echo "[*] Wait 60s for mempool backend to start..."
|
|
sleep 60
|
|
|
|
while true
|
|
do
|
|
echo "[*] Starting warm cache cycle..."
|
|
date
|
|
|
|
for url in $warmCommonURLs
|
|
do
|
|
warm "http://${hostnameBitcoin}${url}"
|
|
warm "http://${hostnameBitcoin}/testnet${url}"
|
|
warm "http://${hostnameBitcoin}/testnet4${url}"
|
|
warm "http://${hostnameBitcoin}/signet${url}"
|
|
warm "http://${hostnameLiquid}${url}"
|
|
warm "http://${hostnameLiquid}/testnet${url}"
|
|
done
|
|
|
|
for url in $warmMiningURLs
|
|
do
|
|
warm "http://${hostnameBitcoin}${url}"
|
|
# only warm cache for testnet URLs 10% of the time
|
|
if (( RANDOM % 100 < 10 )); then
|
|
warm "http://${hostnameBitcoin}/testnet${url}"
|
|
warm "http://${hostnameBitcoin}/testnet4${url}"
|
|
warm "http://${hostnameBitcoin}/signet${url}"
|
|
fi
|
|
done
|
|
|
|
for url in $warmLightningURLs
|
|
do
|
|
warm "http://${hostnameBitcoin}${url}"
|
|
# only warm cache for testnet URLs 10% of the time
|
|
if (( RANDOM % 100 < 10 )); then
|
|
warm "http://${hostnameBitcoin}/testnet${url}"
|
|
warm "http://${hostnameBitcoin}/signet${url}"
|
|
fi
|
|
done
|
|
|
|
for url in $warmLiquidURLs
|
|
do
|
|
warm "http://${hostnameLiquid}${url}"
|
|
warm "http://${hostnameLiquid}/testnet${url}"
|
|
done
|
|
|
|
slugs=(`curl -sSL http://${hostnameBitcoin}/api/v1/mining/pools/3y|jq -r -S '(.pools[].slug)'`)
|
|
for slug in $slugs
|
|
do
|
|
warm "http://${hostnameBitcoin}/api/v1/mining/pool/${slug}"
|
|
warm "http://${hostnameBitcoin}/api/v1/mining/pool/${slug}/hashrate"
|
|
warm "http://${hostnameBitcoin}/api/v1/mining/pool/${slug}/blocks"
|
|
done
|
|
|
|
date
|
|
echo "[*] Completed warm cache cycle"
|
|
|
|
sleep 1
|
|
done
|