Files
proxmox/scripts/weth9-list-holders.sh
defiQUG b3a8fe4496
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
chore: sync all changes to Gitea
- Config, docs, scripts, and backup manifests
- Submodule refs unchanged (m = modified content in submodules)

Made-with: Cursor
2026-03-02 11:37:34 -08:00

43 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# List all WETH9 holders and their balances on Chain 138 (Blockscout API).
# Usage: ./scripts/weth9-list-holders.sh
set -euo pipefail
BLOCKSCOUT_API="${BLOCKSCOUT_API:-https://explorer.d-bis.org/api}"
WETH9="0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
PAGE_SIZE=100
echo "=== WETH9 holders (Chain 138) ==="
echo "WETH9: $WETH9"
echo "API: $BLOCKSCOUT_API"
echo ""
PAGE=1
TOTAL=0
while true; do
URL="${BLOCKSCOUT_API}/v2/tokens/${WETH9}/holders?page=${PAGE}&page_size=${PAGE_SIZE}"
RESP=$(curl -sS --connect-timeout 10 "$URL" 2>/dev/null || echo '{"items":[]}')
N=$(echo "$RESP" | jq -r '(.items | length) // (.data | length) // 0' 2>/dev/null || echo "0")
[[ -z "$N" || "$N" -eq 0 ]] && break
for i in $(seq 0 $((N - 1))); do
ITEM=$(echo "$RESP" | jq -c "(.items[$i] // .data[$i]) // {}")
ADDR=$(echo "$ITEM" | jq -r '.address.hash // .address // .holder_address // empty')
VAL=$(echo "$ITEM" | jq -r '.value // .balance // "0"')
[[ -z "$ADDR" || "$ADDR" == "null" ]] && continue
if command -v cast &>/dev/null; then
ETH=$(cast from-wei "$VAL" ether 2>/dev/null || echo "$VAL")
else
ETH="$VAL"
fi
echo "$ADDR $VAL ($ETH WETH9)"
((TOTAL++)) || true
done
[[ "$N" -lt $PAGE_SIZE ]] && break
((PAGE++)) || true
done
echo ""
echo "Total holders: $TOTAL"
echo "To burn from an address you control: WETH9.withdraw(balance) with that key."