You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracking issue for revamped pegged-asset & oracle monitoring. Extends the original sketch in #196.
Goal
Better monitoring for pegged assets — BTC pegs (cbBTC, LBTC) and USD pegs (siUSD, cUSD, USDe, USDC, USDT, USDS + the stables already in protocols/stables/main.py) — covering not just market price but the on-chain oracles our lending markets liquidate on (Chainlink) and fundamental/rate oracles (Redstone LBTC, exchange-rate oracles).
Confirm siUSD and cUSD issuers/oracles (cUSD looks like Cap's — half-wired + commented out in stables/main.py as "very volatile").
Resolve per-feed Chainlink heartbeat / deviation params and aggregator addresses (for the indexer) on-chain.
Decide whether to rename protocols/stables → protocols/prices (per Depeg #196) as part of L1.
For each fundamental oracle, confirm whether an existing Tenderly alert already covers it; document gaps.
Key technical note: Chainlink AnswerUpdated is emitted by the underlying aggregator (rotates on phase upgrades); indexed params are current / roundId, not address → can't event-filter by feed. Statically list resolved aggregator addresses (see indexer#31).
Tracking issue for revamped pegged-asset & oracle monitoring. Extends the original sketch in #196.
Goal
Better monitoring for pegged assets — BTC pegs (cbBTC, LBTC) and USD pegs (siUSD, cUSD, USDe, USDC, USDT, USDS + the stables already in
protocols/stables/main.py) — covering not just market price but the on-chain oracles our lending markets liquidate on (Chainlink) and fundamental/rate oracles (Redstone LBTC, exchange-rate oracles).Decisions
utils/assets.pyregistry).AnswerUpdated(not polling-only).Architecture — one shared
PeggedAssetregistry, three layersstables/main.py(BTC pegs via live BTC/USD target, dual bounds, dataclass), 10-min cadence.stables/oracles.py, hourly: Chainlink staleness / round-monotonicity / peg-deviation / oracle↔market divergence + rate-oracle checks.AnswerUpdated→ GraphQL; Python consumer alerts hourly (no rounds missed between polls).Component issues
utils/chainlink.py,common-abi/ChainlinkAggregator.json,PeggedAssetregistrystables/main.pymarket depeg (BTC pegs, dual bounds, dataclass)stables/oracles.pyChainlink + rate-oracle health (hourly)AnswerUpdatedutils/chainlink.pySuggested order
#299 → #300 / #301 (parallel) → indexer#31 → #302 → #303.
Open items to resolve during implementation
stables/main.pyas "very volatile").protocols/stables→protocols/prices(per Depeg #196) as part of L1.Key technical note: Chainlink
AnswerUpdatedis emitted by the underlying aggregator (rotates on phase upgrades); indexed params arecurrent/roundId, not address → can't event-filter by feed. Statically list resolved aggregator addresses (see indexer#31).