replaced subgraph with ponder

This commit is contained in:
johba 2025-09-23 19:24:05 +02:00
parent 5e6e21878c
commit ba64e725dc
45 changed files with 386 additions and 7275 deletions

View file

@ -9,15 +9,19 @@ LOG_DIR="$STATE_DIR/logs"
ANVIL_PID_FILE="$STATE_DIR/anvil.pid"
PONDER_PID_FILE="$STATE_DIR/ponder.pid"
WEBAPP_PID_FILE="$STATE_DIR/webapp.pid"
TXNBOT_PID_FILE="$STATE_DIR/txnBot.pid"
ANVIL_LOG="$LOG_DIR/anvil.log"
PONDER_LOG="$LOG_DIR/ponder.log"
WEBAPP_LOG="$LOG_DIR/webapp.log"
TXNBOT_LOG="$LOG_DIR/txnBot.log"
SETUP_LOG="$LOG_DIR/setup.log"
TXNBOT_ENV_FILE="$STATE_DIR/txnBot.env"
FORK_URL=${FORK_URL:-"https://sepolia.base.org"}
ANVIL_RPC="http://127.0.0.1:8545"
GRAPHQL_HEALTH="http://127.0.0.1:42069/health"
GRAPHQL_ENDPOINT="http://127.0.0.1:42069/graphql"
FRONTEND_URL="http://127.0.0.1:5173"
FOUNDRY_BIN=${FOUNDRY_BIN:-"$HOME/.foundry/bin"}
@ -31,6 +35,13 @@ FEE_DEST="0xf6a3eef9088A255c32b6aD2025f83E57291D9011"
WETH="0x4200000000000000000000000000000000000006"
SWAP_ROUTER="0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc4"
DEFAULT_TXNBOT_PRIVATE_KEY="0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d"
DEFAULT_TXNBOT_ADDRESS="0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
TXNBOT_PRIVATE_KEY=${TXNBOT_PRIVATE_KEY:-$DEFAULT_TXNBOT_PRIVATE_KEY}
TXNBOT_ADDRESS=${TXNBOT_ADDRESS:-$DEFAULT_TXNBOT_ADDRESS}
TXNBOT_FUND_VALUE=${TXNBOT_FUND_VALUE:-1ether}
MAX_UINT="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
SKIP_CLEANUP=false
@ -39,6 +50,7 @@ COMMAND="start"
cleanup() {
stop_process "Frontend" "$WEBAPP_PID_FILE"
stop_process "Ponder" "$PONDER_PID_FILE"
stop_process "TxnBot" "$TXNBOT_PID_FILE"
stop_process "Anvil" "$ANVIL_PID_FILE"
if [[ "$SKIP_CLEANUP" == true ]]; then
@ -123,6 +135,13 @@ ensure_dependencies() {
npm install >>"$SETUP_LOG" 2>&1
popd >/dev/null
fi
if [[ ! -d "$ROOT_DIR/services/txnBot/node_modules" ]]; then
log "Installing txnBot dependencies"
pushd "$ROOT_DIR/services/txnBot" >/dev/null
npm install >>"$SETUP_LOG" 2>&1
popd >/dev/null
fi
}
start_anvil() {
@ -177,7 +196,7 @@ extract_addresses() {
# Create .env.local for Ponder with deployed addresses
cat > "$ROOT_DIR/ponder/.env.local" <<EOF
# Auto-generated by local_env.sh
PONDER_NETWORK=local
PONDER_NETWORK=BASE_SEPOLIA_LOCAL_FORK
KRAIKEN_ADDRESS=$KRAIKEN
STAKE_ADDRESS=$STAKE
START_BLOCK=$deploy_block
@ -231,6 +250,59 @@ prepare_application_state() {
"($WETH,$KRAIKEN,10000,$DEPLOYER_ADDR,10000000000000000,0,0)" >>"$SETUP_LOG" 2>&1
}
prime_chain_for_indexing() {
log "Pre-mining blocks for indexer stability"
for _ in {1..1200}; do
"$CAST" rpc --rpc-url "$ANVIL_RPC" evm_mine > /dev/null 2>&1 || true
done
}
write_txnbot_env() {
source_addresses || { log "Contract addresses not found"; exit 1; }
cat > "$TXNBOT_ENV_FILE" <<EOF
ENVIRONMENT=BASE_SEPOLIA_LOCAL_FORK
PROVIDER_URL=$ANVIL_RPC
PRIVATE_KEY=$TXNBOT_PRIVATE_KEY
LM_CONTRACT_ADDRESS=$LIQUIDITY_MANAGER
STAKE_CONTRACT_ADDRESS=$STAKE
GRAPHQL_ENDPOINT=$GRAPHQL_ENDPOINT
WALLET_ADDRESS=$TXNBOT_ADDRESS
# Expose a non-conflicting status port for local dev
PORT=43069
EOF
}
fund_txnbot_wallet() {
source_addresses || { log "Contract addresses not found"; exit 1; }
if [[ -z "$TXNBOT_ADDRESS" ]]; then
log "TxnBot wallet address not provided; skipping funding"
return
fi
log "Funding txnBot wallet $TXNBOT_ADDRESS with $TXNBOT_FUND_VALUE"
"$CAST" send --rpc-url "$ANVIL_RPC" --private-key "$DEPLOYER_PK" \
"$TXNBOT_ADDRESS" --value "$TXNBOT_FUND_VALUE" >>"$SETUP_LOG" 2>&1 || \
log "Funding txnBot wallet failed (see setup log)"
}
start_txnbot() {
if [[ -f "$TXNBOT_PID_FILE" ]]; then
log "txnBot already running (pid $(cat \"$TXNBOT_PID_FILE\"))"
return
fi
write_txnbot_env
fund_txnbot_wallet
log "Starting txnBot automation"
pushd "$ROOT_DIR/services/txnBot" >/dev/null
TXN_BOT_ENV_FILE="$TXNBOT_ENV_FILE" node service.js >"$TXNBOT_LOG" 2>&1 &
popd >/dev/null
echo $! >"$TXNBOT_PID_FILE"
}
start_ponder() {
if [[ -f "$PONDER_PID_FILE" ]]; then
log "Ponder already running (pid $(cat "$PONDER_PID_FILE"))"
@ -239,7 +311,7 @@ start_ponder() {
log "Starting Ponder indexer"
pushd "$ROOT_DIR/ponder" >/dev/null
PONDER_NETWORK=local npm run dev >"$PONDER_LOG" 2>&1 &
PONDER_NETWORK=BASE_SEPOLIA_LOCAL_FORK npm run dev >"$PONDER_LOG" 2>&1 &
popd >/dev/null
echo $! >"$PONDER_PID_FILE"
@ -270,7 +342,9 @@ start_environment() {
extract_addresses
bootstrap_liquidity_manager
prepare_application_state
prime_chain_for_indexing
start_ponder # Re-enabled with PostgreSQL
start_txnbot
start_frontend
}
@ -286,7 +360,7 @@ start_and_wait() {
log " Frontend: $FRONTEND_URL"
log "Press Ctrl+C to shut everything down"
wait "$(cat "$ANVIL_PID_FILE")" "$(cat "$PONDER_PID_FILE")" "$(cat "$WEBAPP_PID_FILE")"
wait "$(cat "$ANVIL_PID_FILE")" "$(cat "$PONDER_PID_FILE")" "$(cat "$WEBAPP_PID_FILE")" "$(cat "$TXNBOT_PID_FILE")"
}
stop_environment() {
@ -343,6 +417,7 @@ status_environment() {
service_status "Anvil" "$ANVIL_PID_FILE" "$ANVIL_LOG"
service_status "Ponder" "$PONDER_PID_FILE" "$PONDER_LOG"
service_status "Frontend" "$WEBAPP_PID_FILE" "$WEBAPP_LOG"
service_status "TxnBot" "$TXNBOT_PID_FILE" "$TXNBOT_LOG"
if [[ -f "$STATE_DIR/contracts.env" ]]; then
printf '\nContracts:\n'