fluid-contracts-public/deployments/arbitrum/dump/0x17Ea3e4f479DC4459de35Cdc660888AB23Ab51a3.json

553 lines
181 KiB
JSON
Raw Normal View History

{
"address": "0x17Ea3e4f479DC4459de35Cdc660888AB23Ab51a3",
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "infoName_",
"type": "string"
},
{
"components": [
{
"components": [
{
"internalType": "contract IUniswapV3Pool",
"name": "pool",
"type": "address"
},
{
"internalType": "bool",
"name": "invertRate",
"type": "bool"
},
{
"internalType": "uint256[3]",
"name": "tWAPMaxDeltaPercents",
"type": "uint256[3]"
},
{
"internalType": "uint32[5]",
"name": "secondsAgos",
"type": "uint32[5]"
}
],
"internalType": "struct UniV3OracleImpl.UniV3ConstructorParams",
"name": "uniV3Params",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint8",
"name": "hops",
"type": "uint8"
},
{
"components": [
{
"internalType": "contract IChainlinkAggregatorV3",
"name": "feed",
"type": "address"
},
{
"internalType": "bool",
"name": "invertRate",
"type": "bool"
},
{
"internalType": "uint256",
"name": "token0Decimals",
"type": "uint256"
}
],
"internalType": "struct ChainlinkStructs.ChainlinkFeedData",
"name": "feed1",
"type": "tuple"
},
{
"components": [
{
"internalType": "contract IChainlinkAggregatorV3",
"name": "feed",
"type": "address"
},
{
"internalType": "bool",
"name": "invertRate",
"type": "bool"
},
{
"internalType": "uint256",
"name": "token0Decimals",
"type": "uint256"
}
],
"internalType": "struct ChainlinkStructs.ChainlinkFeedData",
"name": "feed2",
"type": "tuple"
},
{
"components": [
{
"internalType": "contract IChainlinkAggregatorV3",
"name": "feed",
"type": "address"
},
{
"internalType": "bool",
"name": "invertRate",
"type": "bool"
},
{
"internalType": "uint256",
"name": "token0Decimals",
"type": "uint256"
}
],
"internalType": "struct ChainlinkStructs.ChainlinkFeedData",
"name": "feed3",
"type": "tuple"
}
],
"internalType": "struct ChainlinkStructs.ChainlinkConstructorParams",
"name": "chainlinkParams",
"type": "tuple"
},
{
"components": [
{
"internalType": "contract IRedstoneOracle",
"name": "oracle",
"type": "address"
},
{
"internalType": "bool",
"name": "invertRate",
"type": "bool"
},
{
"internalType": "uint256",
"name": "token0Decimals",
"type": "uint256"
}
],
"internalType": "struct RedstoneStructs.RedstoneOracleData",
"name": "redstoneOracle",
"type": "tuple"
},
{
"internalType": "uint8",
"name": "rateSource",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "fallbackMainSource",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "rateCheckMaxDeltaPercent",
"type": "uint256"
}
],
"internalType": "struct UniV3CheckCLRSOracle.UniV3CheckCLRSConstructorParams",
"name": "params_",
"type": "tuple"
},
{
"internalType": "address",
"name": "sequencerUptimeFeed_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "errorId_",
"type": "uint256"
}
],
"name": "FluidOracleError",
"type": "error"
},
{
"inputs": [],
"name": "chainlinkOracleData",
"outputs": [
{
"internalType": "uint256",
"name": "chainlinkExchangeRate_",
"type": "uint256"
},
{
"internalType": "contract IChainlinkAggregatorV3",
"name": "chainlinkFeed1_",
"type": "address"
},
{
"internalType": "bool",
"name": "chainlinkInvertRate1_",
"type": "bool"
},
{
"internalType": "uint256",
"name": "chainlinkExchangeRate1_",
"type": "uint256"
},
{
"internalType": "contract IChainlinkAggregatorV3",
"name": "chainlinkFeed2_",
"type": "address"
},
{
"internalType": "bool",
"name": "chainlinkInvertRate2_",
"type": "bool"
},
{
"internalType": "uint256",
"name": "chainlinkExchangeRate2_",
"type": "uint256"
},
{
"internalType": "contract IChainlinkAggregatorV3",
"name": "chainlinkFeed3_",
"type": "address"
},
{
"internalType": "bool",
"name": "chainlinkInvertRate3_",
"type": "bool"
},
{
"internalType": "uint256",
"name": "chainlinkExchangeRate3_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getExchangeRate",
"outputs": [
{
"internalType": "uint256",
"name": "exchangeRate_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getExchangeRateLiquidate",
"outputs": [
{
"internalType": "uint256",
"name": "exchangeRate_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getExchangeRateOperate",
"outputs": [
{
"internalType": "uint256",
"name": "exchangeRate_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "infoName",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "redstoneOracleData",
"outputs": [
{
"internalType": "uint256",
"name": "redstoneExchangeRate_",
"type": "uint256"
},
{
"internalType": "contract IRedstoneOracle",
"name": "redstoneOracle_",
"type": "address"
},
{
"internalType": "bool",
"name": "redstoneInvertRate_",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "sequencerL2Data",
"outputs": [
{
"internalType": "address",
"name": "sequencerUptimeFeed_",
"type": "address"
},
{
"internalType": "uint256",
"name": "maxGracePeriod_",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isSequencerUp_",
"type": "bool"
},
{
"internalType": "uint256",
"name": "lastUptimeStartedAt_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "gracePeriod_",
"type": "uint256"
},
{
"internalType": "bool",
"name": "gracePeriodPassed_",
"type": "bool"
},
{
"internalType": "uint256",
"name": "lastOutageStartedAt_",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isSequencerUpAndValid_",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "uniV3CheckOracleData",
"outputs": [
{
"internalType": "uint256",
"name": "rateCheckMaxDelta_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rateSource_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fallbackMainSource_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "uniV3OracleData",
"outputs": [
{
"internalType": "contract IUniswapV3Pool",
"name": "uniV3Pool_",
"type": "address"
},
{
"internalType": "bool",
"name": "uniV3InvertRate_",
"type": "bool"
},
{
"internalType": "uint32[]",
"name": "uniV3secondsAgos_",
"type": "uint32[]"
},
{
"internalType": "uint256[]",
"name": "uniV3TwapDeltas_",
"type": "uint256[]"
},
{
"internalType": "uint256",
"name": "uniV3exchangeRateUnsafe_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "uniV3exchangeRate_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"transactionHash": "0x20f95a9ecf66c3972a67d0e4a47b6bd3c0e4760355b1888397973c61ccb3082f",
"receipt": {
"to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
"from": "0x0Ed35B1609Ec45c7079E80d11149a52717e4859A",
"contractAddress": null,
"transactionIndex": 12,
"gasUsed": "4534295",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"blockHash": "0x4a2108ee151a23bdd9dbee30c8385fc29cfedd9da9204c7e4e2799f88fd1697c",
"transactionHash": "0x20f95a9ecf66c3972a67d0e4a47b6bd3c0e4760355b1888397973c61ccb3082f",
"logs": [],
"blockNumber": 229049372,
"cumulativeGasUsed": "7246968",
"status": 1,
"byzantium": true
},
"args": [
"USDT for 1 ETH",
{
"chainlinkParams": {
"hops": 2,
"feed1": {
"feed": "0x639Fe6ab55C921f74e7fac1ee960C0B6293ba612",
"invertRate": false,
"token0Decimals": 18
},
"feed2": {
"feed": "0x3f3f5dF88dC9F13eac63DF89EC16ef6e7E25DdE7",
"invertRate": true,
"token0Decimals": 6
},
"feed3": {
"feed": "0x0000000000000000000000000000000000000000",
"invertRate": false,
"token0Decimals": 0
}
},
"uniV3Params": {
"pool": "0xC6962004f452bE9203591991D15f6b388e09E8D0",
"secondsAgos": [
240,
60,
15,
1,
0
],
"tWAPMaxDeltaPercents": [
200,
50,
20
],
"invertRate": false
},
"redstoneOracle": {
"oracle": "0x0000000000000000000000000000000000000000",
"invertRate": false,
"token0Decimals": 0
},
"rateSource": 2,
"fallbackMainSource": 1,
"rateCheckMaxDeltaPercent": 300
},
"0xFdB631F5EE196F0ed6FAa767959853A9F217697D"
],
"numDeployments": 1,
"solcInputHash": "ca9e5aa54012862807c9d9299b1ce928",
"metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"infoName_\",\"type\":\"string\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"invertRate\",\"type\":\"bool\"},{\"internalType\":\"uint256[3]\",\"name\":\"tWAPMaxDeltaPercents\",\"type\":\"uint256[3]\"},{\"internalType\":\"uint32[5]\",\"name\":\"secondsAgos\",\"type\":\"uint32[5]\"}],\"internalType\":\"struct UniV3OracleImpl.UniV3ConstructorParams\",\"name\":\"uniV3Params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"hops\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"contract IChainlinkAggregatorV3\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"invertRate\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"token0Decimals\",\"type\":\"uint256\"}],\"internalType\":\"struct ChainlinkStructs.ChainlinkFeedData\",\"name\":\"feed1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract IChainlinkAggregatorV3\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"invertRate\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"token0Decimals\",\"type\":\"uint256\"}],\"internalType\":\"struct ChainlinkStructs.ChainlinkFeedData\",\"name\":\"feed2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract IChainlinkAggregatorV3\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"invertRate\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"token0Decimals\",\"type\":\"uint256\"}],\"internalType\":\"struct ChainlinkStructs.ChainlinkFeedData\",\"name\":\"feed3\",\"type\":\"tuple\"}],\"internalType\":\"struct ChainlinkStructs.ChainlinkConstructorParams\",\"name\":\"chainlinkParams\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract IRedstoneOracle\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"invertRate\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"token0Decimals\",\"type\":\"uint256\"}],\"internalType\":\"struct RedstoneStructs.RedstoneOracleData\",\"name\":\"redstoneOracle\",\"type\":\"tuple\"},{\"internalType\":\"uint8\",\"name\":\"rateSource\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"fallbackMainSource\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"rateCheckMaxDeltaPercent\",\"type\":\"uint256\"}],\"internalType\":\"struct UniV3CheckCLRSOracle.UniV3CheckCLRSConstructorParams\",\"name\":\"params_\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"sequencerUptimeFeed_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorId_\",\"type\":\"uint256\"}],\"name\":\"FluidOracleError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"chainlinkOracleData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainlinkExchangeRate_\",\"type\":\"uint256\"},{\"internalType\":\"contract IChainlinkAggregatorV3\",\"name\":\"chainlinkFeed1_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"chainlinkInvertRate1_\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"chainlinkExchangeRate1_\",\"type\":\"uint256\"},{\"internalType\":\"contract IChainlinkAggregatorV3\",\"name\":\"chainlinkFeed2_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"chainlinkInvertRate2_\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"chainlinkExchangeRate2_\",\"type\":\"uint256\"},{\"internalType\":\"contract IChainlinkAggregatorV3\",\"name\":\"chainlinkFeed3_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"chainlinkInvertRate3_\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"chainlinkExchangeRate3_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExchangeRate\",\"outputs\":[{\"internalType\
"bytecode": "0x61052060405261dead610320523480156200001957600080fd5b5060405162003e6338038062003e638339810160408190526200003c9162000b23565b82828060800151816020015182604001518160006001600160a01b031682600001516001600160a01b031614620000745781620000a0565b6040518060600160405280610320516001600160a01b0316815260200160001515815260200160018152505b8551600080546001600160a01b0319166001600160a01b038b161790558751889060201080620000cf57508051155b15620000f75760405163c82fc46560e01b815261ea6a60048201526024015b60405180910390fd5b6020015160805280516001600160a01b03166200012c5760405163c82fc46560e01b815261f2316004820152602401620000ee565b60608101516020810151905163ffffffff91821691161115806200016c57506060810151604081015163ffffffff16906001602002015163ffffffff1611155b806200019457506060818101519081015163ffffffff16906002602002015163ffffffff1611155b80620001bc57506060810151608081015163ffffffff16906003602002015163ffffffff1611155b15620001e05760405163c82fc46560e01b815261f2326004820152602401620000ee565b60408101515161271011158062000201575060408101518051602090910151115b806200021857506040818101516020810151910151115b156200023c5760405163c82fc46560e01b815261f2336004820152602401620000ee565b606081810180515163ffffffff90811661014052815160209081015182166101605282516040015182166101805282519093015181166101a052815160800151166101c0525190810151905162000294919062000c17565b63ffffffff166101e05260608101516040810151602090910151620002ba919062000c17565b63ffffffff166102005260608181015190810151604090910151620002e0919062000c17565b63ffffffff1661022052606081810151608081015191015162000304919062000c17565b63ffffffff1661024052604081810180515160e0528051602090810151610100529051909101516101205281516001600160a01b031660a052810151151560c05262000353601b600a62000d3d565b6102605262000365601b600262000d52565b6200037290600a62000d3d565b610280525080516001600160a01b031615806200039157506040810151155b15620003b55760405163c82fc46560e01b815261fa016004820152602401620000ee565b80516001600160a01b039081166102a052602082015115156102c052610320518251821691161462000406576040810151620003f390601b62000d6c565b6200040090600a62000d3d565b62000409565b60015b6102e0526103205181516001600160a01b039081169116146200044b5760408101516200043890601b62000d82565b6200044590600a62000d3d565b6200044e565b60015b61030052508051600160ff90911610806200047057506003816000015160ff16115b806200049957506020810151516001600160a01b03161580620004995750602081015160400151155b80620004d457506001816000015160ff16118015620004d457506040810151516001600160a01b03161580620004d457506040808201510151155b806200051057506002816000015160ff161180156200051057506060810151516001600160a01b03161580620005105750606081015160400151155b15620005345760405163c82fc46560e01b815261ee496004820152602401620000ee565b60208082018051516001600160a01b039081166103405260408085018051518316610360526060860180515190931661038052835185015115156103a0525184015115156103c05290519092015115156103e0525101516200059890601b62000d6c565b620005a590600a62000d3d565b61040052602081015160400151620005bf90601b62000d82565b620005cc90600a62000d3d565b610420528051600160ff90911611620005e757600162000609565b6040808201510151620005fc90601b62000d6c565b6200060990600a62000d3d565b610440528051600160ff909116116200062457600162000646565b60408082015101516200063990601b62000d82565b6200064690600a62000d3d565b610460528051600260ff909116116200066157600162000684565b6060810151604001516200067790601b62000d6c565b6200068490600a62000d3d565b610480528051600260ff909116116200069f576001620006c2565b606081015160400151620006b590601b62000d82565b620006c290600a62000d3d565b6104a05250600160ff84161080620006dd575060038360ff16115b15620007015760405163c82fc46560e01b815261fde96004820152602401620000ee565b505060ff9081166104c05260608201516001911610806200072957506003816060015160ff16115b806200073a57506127108160a00151115b80620007605750806080015160ff166001148015620007605750806060015160ff166003145b15620007845760405163c82fc46560e01b815261ea626004820152602401620000ee565b60a08101516104e0526060015160ff16610500525062000d9892505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715620007de57620007de620007a3565b60405290565b604051608081016001600160401b03811182
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a6ac913411610076578063dc4595121161005b578063dc45951214610221578063e6aa216c14610285578063f3190c89146101dc57600080fd5b8063a6ac9134146101f2578063abd5f95d1461020c57600080fd5b80637557ca41146100a85780637cebd7c51461012057806388c35209146101a25780638e7bfbc0146101dc575b600080fd5b6100b061028d565b604080519a8b5273ffffffffffffffffffffffffffffffffffffffff998a1660208c0152971515978a01979097526060890195909552928616608088015290151560a087015260c086015290921660e0840152901515610100830152610120820152610140015b60405180910390f35b604080517f0000000000000000000000000000000000000000000000000000000000000000815260ff7f0000000000000000000000000000000000000000000000000000000000000000811660208301527f00000000000000000000000000000000000000000000000000000000000000001691810191909152606001610117565b6101aa610576565b6040805193845273ffffffffffffffffffffffffffffffffffffffff9092166020840152151590820152606001610117565b6101e4610649565b604051908152602001610117565b6101fa610660565b604051610117969594939291906126cf565b61021461095d565b6040516101179190612784565b610229610ac2565b6040805173ffffffffffffffffffffffffffffffffffffffff909916895260208901979097529415159587019590955260608601929092526080850152151560a084015260c0830191909152151560e082015261010001610117565b6101e4610bf8565b6000806000806000806000806000806102a4610c02565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006103727f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e7e565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8216156104615761045c7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e7e565b610464565b60005b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8216156105535761054e7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e7e565b610556565b60005b995099509950995099509950995099509950995090919293949596979899565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146105fb576105f6610f3f565b6105fe565b60005b937f000000000000000000000000000000000000000000000000000000000000000093507f000000000000000000000000000000000000000000000000000000000000000092509050565b6000610653611073565b61065b611117565b905090565b60008060608082806005604051908082528060200260200182016040528015610693578160200160208202803683370190505b5093507f0000000000000000000000000000000000000000000000000000000000000000846000815181106106ca576106ca612804565b602002602001019063ffffffff16908163ffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008460018151811061071857610718612804565b602002602001019063ffffffff16908163ffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008460028151811061076657610766612804565b602002602001019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000846003815181106107b4576107b4612804565b602002602001019063ffffffff16908163ffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000846004
"devdoc": {
"details": "The process for getting the aggregate oracle price is: 1. Fetch the UniV3 TWAPS, the latest interval is used as the current price 2. Verify this price is within an acceptable DELTA from the Uniswap TWAPS e.g.: a. 240 to 60s b. 60 to 15s c. 15 to 1s (last block) d. 1 to 0s (current) 3. (unless UniV3 only mode): Verify this price is within an acceptable DELTA from the Chainlink / Redstone Oracle 4. If it passes all checks, return the price. Otherwise use fallbacks, usually to Chainlink. In extreme edge-cases revert.For UniV3 with check mode, if fetching the check price fails, the UniV3 rate is used directly.",
"kind": "dev",
"methods": {
"getExchangeRate()": {
"details": "Deprecated. Use `getExchangeRateOperate()` and `getExchangeRateLiquidate()` instead. Only implemented for backwards compatibility."
}
},
"title": "UniswapV3 checked against Chainlink / Redstone Oracle for Layer 2 (with sequencer outage detection). Either one reported as exchange rate.",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"chainlinkOracleData()": {
"notice": "returns all Chainlink oracle related data as utility for easy off-chain use / block explorer in a single view method"
},
"getExchangeRateLiquidate()": {
"notice": "Get the `exchangeRate_` between the underlying asset and the peg asset in 1e27 for liquidations"
},
"getExchangeRateOperate()": {
"notice": "Get the `exchangeRate_` between the underlying asset and the peg asset in 1e27 for operates"
},
"infoName()": {
"notice": "helper string to easily identify the oracle. E.g. token symbols"
},
"redstoneOracleData()": {
"notice": "returns all Redstone oracle related data as utility for easy off-chain use / block explorer in a single view method"
},
"sequencerL2Data()": {
"notice": "returns all sequencer uptime feed related data"
},
"uniV3CheckOracleData()": {
"notice": "returns all oracle related data as utility for easy off-chain / block explorer use in a single view method"
},
"uniV3OracleData()": {
"notice": "returns all UniV3 oracle related data as utility for easy off-chain use / block explorer in a single view method"
}
},
"notice": "Gets the exchange rate between the underlying asset and the peg asset by using: the price from a UniV3 pool (compared against 3 TWAPs) and (optionally) comparing it against a Chainlink or Redstone price (one of Chainlink or Redstone being the main source and the other one the fallback source). Alternatively it can also use Chainlink / Redstone as main price and use UniV3 as check price.",
"version": 1
},
"storageLayout": {
"storage": [
{
"astId": 21741,
"contract": "contracts/oracle/oraclesL2/uniV3CheckCLRSOracleL2.sol:UniV3CheckCLRSOracleL2",
"label": "_SEQUENCER_ORACLE",
"offset": 0,
"slot": "0",
"type": "t_contract(IChainlinkAggregatorV3)25368"
}
],
"types": {
"t_contract(IChainlinkAggregatorV3)25368": {
"encoding": "inplace",
"label": "contract IChainlinkAggregatorV3",
"numberOfBytes": "20"
}
}
}
}