Skip to main content

DSValue

1. Summary

This is a simple contract where authorized addresses can set a price and anyone can read it.

2. Contract Variables & Functions

Variables

  • isValid - boolean that signals whether the currently stored value is valid (greater than zero) or not
  • medianPrice - the current price feed

Modifiers

  • auth - modifier that checks whether an address can set the result. Inherited from ds-thing.

Functions

  • getResultWithValidity() external view returns (bytes32, bool) - returns result and isValid
  • read() external view returns (uint256) - getter that only returns the result
  • updateResult(newResult: bytes32) - set a new result
  • restartValue() - set isValid to false

3. Walkthrough

Authorized functions can set a new medianPrice by calling updateResult. Anyone can read the medianPrice or read both the medianPrice and whether it isValid by calling read orgetResultWithValidity.

4. Gotchas

This oracle is entirely dependent on authed addresses to update them. They will not flag if they are stale.

5. Failure Modes (Bounds on Operating Conditions & External Risk Factors)

Authed address can set any arbitrary price. This will impact other components reading from the oracle.