★ Immutable oracle address
dYdX v4 (dYdX Chain)'s assessment for RD-F-180 — scored yellow on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
[★-CANDIDATE F180; PD-017 held — compose.py counts in ★ total] Slinky market parameters (oracle source config, MinPriceChangePpm, market pair definitions) ARE governance-replaceable. Confirmed in app.go: PricesKeeper authority is lib.GovModuleAddress.String() plus delaymsgmoduletypes.ModuleAddress. MsgUpdateMarketParam and MsgCreateOracleMarket messages are gated to governance authority with govtypes.ErrInvalidSigner if authority check fails. Oracle configuration changes require governance proposal with 4-day standard voting period. This is the 'governance-replaceable with voting-period delay' class — NOT immutable-red. The 4-day voting window creates exposure if an oracle source is compromised before governance can update it.
Sources #
- GitHubapp.go — dYdX v4-chainapp.go: PricesKeeper initialized with authorities: lib.GovModuleAddress.String() and delaymsgmoduletypes.ModuleAddress — governance controls oracle paramsretrieved 2026-05-17
- msg_server_update_market_param.go — dYdX v4-chainmsg_server_update_market_param.go: HasAuthority check with govtypes.ErrInvalidSigner if authority invalidretrieved 2026-05-17
- tx.pb.go prices types — dYdX v4-chaintx.pb.go: MsgUpdateMarketParam 'a message used by x/gov for updating the parameters of an oracle market'; MsgCreateOracleMarket 'a message used by x/gov for creating a new oracle market'retrieved 2026-05-17
Methodology #
Determine whether any collateral oracle address is marked `immutable` in protocol config with no admin-replaceable adapter wrapper, preventing the protocol from repricing when the upstream asset depegs.
See the full factor methodology and distribution across all protocols →