0 txs
4.6k calls
constructor
constructor(address nativeMarketAddress, address vaiAddress, address _boundValidator)
functions
accessControlManager
viewfunction accessControlManager() view returns (address)
boundValidator
viewfunction boundValidator() view returns (address)
CACHE_SLOT
viewfunction CACHE_SLOT() view returns (bytes32)
getOracle
viewfunction getOracle(address asset, uint8 role) view returns (address oracle, bool enabled)
getPrice
viewfunction getPrice(address asset) view returns (uint256)
getTokenConfig
viewfunction getTokenConfig(address asset) view returns (tuple)
getUnderlyingPrice
viewfunction getUnderlyingPrice(address vToken) view returns (uint256)
INVALID_PRICE
viewfunction INVALID_PRICE() view returns (uint256)
NATIVE_TOKEN_ADDR
viewfunction NATIVE_TOKEN_ADDR() view returns (address)
nativeMarket
viewfunction nativeMarket() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
vai
viewfunction vai() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
enableOracle
nonpayablefunction enableOracle(address asset, uint8 role, bool enable)
initialize
nonpayablefunction initialize(address accessControlManager_)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
setAccessControlManager
nonpayablefunction setAccessControlManager(address accessControlManager_)
setOracle
nonpayablefunction setOracle(address asset, address oracle, uint8 role)
setTokenConfig
nonpayablefunction setTokenConfig(tuple tokenConfig)
setTokenConfigs
nonpayablefunction setTokenConfigs(tuple[] tokenConfigs_)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateAssetPrice
nonpayablefunction updateAssetPrice(address asset)
updatePrice
nonpayablefunction updatePrice(address vToken)
events
CachedEnabled
event CachedEnabled(address indexed asset, bool indexed enabled)
Initialized
event Initialized(uint8 version)
NewAccessControlManager
event NewAccessControlManager(address oldAccessControlManager, address newAccessControlManager)
OracleEnabled
event OracleEnabled(address indexed asset, uint256 indexed role, bool indexed enable)
OracleSet
event OracleSet(address indexed asset, address indexed oracle, uint256 indexed role)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
TokenConfigAdded
event TokenConfigAdded(address indexed asset, address indexed mainOracle, address indexed pivotOracle, address fallbackOracle)
Unpaused
event Unpaused(address account)
errors
Unauthorized
error Unauthorized(address sender, address calledContract, string methodSignature)
creation bytecode
0x60e060405234801561000f575f80fd5b5060405161240738038061240783398101604081905261002e91610183565b806001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601560248201527f63616e2774206265207a65726f2061646472657373000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0380851660805283811660a052821660c0526100ab6100b4565b505050506101cd565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610081565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f80fd5b50565b5f805f60608486031215610195575f80fd5b83516101a08161016c565b60208501519093506101b18161016c565b60408501519092506101c28161016c565b809150509250925092565b60805160a05160c0516121e66102215f395f81816101bf015281816112230152818161174c01526118b501525f8181610369015281816113bc01526113f501525f8181610287015261136701526121e65ff3fe608060405234801561000f575f80fd5b50600436106101a1575f3560e01c80638da5cb5b116100f3578063b62e4c9211610093578063e30c39781161006e578063e30c3978146103be578063e9d1284f146103cf578063f2fde38b146103e3578063fc57d4df146103f6575f80fd5b8063b62e4c9214610364578063c4d66de81461038b578063cb67e3b11461039e575f80fd5b8063a8e68463116100ce578063a8e6846314610312578063a9534f8a14610325578063b4a0bdf314610340578063b62cad6914610351575f80fd5b80638da5cb5b146102db57806396e85ced146102ec578063a6b1344a146102ff575f80fd5b80635c975abb1161015e5780638456cb59116101395780638456cb5914610267578063883cfb911461026f5780638a2f7f6d146102825780638b855da4146102a9575f80fd5b80635c975abb14610241578063715018a61461025757806379ba50971461025f575f80fd5b80630e32cb86146101a557806333d33494146101ba5780633f4ba83a146101fe57806341976e09146102065780634b932b8f146102275780634bf39cba1461023a575b5f80fd5b6101b86101b3366004611c32565b610409565b005b6101e17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101b861041d565b610219610214366004611c32565b610451565b6040519081526020016101f5565b6101b8610235366004611c78565b6104bf565b6102195f81565b60335460ff1660405190151581526020016101f5565b6101b8610632565b6101b8610643565b6101b86106ba565b6101b861027d366004611e4c565b6106ea565b6101e17f000000000000000000000000000000000000000000000000000000000000000081565b6102bc6102b7366004611efb565b610769565b604080516001600160a01b0390931683529015156020830152016101f5565b6065546001600160a01b03166101e1565b6101b86102fa366004611c32565b610809565b6101b861030d366004611f2e565b610822565b6101b8610320366004611f72565b610a21565b6101e173bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b60c9546001600160a01b03166101e1565b6101b861035f366004611c32565b610bcb565b6101e17f000000000000000000000000000000000000000000000000000000000000000081565b6101b8610399366004611c32565b610bd4565b6103b16103ac366004611c32565b610ce9565b6040516101f59190611f8d565b6097546001600160a01b03166101e1565b6102195f8051602061219183398151915281565b6101b86103f1366004611c32565b610dca565b610219610404366004611c32565b610e3b565b610411610eb1565b61041a81610f0b565b50565b61044760405180604001604052806009815260200168756e7061757365282960b81b815250610fc9565b61044f611060565b565b5f61045e60335460ff1690565b156104b05760405162461bcd60e51b815260206004820152601a60248201527f726573696c69656e74206f7261636c652069732070617573656400000000000060448201526064015b60405180910390fd5b6104b9826110b2565b92915050565b826001600160a01b0381166104e65760405162461bcd60e51b81526004016104a790612014565b6001600160a01b038085165f90815260fb60205260409020548591166105485760405162461bcd60e51b81526020600482015260176024820152761d1bdad95b8818dbdb999a59c81b5d5cdd08195e1a5cdd604a1b60448201526064016104a7565b6105866040518060400160405280602081526020017f656e61626c654f7261636c6528616464726573732c75696e74382c626f6f6c29815250610fc9565b6001600160a01b0385165f90815260fb6020526040902083906004018560028111156105b4576105b4612043565b600381106105c4576105c4612057565b602091828204019190066101000a81548160ff0219169083151502179055508215158460028111156105f8576105f8612043565b6040516001600160a01b038816907fcf3cad1ec87208efbde5d82a0557484a78d4182c3ad16926a5463bc1f7234b3d905f90a45050505050565b61063a610eb1565b61044f5f6112e7565b60975433906001600160a01b031681146106b15760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016104a7565b61041a816112e7565b6106e2604051806040016040528060078152602001667061757365282960c81b815250610fc9565b61044f611300565b80515f0361072e5760405162461bcd60e51b815260206004820152601160248201527006c656e6774682063616e2774206265203607c1b60448201526064016104a7565b80515f5b818110156107645761075c83828151811061074f5761074f612057565b6020026020010151610a21565b600101610732565b505050565b6001600160a01b0382165f90815260fb60205260408120819060010183600281111561079757610797612043565b600381106107a7576107a7612057565b01546001600160a01b038581165f90815260fb60205260409020911692506004018360028111156107da576107da612043565b600381106107ea576107ea612057565b602091828204019190069054906101000a900460ff1690509250929050565b5f6108138261133d565b905061081e81611481565b5050565b826001600160a01b0381166108495760405162461bcd60e51b81526004016104a790612014565b6001600160a01b038085165f90815260fb60205260409020548591166108ab5760405162461bcd60e51b81526020600482015260176024820152761d1bdad95b8818dbdb999a59c81b5d5cdd08195e1a5cdd604a1b60448201526064016104a7565b6108e96040518060400160405280602081526020017f7365744f7261636c6528616464726573732c616464726573732c75696e743829815250610fc9565b6001600160a01b03841615801561091057505f83600281111561090e5761090e612043565b145b1561096b5760405162461bcd60e51b815260206004820152602560248201527f63616e277420736574207a65726f206164647265737320746f206d61696e206f6044820152647261636c6560d81b60648201526084016104a7565b6001600160a01b0385165f90815260fb60205260409020849060010184600281111561099957610999612043565b600381106109a9576109a9612057565b0180546001600160a01b0319166001600160a01b03929092169190911790558260028111156109da576109da612043565b846001600160a01b0316866001600160a01b03167fea681d3efb830ef032a9c29a7215b5ceeeb546250d2c463dbf87817aecda1bf160405160405180910390a45050505050565b80516001600160a01b038116610a495760405162461bcd60e51b81526004016104a790612014565b6020820151516001600160a01b038116610a755760405162461bcd60e51b81526004016104a790612014565b610ab36040518060400160405280601b81526020017f736574546f6b656e436f6e66696728546f6b656e436f6e666967290000000000815250610fc9565b82516001600160a01b039081165f90815260fb60209081526040909120855181546001600160a01b0319169316929092178255840151849190610afc9060018301906003611acf565b506040820151610b129060048301906003611b27565b50606091909101516005909101805460ff1916911515919091179055602083810151808201518151865160409384015193516001600160a01b039485168152928416949184169316917fa51ad01e2270c314a7b78f0c60fe66c723f2d06c121d63fcdce776e654878fc1910160405180910390a482606001511515835f01516001600160a01b03167fca250c5374abedcbf71c0e3eda7ff4cf940fa9e6561d8cd31d2bf480a140a93f60405160405180910390a3505050565b61041a81611481565b5f54610100900460ff1615808015610bf257505f54600160ff909116105b80610c0b5750303b158015610c0b57505f5460ff166001145b610c6e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104a7565b5f805460ff191660011790558015610c8f575f805461ff0019166101001790555b610c9882611563565b610ca061159a565b801561081e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b610cf1611bb1565b6001600160a01b038281165f90815260fb602090815260409182902082516080810184528154909416845282516060810193849052909291840191600184019060039082845b81546001600160a01b03168152600190910190602001808311610d37575050509183525050604080516060810191829052602090920191906004840190600390825f855b825461010083900a900460ff161515815260206001928301818104948501949093039092029101808411610d7b575050509284525050506005919091015460ff16151560209091015292915050565b610dd2610eb1565b609780546001600160a01b0383166001600160a01b03199091168117909155610e036065546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f610e4860335460ff1690565b15610e955760405162461bcd60e51b815260206004820152601a60248201527f726573696c69656e74206f7261636c652069732070617573656400000000000060448201526064016104a7565b5f610e9f8361133d565b9050610eaa816110b2565b9392505050565b6065546001600160a01b0316331461044f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b6001600160a01b038116610f6f5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016104a7565b60c980546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101610cdd565b60c9546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab90610ffb9033908690600401612099565b602060405180830381865afa158015611016573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103a91906120c4565b90508061081e57333083604051634a3fa29360e01b81526004016104a7939291906120df565b6110686115c8565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80806110cc5f8051602061219183398151915285611611565b905080156110db579392505050565b5f806110e8866001610769565b9150915080801561110157506001600160a01b03821615155b15611170576040516341976e0960e01b81526001600160a01b0387811660048301528316906341976e0990602401602060405180830381865afa925050508015611168575060408051601f3d908101601f1916820190925261116591810190612113565b60015b156111705793505b5f80611191888785801561118c57506001600160a01b03871615155b611659565b915091505f82141580156111a25750805b156111b257509695505050505050565b5f806111be8a896117d4565b915091505f82141580156111cf5750805b156111e1575098975050505050505050565b83158015906111ef57508115155b801561128c5750604051634be3819f60e11b81526001600160a01b038b8116600483015260248201869052604482018490527f000000000000000000000000000000000000000000000000000000000000000016906397c7033e90606401602060405180830381865afa158015611268573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061128c91906120c4565b1561129f57509198975050505050505050565b60405162461bcd60e51b815260206004820152601e60248201527f696e76616c696420726573696c69656e74206f7261636c65207072696365000060448201526064016104a7565b609780546001600160a01b031916905561041a8161193c565b61130861198d565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110953390565b5f816001600160a01b0381166113655760405162461bcd60e51b81526004016104a790612014565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036113ba5773bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb915061147b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361141b577f0000000000000000000000000000000000000000000000000000000000000000915061147b565b826001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611457573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eaa919061212a565b50919050565b6114985f8051602061219183398151915282611611565b156114a05750565b5f806114ac835f610769565b90925090506001600160a01b038216158015906114c65750805b1561151657816001600160a01b031663692404266040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611503575f80fd5b505af1925050508015611514575060015b505b6001600160a01b0383165f90815260fb602052604090206005015460ff1615610764575f611543846110b2565b905061155d5f8051602061219183398151915285836119d3565b50505050565b5f54610100900460ff166115895760405162461bcd60e51b81526004016104a790612145565b611591611a1a565b61041a81611a48565b5f54610100900460ff166115c05760405162461bcd60e51b81526004016104a790612145565b61044f611a6e565b60335460ff1661044f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104a7565b5f8083836040516020016116389291909182526001600160a01b0316602082015260400190565b60408051601f1981840301815291905280516020909101205c949350505050565b5f805f80611667875f610769565b9150915080801561168057506001600160a01b03821615155b156117c3576040516341976e0960e01b81526001600160a01b0388811660048301528316906341976e0990602401602060405180830381865afa9250505080156116e7575060408051601f3d908101601f191682019092526116e491810190612113565b60015b6116f8575f809350935050506117cc565b8561170b579350600192506117cc915050565b8661171d5793505f92506117cc915050565b604051634be3819f60e11b81526001600160a01b038981166004830152602482018390526044820189905282917f0000000000000000000000000000000000000000000000000000000000000000909116906397c7033e90606401602060405180830381865afa158015611793573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b791906120c4565b945094505050506117cc565b5f809350935050505b935093915050565b5f805f806117e3866002610769565b915091508080156117fc57506001600160a01b03821615155b1561192c576040516341976e0960e01b81526001600160a01b0387811660048301528316906341976e0990602401602060405180830381865afa925050508015611863575060408051601f3d908101601f1916820190925261186091810190612113565b60015b611874575f80935093505050611935565b856118865793505f9250611935915050565b604051634be3819f60e11b81526001600160a01b038881166004830152602482018390526044820188905282917f0000000000000000000000000000000000000000000000000000000000000000909116906397c7033e90606401602060405180830381865afa1580156118fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192091906120c4565b94509450505050611935565b5f809350935050505b9250929050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60335460ff161561044f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104a7565b5f83836040516020016119f99291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120905081815d50505050565b5f54610100900460ff16611a405760405162461bcd60e51b81526004016104a790612145565b61044f611aa0565b5f54610100900460ff166104115760405162461bcd60e51b81526004016104a790612145565b5f54610100900460ff16611a945760405162461bcd60e51b81526004016104a790612145565b6033805460ff19169055565b5f54610100900460ff16611ac65760405162461bcd60e51b81526004016104a790612145565b61044f336112e7565b8260038101928215611b17579160200282015b82811115611b1757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611ae2565b50611b23929150611bec565b5090565b600183019183908215611b17579160200282015f5b83821115611b7857835183826101000a81548160ff02191690831515021790555092602001926001016020815f01049283019260010302611b3c565b8015611ba45782816101000a81549060ff02191690556001016020815f01049283019260010302611b78565b5050611b23929150611bec565b60405180608001604052805f6001600160a01b03168152602001611bd3611c00565b8152602001611be0611c00565b81525f60209091015290565b5b80821115611b23575f8155600101611bed565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461041a575f80fd5b5f60208284031215611c42575f80fd5b8135610eaa81611c1e565b803560038110611c5b575f80fd5b919050565b801515811461041a575f80fd5b8035611c5b81611c60565b5f805f60608486031215611c8a575f80fd5b8335611c9581611c1e565b9250611ca360208501611c4d565b91506040840135611cb381611c60565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715611cf557611cf5611cbe565b60405290565b6040516060810167ffffffffffffffff81118282101715611cf557611cf5611cbe565b604051601f8201601f1916810167ffffffffffffffff81118282101715611d4757611d47611cbe565b604052919050565b5f82601f830112611d5e575f80fd5b611d66611cfb565b806060840185811115611d77575f80fd5b845b81811015611d9a578035611d8c81611c60565b845260209384019301611d79565b509095945050505050565b5f6101008284031215611db6575f80fd5b611dbe611cd2565b90508135611dcb81611c1e565b81526020603f83018413611ddd575f80fd5b611de5611cfb565b806080850186811115611df6575f80fd5b602086015b81811015611e1b578035611e0e81611c1e565b8452928401928401611dfb565b50816020860152611e2c8782611d4f565b604086015250505050611e4160e08301611c6d565b606082015292915050565b5f6020808385031215611e5d575f80fd5b823567ffffffffffffffff80821115611e74575f80fd5b818501915085601f830112611e87575f80fd5b813581811115611e9957611e99611cbe565b611ea7848260051b01611d1e565b818152848101925060089190911b830184019087821115611ec6575f80fd5b928401925b81841015611ef057611edd8885611da5565b8352848301925061010084019350611ecb565b979650505050505050565b5f8060408385031215611f0c575f80fd5b8235611f1781611c1e565b9150611f2560208401611c4d565b90509250929050565b5f805f60608486031215611f40575f80fd5b8335611f4b81611c1e565b92506020840135611f5b81611c1e565b9150611f6960408501611c4d565b90509250925092565b5f6101008284031215611f83575f80fd5b610eaa8383611da5565b81516001600160a01b03908116825260208084015161010084019291908185015f5b6003811015611fce578251851682529183019190830190600101611faf565b50505060408501519150608084015f5b6003811015611ffd578351151582529282019290820190600101611fde565b5050505060609290920151151560e0919091015290565b60208082526015908201527463616e2774206265207a65726f206164647265737360581b604082015260600190565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190525f906120bc9083018461206b565b949350505050565b5f602082840312156120d4575f80fd5b8151610eaa81611c60565b6001600160a01b038481168252831660208201526060604082018190525f9061210a9083018461206b565b95945050505050565b5f60208284031215612123575f80fd5b5051919050565b5f6020828403121561213a575f80fd5b8151610eaa81611c1e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe4e99ec55972332f5e0ef9c6623192c0401b609161bffae64d9ccdd7ad6cc7800a2646970667358221220be9e6d379085b751aaacbc3bc057613c1abc54d8dce38ec07fbb603cb7984a4764736f6c63430008190033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001cd5f336a1d28dff445619cc63d3a0329b4d8a58