Advanced Concepts
Getting a Fresh Price
Since the Frax protocol only updates Frax Oracle prices once per day, the price may be up to 23 hours and 59 minutes old. If you need a fresher price, you can call addRoundData() on the Dual Oracle to write a fresh price, and then call latestRoundData() / getRoundData() / getPrice() on the Frax Oracle to retrieve the fresh price.
Smart Contract Design
Timelock Configuration
Controls all configurations for all Frax Oracles on L1: 0x8412ebf45bAC1B340BbE8F318b928C466c4E39CA
Controls all configurations for all Frax Oracles on Arbitrum: 0xB426B13372B7c967C4a2371B5e95FC7dc37545Db
Attacks and Mitigations
Oracle manipulation attacks are handled economically. There is too much protocol owned liquidity for manipulating the Curve / Uniswap pools to be profitable. Bounding prices ensures that frxEth/sfrxEth will never be overvalued and will never be undervalued by more than 30%. frxEth is fully backed with ETH in validators, so the only risk that exists with it is time duration risk.
Contract Addresses
L1
Dual Oracles / Price Sources
FrxEthEthDualOracle: 0x350a9841956D8B0212EAdF5E14a449CA85FAE1C0
SfrxEthEthDualOracle: 0x584902BCe4282003E420Cf5b7ae5063D6C1c182a
Frax Oracles
SfrxEthFraxOracle: 0x3d3D868522b5a4035ADcb67BF0846D61597A6a6F
Crosschain
ArbitrumBlockHashRelay: 0x784906554d44d33c2764c86e8848a2bd71c2e3a7
L2 (Arbitrum)
ArbitrumBlockHashProvider: 0x240ff0894c584d39f992de5fdb603e03fc7e8a98
StateRootOracle: 0x11afa1d35f246fdc00d789e4a06f682b206f88c9
Price Source
MerkleProofPriceSource: 0xb032b46f835fa9e3d95d1e3f46fd307429505f9a
Dual Oracles / Price Sources
FrxEthEthDualOracle: TBD
SfrxEthEthDualOracle: TBD
Frax Oracles
SfrxEthFraxOracle: TBD
Last updated