Nothing to configure. It is part of the pool.
The pool writes the price into its own history each trade. No keeper, no off-chain feed.
Recent prices count more. A single-block spike can't move it. Holding a price for the whole window costs more than it returns.
Indexes, vaults and lending markets query it on-chain, permissionlessly. One call, one answer.
Three parts. The oracle is not optional and there is nothing to configure.
Pick a name, a ticker and a supply. Delphi deploys the token, its pool and its oracle in one transaction.
Every swap writes a price observation to the token's oracle. The pool does it itself. No keeper, no off-chain feed, no one to bribe.
Any contract asks for the average price over a window it chooses. Moving that average costs more than it returns. That is what makes it safe to lend against.
One call. You choose the window. Short windows follow the market. Long windows resist it.
To move a 30-minute average by 10%, someone has to hold the spot price 10% away for 30 minutes against everyone who trades. The recorded price also cannot move faster than about 3% per second, so a single block cannot jump it.
// Any contract on Robinhood Chain import {IDelphiOracle} from "@delphi/oracle/IDelphiOracle.sol"; IDelphiOracle oracle = IDelphiOracle(0x2447…7AcC); // 30-minute time-weighted price, quote asset per token uint256 price = oracle.consult(PYTHIA, 30 minutes); // How much quote it takes to move spot 1%. Thin pools, small number. uint256 depth = oracle.depth(PYTHIA, 100); // Reverts if fewer than 12 swaps have been recorded
Any contract on Robinhood Chain can call the oracle.
Robinhood Chain. Source verified on the explorer once deployed.
Or build on the ones already here.