fix: pass LM_ADDRESS and POOL_ADDRESS to ponder env (#4)

bootstrap now discovers the Uniswap pool address from the factory
contract and writes both LM_ADDRESS and POOL_ADDRESS to ponder
.env.local. Without these, ponder watches hardcoded default addresses
that dont exist on the local Anvil fork, causing all protocol stats
except holder count to stay zero.
This commit is contained in:
johba 2026-04-05 17:17:04 +00:00
parent 41a3d52319
commit 446ee9e4ef
2 changed files with 14 additions and 0 deletions

View file

@ -104,6 +104,8 @@ write_ponder_env() {
PONDER_NETWORK=$NETWORK_NAME PONDER_NETWORK=$NETWORK_NAME
KRAIKEN_ADDRESS=$KRAIKEN KRAIKEN_ADDRESS=$KRAIKEN
STAKE_ADDRESS=$STAKE STAKE_ADDRESS=$STAKE
LM_ADDRESS=$LIQUIDITY_MANAGER
POOL_ADDRESS=$POOL_ADDRESS
START_BLOCK=$DEPLOY_BLOCK START_BLOCK=$DEPLOY_BLOCK
PONDER_RPC_URL_${NETWORK_NAME}=$ANVIL_RPC PONDER_RPC_URL_${NETWORK_NAME}=$ANVIL_RPC
DATABASE_URL=postgresql://ponder:ponder_local@postgres:5432/ponder_local DATABASE_URL=postgresql://ponder:ponder_local@postgres:5432/ponder_local

View file

@ -102,6 +102,18 @@ extract_addresses() {
bootstrap_log "LiquidityManager address missing" bootstrap_log "LiquidityManager address missing"
exit 1 exit 1
fi fi
# Discover Uniswap pool address from factory
detect_swap_router
local factory
factory=$(cast call --rpc-url "$ANVIL_RPC" "$SWAP_ROUTER" "factory()(address)" 2>/dev/null) || factory=""
if [[ -n "$factory" && "$factory" != "0x" ]]; then
POOL_ADDRESS=$(cast call --rpc-url "$ANVIL_RPC" "$factory" "getPool(address,address,uint24)(address)" "$WETH" "$KRAIKEN" 10000 2>/dev/null) || POOL_ADDRESS=""
fi
if [[ -z "$POOL_ADDRESS" || "$POOL_ADDRESS" == "0x0000000000000000000000000000000000000000" ]]; then
bootstrap_log "Warning: could not discover pool address"
POOL_ADDRESS=""
fi
} }
write_contracts_env() { write_contracts_env() {