Delphi II

The Optimistic Oracle

🔎 High-level Overview

The FIAT protocol allows users to provide collateral in vaults which allow them to mint a stablecoin as a function of the deposited value. It requires up-to-date price information for all collateral assets integrated with the protocol in order to maintain solvency. Failure to correctly price collateral assets would result in adverse deviation from the desired peg value for $FIAT.
Delphi II is an optimistic oracle solution that allows for constant, gas-efficient asset price updates. The system uses trusted bonded proposers that can periodically push values to the system. A proposal can be disputed by anyone, triggering an on-chain value validation process that either uses trusted on-chain sources (such as Chainlink) or Merkle proofs.
In case of a successful dispute, the bond paid by the malicious proposer is transferred to the disputer as compensation. Any disputed proposer is also blocklisted from further registering with the optimistic oracle.

🎨 Components

The system uses a base abstract contract OptimisticOracle which handles the core lifecycle of proposals and manages proposers' bonds. Because the validation process is protocol specific we use specific oracle implementations that handle the on-chain value computation.
  • Example Implementations:
    • ​OptimisticChainlinkOracle: An Optimistic Oracle that manages values fetched from Chainlink data feeds. The validation process retrieves the values on-chain and overwrites malicious proposals.
    • ​Optimistic3PoolChainlinkOracle: An Optimistic Oracle that computes the spot price for a 3-token pool by fetching the price of each underlying asset from the corresponding Chainlink data feed and returning the minimum across all assets.
For additional details regarding each component as well as guides on how the Optimistic Oracle system works, please check the GitHub repository.

👒 Security and Risks

The security of Delphi II relies on the correctness of on-chain value providers and active participation of proposers acting as keepers.
The code was audited by Sherlock and the report can be found here.

🗄️ Deployed contracts

📘 References