Operating a Keeper
SportsPerp keeper work is permissionless. Anyone with a funded Solana keypair can execute eligible trigger orders, funding cranks, backstop unwinds, ADL, market sunsets, and post-sunset settlements. Successful calls pay USDC from the global liquidity pool when reward headroom is available.
Rewards
| Work | Reward |
|---|---|
| Stop-loss / take-profit execution | 0.50 USDC |
| Limit-open execution | 0.75 USDC |
| Funding crank | 0.25 USDC |
| Market sunset | 1.00 USDC |
| Position settlement | 0.10 USDC |
| Backstop unwind | 0.20 USDC |
| Auto-deleverage | 0.50 USDC |
| Liquidation paths | variable bps reward |
Rewards are not allowed to make the pool unsafe. If the pool is near total_collateral_locked + risk_floor, the keeper action still completes but the reward can be 0.
Setup
Your signer needs SOL for transaction fees and a USDC account for the pool mint.
export SOLANA_RPC_URL=https://api.devnet.solana.com
export KEYPAIR_PATH=$HOME/.config/solana/keeper.json
export USDC_MINT=B5Etber6bZGm1H5VXcoerF6eWLkBd157heJS8pBtHrNo
spl-token create-account "$USDC_MINT"Then run the bundled services:
node keeper/index.mjs
node keeper/liquidator.mjs
node oracle-pusher/sunset-keeper.mjsThe services derive the keeper’s USDC associated token account at startup and fail fast if it is missing.
Earnings
Use the public indexer or operator CLI:
curl -s "https://api.sportsperp.xyz/indexer/api/keepers/<KEEPER>/earnings?window=24h"
sportsperp admin keeper rewards --keeper <KEEPER> --window 24h --jsonValid windows are 24h, 7d, 30d, and all.
Race Conditions
Keeper execution is first-come, first-served. If two keepers submit the same trigger, one wins the reward and the other usually pays a failed transaction fee. Expired trigger cleanup is not rewarded in v1, so operators should treat cleanup-only work as a public-good path rather than a revenue path.