🚧 SportsPerp is currently live on devnet. Mainnet target: before Jun 12, 2026 (World Cup kickoff).
Keeper OperatorsOperating a Keeper

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

WorkReward
Stop-loss / take-profit execution0.50 USDC
Limit-open execution0.75 USDC
Funding crank0.25 USDC
Market sunset1.00 USDC
Position settlement0.10 USDC
Backstop unwind0.20 USDC
Auto-deleverage0.50 USDC
Liquidation pathsvariable 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.mjs

The 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 --json

Valid 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.