2.7 KiB
Chain 138 Oracle and Keeper Reference
Purpose: ORACLE_AGGREGATOR / ORACLE_PROXY for Chain 138 and keeper/price-update flows so PMM and reporting stay aligned with oracle data.
Environment Variables (Chain 138)
Set in project .env (and in token-aggregation or relay when they consume oracle):
| Variable | Description |
|---|---|
ORACLE_AGGREGATOR_ADDRESS |
Oracle aggregator contract on Chain 138 (e.g. from deployment). Used by CCIP and other consumers. |
ORACLE_PROXY_ADDRESS |
Oracle proxy contract on Chain 138 when applicable. |
RESERVE_SYSTEM |
ReserveSystem address (Chain 138). Required for DODOPMMIntegration oracle-backed mid price. |
RPC_URL_138 / RPC_URL |
RPC endpoint for Chain 138 (keeper and scripts). |
References: DEPLOYMENT_COMPLETE_GUIDE.md, DEPLOYMENT_CHECKLIST.md, PARALLEL_COMPLETION_TASK_LIST.md.
Keeper and Price Feed Updates
-
OraclePriceFeed → ReserveSystem
ReserveSystem receives prices from OraclePriceFeed. Ensure assets used by PMM pairs (e.g. cUSDT, cUSDC, USDT, USDC) have aggregators set in OraclePriceFeed and are updated on schedule.
See: PRICE_FEED_SETUP.md. -
Keeper (on-chain / off-chain)
- PriceFeedKeeper and scripts:
script/reserve/DeployKeeper.s.sol,scripts/reserve/keeper-service.js,scripts/reserve/keeper-service.sh. - Check/perform upkeep:
PerformUpkeep.s.sol,CheckUpkeep.s.sol.
See: KEEPER_COMPLETE.md, KEEPER_SETUP.md (if present).
- PriceFeedKeeper and scripts:
-
Oracle publisher (off-chain)
Service that pushes external prices (e.g. CoinGecko) into the system:services/oracle-publisher/(e.g.oracle_publisher.py,oracle_publisher_optimized.py).
Use for assets that do not have a Chainlink-style aggregator on Chain 138.
-
Update oracle price script
One-off or cron-driven update of oracle/oracle proxy with current price:scripts/update-oracle-price.sh— usage:[rpc-url] [oracle-address] [private-key]; usesAGGREGATOR_ADDRESSand fetches ETH/USD from CoinGecko.
Schedule this (or the keeper service) so PMM oracle-backed prices and reporting stay fresh.
PMM and Reporting
- DODOPMMIntegration: Optional
setReserveSystem(ReserveSystem); thengetPoolPriceOrOracle(pool)uses ReserveSystem when base/quote are registered. - Token-aggregation: Set
CHAIN_138_DODO_PMM_INTEGRATIONso the pool indexer ingests PMM pools; report API then includes them in/report/all,/report/coingecko,/report/cross-chain.
See: DODO_PMM_INTEGRATION.md.