@dolomite-exchange/dolomite-margin
Version:
Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol
1,197 lines (1,196 loc) • 70 kB
JSON
{
"contractName": "TestDaiUsdChainlinkAggregator",
"abi": [
{
"constant": true,
"inputs": [],
"name": "aggregator",
"outputs": [
{
"internalType": "contract IChainlinkAccessControlAggregator",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "maxAnswer",
"outputs": [
{
"internalType": "int192",
"name": "",
"type": "int192"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "minAnswer",
"outputs": [
{
"internalType": "int192",
"name": "",
"type": "int192"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "latestRoundData",
"outputs": [
{
"internalType": "uint80",
"name": "roundId",
"type": "uint80"
},
{
"internalType": "int256",
"name": "answer",
"type": "int256"
},
{
"internalType": "uint256",
"name": "startedAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "updatedAt",
"type": "uint256"
},
{
"internalType": "uint80",
"name": "answeredInRound",
"type": "uint80"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"aggregator\",\"outputs\":[{\"internalType\":\"contract IChainlinkAccessControlAggregator\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"latestRoundData\",\"outputs\":[{\"internalType\":\"uint80\",\"name\":\"roundId\",\"type\":\"uint80\"},{\"internalType\":\"int256\",\"name\":\"answer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint80\",\"name\":\"answeredInRound\",\"type\":\"uint80\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"maxAnswer\",\"outputs\":[{\"internalType\":\"int192\",\"name\":\"\",\"type\":\"int192\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minAnswer\",\"outputs\":[{\"internalType\":\"int192\",\"name\":\"\",\"type\":\"int192\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Gets the latest price from the Chainlink Oracle Network. Amount of decimals depends on the base.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestDaiEthChainlinkAggregator.sol\":\"TestDaiUsdChainlinkAggregator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAccessControlAggregator.sol\":{\"keccak256\":\"0xbb94dc91633d6fb20e1d7e2b5ce1f11346e89a6bfc8c3ac5d163c35a3e4ad60a\",\"urls\":[\"bzz-raw://264c7c039caf44b1866769feb237010651730d546b54bb6f2b7bc77cf3b6c9c9\",\"dweb:/ipfs/QmX8TTF8E2G8TT1yig6qHC8amWDwaq1GG6iaKYTTHsYsjo\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAggregator.sol\":{\"keccak256\":\"0x0209c9f35dbe82857a6441d8d61f271baeb5098549eabf5fc6d33503d0d3e073\",\"urls\":[\"bzz-raw://2f6af7b5198548a9a5e3d8a30203d7cd003eae93cca22b8466c10e0dcfcbc367\",\"dweb:/ipfs/Qme3bQ58ZoQLYDoJQHnvEeQZqgqyWTFBYBmMoiem7LPXmz\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestDaiEthChainlinkAggregator.sol\":{\"keccak256\":\"0xcd7ed86868bdabcc4b89e609ea1634a99908951922a19b5710b0764c34a0bc9a\",\"urls\":[\"bzz-raw://80950a780131d9536f0a7da16380127c09109349749eaf8307769cd89eb59634\",\"dweb:/ipfs/QmX4HXR13k1UhG8wzpxu9j1L2X9f3eT7Ebyq8cRsVjze1o\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b50610199806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063313ce56711610050578063313ce567146100be57806370da2f67146100dc578063feaf968c146100e457610067565b806322adbc781461006c578063245a7bfc1461008d575b600080fd5b61007461012b565b60408051601792830b90920b8252519081900360200190f35b610095610130565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100c6610134565b6040805160ff9092168252519081900360200190f35b610074610139565b6100ec610153565b6040805169ffffffffffffffffffff96871681526020810195909552848101939093526060840191909152909216608082015290519081900360a00190f35b600190565b3090565b600890565b75ffffffffffffffffffffffffffffffffffffffffffff90565b60006305f767a0814281909192939456fea265627a7a72315820ccbdbe8d687b928ddc6b6e4e2443ee4a3a69ac5622c2e518cbe7d10af33e250164736f6c63430005100032",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c8063313ce56711610050578063313ce567146100be57806370da2f67146100dc578063feaf968c146100e457610067565b806322adbc781461006c578063245a7bfc1461008d575b600080fd5b61007461012b565b60408051601792830b90920b8252519081900360200190f35b610095610130565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100c6610134565b6040805160ff9092168252519081900360200190f35b610074610139565b6100ec610153565b6040805169ffffffffffffffffffff96871681526020810195909552848101939093526060840191909152909216608082015290519081900360a00190f35b600190565b3090565b600890565b75ffffffffffffffffffffffffffffffffffffffffffff90565b60006305f767a0814281909192939456fea265627a7a72315820ccbdbe8d687b928ddc6b6e4e2443ee4a3a69ac5622c2e518cbe7d10af33e250164736f6c63430005100032",
"sourceMap": "937:949:117:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;937:949:117;;;;;;;",
"deployedSourceMap": "937:949:117:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;937:949:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1521:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;1042:257;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1305:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1386:129;;;:::i;1604:280::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1521:77;1590:1;1521:77;:::o;1042:257::-;1286:4;1042:257;:::o;1305:75::-;1372:1;1305:75;:::o;1386:129::-;1455:53;1386:129;:::o;1604:280::-;1675:14;1844:9;1675:14;1858:15;1675:14;1604:280;;;;;:::o",
"source": "/*\n\n Copyright 2020 Dolomite.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\n\nimport { IChainlinkAggregator } from \"../external/interfaces/IChainlinkAggregator.sol\";\nimport { IChainlinkAccessControlAggregator } from \"../external/interfaces/IChainlinkAccessControlAggregator.sol\";\n\n\n/**\n * @dev Gets the latest price from the Chainlink Oracle Network. Amount of decimals depends on the base.\n */\ncontract TestDaiUsdChainlinkAggregator is IChainlinkAggregator, IChainlinkAccessControlAggregator {\n\n function aggregator() external view returns (IChainlinkAccessControlAggregator) {\n // For the sake of simplicity, we implement the IChainlinkAccessControlAggregator interface here\n return IChainlinkAccessControlAggregator(address(this));\n }\n\n function decimals() external view returns (uint8) {\n return 8;\n }\n\n function maxAnswer() external view returns (int192) {\n return 95780971304118053647396689196894323976171195136475135;\n }\n\n function minAnswer() external view returns (int192) {\n return 1;\n }\n\n function latestRoundData()\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n ) {\n // $1.001\n return (0, 100100000, 0, block.timestamp, 0);\n }\n}\n",
"sourcePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestDaiEthChainlinkAggregator.sol",
"ast": {
"absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestDaiEthChainlinkAggregator.sol",
"exportedSymbols": {
"TestDaiUsdChainlinkAggregator": [
33325
]
},
"id": 33326,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 33258,
"literals": [
"solidity",
"^",
"0.5",
".7"
],
"nodeType": "PragmaDirective",
"src": "595:23:117"
},
{
"absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAggregator.sol",
"file": "../external/interfaces/IChainlinkAggregator.sol",
"id": 33260,
"nodeType": "ImportDirective",
"scope": 33326,
"sourceUnit": 4191,
"src": "620:87:117",
"symbolAliases": [
{
"foreign": 33259,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAccessControlAggregator.sol",
"file": "../external/interfaces/IChainlinkAccessControlAggregator.sol",
"id": 33262,
"nodeType": "ImportDirective",
"scope": 33326,
"sourceUnit": 4162,
"src": "708:113:117",
"symbolAliases": [
{
"foreign": 33261,
"local": null
}
],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 33263,
"name": "IChainlinkAggregator",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4190,
"src": "979:20:117",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IChainlinkAggregator_$4190",
"typeString": "contract IChainlinkAggregator"
}
},
"id": 33264,
"nodeType": "InheritanceSpecifier",
"src": "979:20:117"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 33265,
"name": "IChainlinkAccessControlAggregator",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4161,
"src": "1001:33:117",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161",
"typeString": "contract IChainlinkAccessControlAggregator"
}
},
"id": 33266,
"nodeType": "InheritanceSpecifier",
"src": "1001:33:117"
}
],
"contractDependencies": [
4161,
4190
],
"contractKind": "contract",
"documentation": "@dev Gets the latest price from the Chainlink Oracle Network. Amount of decimals depends on the base.",
"fullyImplemented": true,
"id": 33325,
"linearizedBaseContracts": [
33325,
4161,
4190
],
"name": "TestDaiUsdChainlinkAggregator",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 33277,
"nodeType": "Block",
"src": "1122:177:117",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 33273,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 38375,
"src": "1286:4:117",
"typeDescriptions": {
"typeIdentifier": "t_contract$_TestDaiUsdChainlinkAggregator_$33325",
"typeString": "contract TestDaiUsdChainlinkAggregator"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_TestDaiUsdChainlinkAggregator_$33325",
"typeString": "contract TestDaiUsdChainlinkAggregator"
}
],
"id": 33272,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1278:7:117",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 33274,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1278:13:117",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 33271,
"name": "IChainlinkAccessControlAggregator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4161,
"src": "1244:33:117",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IChainlinkAccessControlAggregator_$4161_$",
"typeString": "type(contract IChainlinkAccessControlAggregator)"
}
},
"id": 33275,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1244:48:117",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161",
"typeString": "contract IChainlinkAccessControlAggregator"
}
},
"functionReturnParameters": 33270,
"id": 33276,
"nodeType": "Return",
"src": "1237:55:117"
}
]
},
"documentation": null,
"id": 33278,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "aggregator",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 33267,
"nodeType": "ParameterList",
"parameters": [],
"src": "1061:2:117"
},
"returnParameters": {
"id": 33270,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 33269,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 33278,
"src": "1087:33:117",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161",
"typeString": "contract IChainlinkAccessControlAggregator"
},
"typeName": {
"contractScope": null,
"id": 33268,
"name": "IChainlinkAccessControlAggregator",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4161,
"src": "1087:33:117",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161",
"typeString": "contract IChainlinkAccessControlAggregator"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1086:35:117"
},
"scope": 33325,
"src": "1042:257:117",
"stateMutability": "view",
"superFunction": 4171,
"visibility": "external"
},
{
"body": {
"id": 33285,
"nodeType": "Block",
"src": "1355:25:117",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "38",
"id": 33283,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1372:1:117",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_8_by_1",
"typeString": "int_const 8"
},
"value": "8"
},
"functionReturnParameters": 33282,
"id": 33284,
"nodeType": "Return",
"src": "1365:8:117"
}
]
},
"documentation": null,
"id": 33286,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "decimals",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 33279,
"nodeType": "ParameterList",
"parameters": [],
"src": "1322:2:117"
},
"returnParameters": {
"id": 33282,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 33281,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 33286,
"src": "1348:5:117",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 33280,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1348:5:117",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1347:7:117"
},
"scope": 33325,
"src": "1305:75:117",
"stateMutability": "view",
"superFunction": 4176,
"visibility": "external"
},
{
"body": {
"id": 33293,
"nodeType": "Block",
"src": "1438:77:117",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "3935373830393731333034313138303533363437333936363839313936383934333233393736313731313935313336343735313335",
"id": 33291,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1455:53:117",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_95780971304118053647396689196894323976171195136475135_by_1",
"typeString": "int_const 9578...(45 digits omitted)...5135"
},
"value": "95780971304118053647396689196894323976171195136475135"
},
"functionReturnParameters": 33290,
"id": 33292,
"nodeType": "Return",
"src": "1448:60:117"
}
]
},
"documentation": null,
"id": 33294,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "maxAnswer",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 33287,
"nodeType": "ParameterList",
"parameters": [],
"src": "1404:2:117"
},
"returnParameters": {
"id": 33290,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 33289,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 33294,
"src": "1430:6:117",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int192",
"typeString": "int192"
},
"typeName": {
"id": 33288,
"name": "int192",
"nodeType": "ElementaryTypeName",
"src": "1430:6:117",
"typeDescriptions": {
"typeIdentifier": "t_int192",
"typeString": "int192"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1429:8:117"
},
"scope": 33325,
"src": "1386:129:117",
"stateMutability": "view",
"superFunction": 4160,
"visibility": "external"
},
{
"body": {
"id": 33301,
"nodeType": "Block",
"src": "1573:25:117",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "31",
"id": 33299,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1590:1:117",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"functionReturnParameters": 33298,
"id": 33300,
"nodeType": "Return",
"src": "1583:8:117"
}
]
},
"documentation": null,
"id": 33302,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "minAnswer",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 33295,
"nodeType": "ParameterList",
"parameters": [],
"src": "1539:2:117"
},
"returnParameters": {
"id": 33298,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 33297,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 33302,
"src": "1565:6:117",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int192",
"typeString": "int192"
},
"typeName": {
"id": 33296,
"name": "int192",
"nodeType": "ElementaryTypeName",
"src": "1565:6:117",
"typeDescriptions": {
"typeIdentifier": "t_int192",
"typeString": "int192"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1564:8:117"
},
"scope": 33325,
"src": "1521:77:117",
"stateMutability": "view",
"superFunction": 4155,
"visibility": "external"
},
{
"body": {
"id": 33323,
"nodeType": "Block",
"src": "1805:79:117",
"statements": [
{
"expression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 33315,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1841:1:117",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
{
"argumentTypes": null,
"hexValue": "313030313030303030",
"id": 33316,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1844:9:117",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_100100000_by_1",
"typeString": "int_const 100100000"
},
"value": "100100000"
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 33317,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1855:1:117",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 33318,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 38097,
"src": "1858:5:117",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 33319,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "timestamp",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1858:15:117",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 33320,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1875:1:117",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"id": 33321,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "1840:37:117",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_100100000_by_1_$_t_rational_0_by_1_$_t_uint256_$_t_rational_0_by_1_$",
"typeString": "tuple(int_const 0,int_const 100100000,int_const 0,uint256,int_const 0)"
}
},
"functionReturnParameters": 33314,
"id": 33322,
"nodeType": "Return",
"src": "1833:44:117"
}
]
},
"documentation": null,
"id": 33324,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "latestRoundData",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 33303,
"nodeType": "ParameterList",
"parameters": [],
"src": "1628:2:117"
},
"returnParameters": {
"id": 33314,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 33305,
"name": "roundId",
"nodeType": "VariableDeclaration",
"scope": 33324,
"src": "1675:14:117",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint80",
"typeString": "uint80"
},
"typeName": {
"id": 33304,
"name": "uint80",
"nodeType": "ElementaryTypeName",
"src": "1675:6:117",
"typeDescriptions": {
"typeIdentifier": "t_uint80",
"typeString": "uint80"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 33307,
"name": "answer",
"nodeType": "VariableDeclaration",
"scope": 33324,
"src": "1699:13:117",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"typeName": {
"id": 33306,
"name": "int256",
"nodeType": "ElementaryTypeName",
"src": "1699:6:117",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 33309,
"name": "startedAt",
"nodeType": "VariableDeclaration",
"scope": 33324,
"src": "1722:17:117",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 33308,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1722:7:117",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 33311,
"name": "updatedAt",
"nodeType": "VariableDeclaration",
"scope": 33324,
"src": "1749:17:117",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 33310,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1749:7:117",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 33313,
"name": "answeredInRound",
"nodeType": "VariableDeclaration",
"scope": 33324,
"src": "1776:22:117",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint80",
"typeString": "uint80"
},
"typeName": {
"id": 33312,
"name": "uint80",
"nodeType": "ElementaryTypeName",
"src": "1776:6:117",
"typeDescriptions": {
"typeIdentifier": "t_uint80",
"typeString": "uint80"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1665:139:117"
},
"scope": 33325,
"src": "1604:280:117",
"stateMutability": "view",
"superFunction": 4189,
"visibility": "external"
}
],
"scope": 33326,
"src": "937:949:117"
}
],
"src": "595:1292:117"
},
"legacyAST": {
"absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestDaiEthChainlinkAggregator.sol",
"exportedSymbols": {
"TestDaiUsdChainlinkAggregator": [
33325
]
},
"id": 33326,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 33258,
"literals": [
"solidity",
"^",
"0.5",
".7"
],
"nodeType": "PragmaDirective",
"src": "595:23:117"
},
{
"absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAggregator.sol",
"file": "../external/interfaces/IChainlinkAggregator.sol",
"id": 33260,
"nodeType": "ImportDirective",
"scope": 33326,
"sourceUnit": 4191,
"src": "620:87:117",
"symbolAliases": [
{
"foreign": 33259,
"local": null
}
],
"unitAlias": ""
},
{
"absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IChainlinkAccessControlAggregator.sol",
"file": "../external/interfaces/IChainlinkAccessControlAggregator.sol",
"id": 33262,
"nodeType": "ImportDirective",
"scope": 33326,
"sourceUnit": 4162,
"src": "708:113:117",
"symbolAliases": [
{
"foreign": 33261,
"local": null
}
],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 33263,
"name": "IChainlinkAggregator",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4190,
"src": "979:20:117",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IChainlinkAggregator_$4190",
"typeString": "contract IChainlinkAggregator"
}
},
"id": 33264,
"nodeType": "InheritanceSpecifier",
"src": "979:20:117"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 33265,
"name": "IChainlinkAccessControlAggregator",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4161,
"src": "1001:33:117",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161",
"typeString": "contract IChainlinkAccessControlAggregator"
}
},
"id": 33266,
"nodeType": "InheritanceSpecifier",
"src": "1001:33:117"
}
],
"contractDependencies": [
4161,
4190
],
"contractKind": "contract",
"documentation": "@dev Gets the latest price from the Chainlink Oracle Network. Amount of decimals depends on the base.",
"fullyImplemented": true,
"id": 33325,
"linearizedBaseContracts": [
33325,
4161,
4190
],
"name": "TestDaiUsdChainlinkAggregator",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 33277,
"nodeType": "Block",
"src": "1122:177:117",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 33273,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 38375,
"src": "1286:4:117",
"typeDescriptions": {
"typeIdentifier": "t_contract$_TestDaiUsdChainlinkAggregator_$33325",
"typeString": "contract TestDaiUsdChainlinkAggregator"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_TestDaiUsdChainlinkAggregator_$33325",
"typeString": "contract TestDaiUsdChainlinkAggregator"
}
],
"id": 33272,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1278:7:117",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 33274,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1278:13:117",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 33271,
"name": "IChainlinkAccessControlAggregator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4161,
"src": "1244:33:117",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IChainlinkAccessControlAggregator_$4161_$",
"typeString": "type(contract IChainlinkAccessControlAggregator)"
}
},
"id": 33275,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1244:48:117",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161",
"typeString": "contract IChainlinkAccessControlAggregator"
}
},
"functionReturnParameters": 33270,
"id": 33276,
"nodeType": "Return",
"src": "1237:55:117"
}
]
},
"documentation": null,
"id": 33278,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "aggregator",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 33267,
"nodeType": "ParameterList",
"parameters": [],
"src": "1061:2:117"
},
"returnParameters": {
"id": 33270,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 33269,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 33278,
"src": "1087:33:117",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161",
"typeString": "contract IChainlinkAccessControlAggregator"
},
"typeName": {
"contractScope": null,
"id": 33268,
"name": "IChainlinkAccessControlAggregator",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 4161,
"src": "1087:33:117",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IChainlinkAccessControlAggregator_$4161",
"typeString": "contract IChainlinkAccessControlAggregator"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1086:35:117"
},
"scope": 33325,
"src": "1042:257:117",
"stateMutability": "view",
"superFunction": 4171,
"visibility": "external"
},
{
"body": {
"id": 33285,
"nodeType": "Block",
"src": "1355:25:117",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "38",
"id": 33283,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",