工作原理

前期工作

请参见Chainlink Oracle 接口文档

https://docs.chain.link/data-feeds/api-reference#aggregatorv3interface

支持的Frax资产

目前支持 frxETH/ETH 和 sfrxETH/ETH。

Frax双 oracle 价格逻辑

frxEth

frxEth价格是从两个链上价格来源确定的。第一个价格来源是frxEth / ETH Curve池的EMA预言机 - 0xa1f8a6807c402e4a15ef4eba36528a3fed24e577。该价格的最低限制为0.7(0.7 frxEth = 1 ETH),最高限制为1(1 frxEth = 1 ETH)。

第二个价格来源来自Uniswap的frxEth / FRAX池的TWAP预言机 - 0x36C060Cc4b088c830a561E959A679A58205D3F56。然后,我们从这个Chainlink预言机(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419)获取ETH的美元价格,并从这个Chainlink预言机(0xB9E1E3A9feFf48998E45Fa90847ed4D467E8BcfD)获取FRAX的美元价格。

这些Chainlink价格用于将frxEth / FRAX池价格转换为frxEth / ETH价格,使用以下公式:

ethPerFrxEth = (fraxPerFrxEthUniswapTwap * usdPerFraxChainlink) / usdPerEthChainlink;

来自Uniswap的价格同样被限制在0.7和1之间,反映了Curve的价格。

这两个价格中较低的价格被返回为priceLow,较高的价格被返回为priceHigh。这些价格随后被写入frxEth / ETH的Frax预言机中。

sfrxEth

简单地从sfrxEth合约中检索pricePerShare(),以与上述frxEth双预言机相同的方式检索priceHigh和priceLow,并返回以下方程:

priceLow =  (SFRXETH_ERC4626.pricePerShare() * frxEthEthPriceLow) / 1e18;
priceHigh = (SFRXETH_ERC4626.pricePerShare() * frxEthEthPriceHigh) / 1e18;

这是因为pricePerShare()返回一个sfrxEth值多少个frxEthpricePerShare()会随着时间的推移而上涨。

这些价格随后被写入sfrxEth / ETH的Frax Oracle。

只需在Frax Oracle合约上调用 https://docs.chain.link/data-feeds/api-reference#getrounddatahttps://docs.chain.link/data-feeds/api-reference#latestrounddata,以获取您想要价格的资产。

二层网络的Frax 预言机

即将到来......

Last updated