defirisk.co
rubric v1.7.0

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 #

  • GitHub
    app.go — dYdX v4-chainapp.go: PricesKeeper initialized with authorities: lib.GovModuleAddress.String() and delaymsgmoduletypes.ModuleAddress — governance controls oracle paramsretrieved 2026-05-17
  • GitHub
    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
  • GitHub
    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 →

rubric_version v1.7.0 protocol dydx-v4 factor RD-F-180 score yellow collected_at 2026-05-17 09:58:47