0 txs
0 calls
constructor
constructor(address initialAuthority_, address priceOracleMiddleware_)
functions
authority
viewfunction authority() view returns (address)
getAssetPrice
viewfunction getAssetPrice(address asset_) view returns (uint256 assetPrice, uint256 decimals)
getAssetsPrices
viewfunction getAssetsPrices(address[] assets_) view returns (uint256[] assetPrices, uint256[] decimalsList)
getConfiguredAssets
viewfunction getConfiguredAssets() view returns (address[])
getPriceOracleMiddleware
viewfunction getPriceOracleMiddleware() view returns (address)
getSourceOfAssetPrice
viewfunction getSourceOfAssetPrice(address asset_) view returns (address)
isConsumingScheduledOp
viewfunction isConsumingScheduledOp() view returns (bytes4)
QUOTE_CURRENCY_DECIMALS
viewfunction QUOTE_CURRENCY_DECIMALS() view returns (uint256)
QUOTE_CURRENCY
viewfunction QUOTE_CURRENCY() view returns (address)
read
viewfunction read(address target, bytes data) view returns (tuple result)
clearContext
nonpayablefunction clearContext()
readInternal
nonpayablefunction readInternal(address target, bytes data) returns (tuple result)
removeAssetsPriceSources
nonpayablefunction removeAssetsPriceSources(address[] assets_)
setAssetsPriceSources
nonpayablefunction setAssetsPriceSources(address[] assets_, address[] sources_)
setAuthority
nonpayablefunction setAuthority(address newAuthority)
setPriceOracleMiddleware
nonpayablefunction setPriceOracleMiddleware(address priceOracleMiddleware_)
setupContext
nonpayablefunction setupContext(address sender_)
events
AssetPriceSourceAdded
event AssetPriceSourceAdded(address indexed asset, address indexed source)
AssetPriceSourceRemoved
event AssetPriceSourceRemoved(address indexed asset)
AuthorityUpdated
event AuthorityUpdated(address authority)
ContextCleared
event ContextCleared(address indexed sender_)
ContextSet
event ContextSet(address indexed sender_)
Initialized
event Initialized(uint64 version)
PriceOracleMiddlewareSet
event PriceOracleMiddlewareSet(address indexed priceOracleMiddleware)
errors
AccessManagedInvalidAuthority
error AccessManagedInvalidAuthority(address authority)
AccessManagedRequiredDelay
error AccessManagedRequiredDelay(address caller, uint32 delay)
AccessManagedUnauthorized
error AccessManagedUnauthorized(address caller)
AddressEmptyCode
error AddressEmptyCode(address target)
ArrayLengthMismatch
error ArrayLengthMismatch()
AssetsAddressCanNotBeZero
error AssetsAddressCanNotBeZero()
ContextAlreadySet
error ContextAlreadySet()
ContextNotSet
error ContextNotSet()
EmptyArrayNotSupported
error EmptyArrayNotSupported()
FailedInnerCall
error FailedInnerCall()
InvalidAuthority
error InvalidAuthority()
InvalidInitialization
error InvalidInitialization()
InvalidPriceOracleMiddleware
error InvalidPriceOracleMiddleware()
NotInitializing
error NotInitializing()
PriceOracleMiddlewareCanNotBeZero
error PriceOracleMiddlewareCanNotBeZero()
SafeCastOverflowedIntToUint
error SafeCastOverflowedIntToUint(int256 value)
SourceAddressCanNotBeZero
error SourceAddressCanNotBeZero()
UnauthorizedCaller
error UnauthorizedCaller()
UnauthorizedSender
error UnauthorizedSender()
UnexpectedPriceResult
error UnexpectedPriceResult()
UnsupportedAsset
error UnsupportedAsset()
ZeroAddress
error ZeroAddress()
creation bytecode
0x608060405234801561000f575f80fd5b5060405161237938038061237983398101604081905261002e9161031f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100775750825b90505f826001600160401b031660011480156100925750303b155b9050811580156100a0575080155b156100be5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100ec57845460ff60401b1916680100000000000000001785555b6001600160a01b03871661011357604051636f6a1b8760e11b815260040160405180910390fd5b6001600160a01b03861661013a57604051632af61c2560e11b815260040160405180910390fd5b6101438761019e565b61014c866101b2565b831561019257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050610350565b6101a6610241565b6101af81610291565b50565b6001600160a01b0381166101d95760405163c438130f60e01b815260040160405180910390fd5b7f722e31f2085db8f1738654bffa04bc73275abca3504518d5cfb46903bed30d0080546001600160a01b0319166001600160a01b0383169081179091556040517f52f323e6ff9915e0ab92961ad354f75b6512b817784e674b5dfbf4e0b6fdba0e905f90a250565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661028f57604051631afcd79f60e31b815260040160405180910390fd5b565b7ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a0080546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b80516001600160a01b038116811461031a575f80fd5b919050565b5f8060408385031215610330575f80fd5b61033983610304565b915061034760208401610304565b90509250929050565b61201c8061035d5f395ff3fe608060405234801561000f575f80fd5b5060043610610115575f3560e01c80639d23d9f2116100ad578063bf7e214f1161007d578063d79f44eb11610063578063d79f44eb14610287578063db99bddd1461029a578063f4a6e458146102a2575f80fd5b8063bf7e214f1461026c578063cfefbec914610274575f80fd5b80639d23d9f2146101ee5780639f6aa3a01461020f578063a462da0214610224578063b3596f0714610244575f80fd5b80637a9e5e4b116100e85780637a9e5e4b1461016f57806387ef0b87146101825780638fb36037146101955780639569bf28146101ce575f80fd5b80630e2e4392146101195780633013d6b31461012e578063324d73651461014157806338923d001461015c575b5f80fd5b61012c6101273660046118ce565b6102ab565b005b61012c61013c36600461190d565b610339565b610149601281565b6040519081526020015b60405180910390f35b61012c61016a36600461198f565b610428565b61012c61017d36600461198f565b61043d565b61012c61019036600461198f565b6104fb565b61019d6105e3565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610153565b6101e16101dc366004611a3d565b610656565b6040516101539190611af6565b6102016101fc3660046118ce565b6106ba565b604051610153929190611b4a565b610217610806565b6040516101539190611b6e565b61022c610815565b6040516001600160a01b039091168152602001610153565b61025761025236600461198f565b610847565b60408051928352602083019190915201610153565b61022c61085c565b61022c61028236600461198f565b610890565b6101e1610295366004611a3d565b6108d0565b61012c6109b3565b61022c61034881565b6102b7335b5f36610a7e565b805f8190036102f2576040517fb9fd259b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b818110156103335761032b84848381811061031157610311611bb9565b9050602002016020810190610326919061198f565b610c9b565b6001016102f4565b50505050565b610342336102b0565b82815f82900361037e576040517fb9fd259b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082146103b7576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8281101561041f576104178787838181106103d6576103d6611bb9565b90506020020160208101906103eb919061198f565b8686848181106103fd576103fd611bb9565b9050602002016020810190610412919061198f565b610e4c565b6001016103b9565b50505050505050565b610431336102b0565b61043a81611002565b50565b3361044661085c565b6001600160a01b0316816001600160a01b0316146104a0576040517f068ca9d80000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f036104ee576040517fc2f31e5e0000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610497565b6104f7826110b7565b5050565b610504336102b0565b7f68262fe08792a71a690eb5eb2de15df1b0f463dd786bf92bdbd5f0f0d1ae8b00546001600160a01b031615610566576040517f2f3873fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f68262fe08792a71a690eb5eb2de15df1b0f463dd786bf92bdbd5f0f0d1ae8b00805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556040516001600160a01b038216907f606f0da67080f7641fd59bdd017702d2842394e653866c86c69bcc879eea2a41905f90a250565b7ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a0080545f919074010000000000000000000000000000000000000000900460ff1661062e575f610650565b7f8fb36037000000000000000000000000000000000000000000000000000000005b91505090565b60408051602081019091526060815233301461069e576040517f5c427cd900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b16001600160a01b03841683611137565b81525b92915050565b606080825f8190036106f8576040517fb9fd259b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff811115610711576107116119a8565b60405190808252806020026020018201604052801561073a578160200160208202803683370190505b5092508067ffffffffffffffff811115610756576107566119a8565b60405190808252806020026020018201604052801561077f578160200160208202803683370190505b5091505f5b818110156107fd576107bb8686838181106107a1576107a1611bb9565b90506020020160208101906107b6919061198f565b6111a9565b8583815181106107cd576107cd611bb9565b602002602001018584815181106107e6576107e6611bb9565b602090810291909101019190915252600101610784565b50509250929050565b60606108106114a1565b905090565b5f6108107f722e31f2085db8f1738654bffa04bc73275abca3504518d5cfb46903bed30d00546001600160a01b031690565b5f80610852836111a9565b9094909350915050565b5f807ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a005b546001600160a01b031692915050565b6001600160a01b038082165f9081527fbc7b173cf41b66df25801705abbfb53e317f15848d6d19b9b70f825d127da30060205260408120549091166106b4565b6040805160208101909152606081526001600160a01b03831661091f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109958484604051602401610936929190611bcd565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9569bf28000000000000000000000000000000000000000000000000000000001790523090611523565b9050808060200190518101906109ab9190611bee565b949350505050565b6109bc336102b0565b5f6109c5611577565b90506001600160a01b038116610a07576040517f20ccb74a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a487f68262fe08792a71a690eb5eb2de15df1b0f463dd786bf92bdbd5f0f0d1ae8b00805473ffffffffffffffffffffffffffffffffffffffff19169055565b6040516001600160a01b038216907f6ca66738059b52d288c52b478cf0710166b7fb2801e9262a896cbacf620cba1d905f90a250565b5f610a8c6004828486611c98565b610a9591611cbf565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f87ef0b87000000000000000000000000000000000000000000000000000000001480610b2857507fffffffff0000000000000000000000000000000000000000000000000000000081167fdb99bddd00000000000000000000000000000000000000000000000000000000145b15610b31573393505b7ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a005f80610b7c610b5f61085c565b8830610b6e60045f8b8d611c98565b610b7791611cbf565b61159d565b915091508161041f5763ffffffff811615610c5e5782547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000178355610bd661085c565b6001600160a01b03166394c7d7ee8888886040518463ffffffff1660e01b8152600401610c0593929190611d25565b5f604051808303815f87803b158015610c1c575f80fd5b505af1158015610c2e573d5f803e3d5ffd5b505084547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1685555061041f9050565b6040517f068ca9d80000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152602401610497565b6001600160a01b0381165f9081527fbc7b173cf41b66df25801705abbfb53e317f15848d6d19b9b70f825d127da300602081905260408220805473ffffffffffffffffffffffffffffffffffffffff191690557fbc7b173cf41b66df25801705abbfb53e317f15848d6d19b9b70f825d127da301805491929091905b81811015610e1257846001600160a01b0316838281548110610d3b57610d3b611bb9565b5f918252602090912001546001600160a01b031603610e0a5782610d60600184611d77565b81548110610d7057610d70611bb9565b905f5260205f20015f9054906101000a90046001600160a01b0316838281548110610d9d57610d9d611bb9565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480610dd857610dd8611d8a565b5f8281526020902081015f19908101805473ffffffffffffffffffffffffffffffffffffffff19169055019055610e12565b600101610d17565b506040516001600160a01b038516907f2c99e3be5a3a092c20b07c86ce20d0a14e4efd6493423fd0d524079d23bab7f4905f90a250505050565b6001600160a01b038216610e8c576040517f8eb68d5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610ecc576040517fbbf7accc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038281165f9081527fbc7b173cf41b66df25801705abbfb53e317f15848d6d19b9b70f825d127da300602052604090205416610f80577fbc7b173cf41b66df25801705abbfb53e317f15848d6d19b9b70f825d127da30180546001810182555f919091527fdae2ae85ef1a9afae4f49f2b82f8cfd20c44313450ca50fb4d8d843e05d1a58101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790555b6001600160a01b038281165f8181527fbc7b173cf41b66df25801705abbfb53e317f15848d6d19b9b70f825d127da3006020526040808220805473ffffffffffffffffffffffffffffffffffffffff19169486169485179055517ff6d4af0a4191a5f28a180ee80acf47e818b6b67ba492e7ea2ef0190367bfb73f9190a35050565b6001600160a01b038116611042576040517fc438130f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f722e31f2085db8f1738654bffa04bc73275abca3504518d5cfb46903bed30d00805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f52f323e6ff9915e0ab92961ad354f75b6512b817784e674b5dfbf4e0b6fdba0e905f90a250565b7ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a0080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b60605f80846001600160a01b0316846040516111539190611d9e565b5f60405180830381855af49150503d805f811461118b576040519150601f19603f3d011682016040523d82523d5f602084013e611190565b606091505b50915091506111a08583836116eb565b95945050505050565b5f806001600160a01b0383166111eb576040517f24a0114400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038381165f9081527fbc7b173cf41b66df25801705abbfb53e317f15848d6d19b9b70f825d127da30060205260408120549091169080821561136557826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015611288575060408051601f3d908101601f1916820190925261128591810190611dcd565b60015b6112a55760405163b73dbe6360e01b815260040160405180910390fd5b50919450505050826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611306575060408051601f3d908101601f1916820190925261130391810190611e1b565b60015b6113235760405163b73dbe6360e01b815260040160405180910390fd5b60ff16905061133a61133483611763565b826117a5565b94505f851161135c5760405163b73dbe6360e01b815260040160405180910390fd5b60129350611499565b5f6113977f722e31f2085db8f1738654bffa04bc73275abca3504518d5cfb46903bed30d00546001600160a01b031690565b90506001600160a01b0381166113d9576040517f55ec384a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fb3596f070000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282169063b3596f07906024016040805180830381865afa158015611435573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114599190611e3b565b9096509450601285146114775761147086866117a5565b9550601294505b5f86116114975760405163b73dbe6360e01b815260040160405180910390fd5b505b505050915091565b60607fbc7b173cf41b66df25801705abbfb53e317f15848d6d19b9b70f825d127da30060010180548060200260200160405190810160405280929190818152602001828054801561151957602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116114fb575b5050505050905090565b60605f80846001600160a01b03168460405161153f9190611d9e565b5f60405180830381855afa9150503d805f811461118b576040519150601f19603f3d011682016040523d82523d5f602084013e611190565b5f80611581611811565b90506001600160a01b038116611598573391505090565b919050565b6040516001600160a01b03848116602483015283811660448301527fffffffff00000000000000000000000000000000000000000000000000000000831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb700961300000000000000000000000000000000000000000000000000000000179052516116519190611d9e565b5f60405180830381855afa9150503d805f8114611689576040519150601f19603f3d011682016040523d82523d5f602084013e61168e565b606091505b509150915081156116e05760408151106116c057808060200190518101906116b69190611e6c565b90945092506116e0565b60208151106116e057808060200190518101906116dd9190611ea9565b93505b505094509492505050565b606082611700576116fb82611839565b61175c565b815115801561171757506001600160a01b0384163b155b15611759576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610497565b50805b9392505050565b5f808212156117a1576040517fa8ce443200000000000000000000000000000000000000000000000000000000815260048101839052602401610497565b5090565b5f821561180a57601282036117bb5750816106b4565b60128211156117ea576117e3836117d3601285611d77565b6117de90600a611fa5565b61187b565b90506106b4565b6117f5826012611d77565b61180090600a611fa5565b6117e39084611fb0565b50816106b4565b5f807f68262fe08792a71a690eb5eb2de15df1b0f463dd786bf92bdbd5f0f0d1ae8b00610880565b8051156118495780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61175c8284611fc7565b5f8083601f840112611896575f80fd5b50813567ffffffffffffffff8111156118ad575f80fd5b6020830191508360208260051b85010111156118c7575f80fd5b9250929050565b5f80602083850312156118df575f80fd5b823567ffffffffffffffff8111156118f5575f80fd5b61190185828601611886565b90969095509350505050565b5f805f8060408587031215611920575f80fd5b843567ffffffffffffffff811115611936575f80fd5b61194287828801611886565b909550935050602085013567ffffffffffffffff811115611961575f80fd5b61196d87828801611886565b95989497509550505050565b80356001600160a01b0381168114611598575f80fd5b5f6020828403121561199f575f80fd5b61175c82611979565b634e487b7160e01b5f52604160045260245ffd5b6040516020810167ffffffffffffffff811182821017156119df576119df6119a8565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a0e57611a0e6119a8565b604052919050565b5f67ffffffffffffffff821115611a2f57611a2f6119a8565b50601f01601f191660200190565b5f8060408385031215611a4e575f80fd5b611a5783611979565b9150602083013567ffffffffffffffff811115611a72575f80fd5b8301601f81018513611a82575f80fd5b8035611a95611a9082611a16565b6119e5565b818152866020838501011115611aa9575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f82516020808401526109ab6040840182611ac8565b5f8151808452602084019350602083015f5b82811015611b40578151865260209586019590910190600101611b22565b5093949350505050565b604081525f611b5c6040830185611b10565b82810360208401526111a08185611b10565b602080825282518282018190525f918401906040840190835b81811015611bae5783516001600160a01b0316835260209384019390920191600101611b87565b509095945050505050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b0383168152604060208201525f6109ab6040830184611ac8565b5f60208284031215611bfe575f80fd5b815167ffffffffffffffff811115611c14575f80fd5b820160208185031215611c25575f80fd5b611c2d6119bc565b815167ffffffffffffffff811115611c43575f80fd5b80830192505084601f830112611c57575f80fd5b8151611c65611a9082611a16565b818152866020838601011115611c79575f80fd5b8160208501602083015e5f918101602001919091528152949350505050565b5f8085851115611ca6575f80fd5b83861115611cb2575f80fd5b5050820193919092039150565b80357fffffffff000000000000000000000000000000000000000000000000000000008116906004841015611d1e577fffffffff00000000000000000000000000000000000000000000000000000000808560040360031b1b82161691505b5092915050565b6001600160a01b038416815260406020820152816040820152818360608301375f818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106b4576106b4611d63565b634e487b7160e01b5f52603160045260245ffd5b5f82518060208501845e5f920191825250919050565b805169ffffffffffffffffffff81168114611598575f80fd5b5f805f805f60a08688031215611de1575f80fd5b611dea86611db4565b60208701516040880151606089015192975090955093509150611e0f60808701611db4565b90509295509295909350565b5f60208284031215611e2b575f80fd5b815160ff8116811461175c575f80fd5b5f8060408385031215611e4c575f80fd5b505080516020909101519092909150565b80518015158114611598575f80fd5b5f8060408385031215611e7d575f80fd5b611e8683611e5d565b9150602083015163ffffffff81168114611e9e575f80fd5b809150509250929050565b5f60208284031215611eb9575f80fd5b61175c82611e5d565b6001815b6001841115611efd57808504811115611ee157611ee1611d63565b6001841615611eef57908102905b60019390931c928002611ec6565b935093915050565b5f82611f13575060016106b4565b81611f1f57505f6106b4565b8160018114611f355760028114611f3f57611f5b565b60019150506106b4565b60ff841115611f5057611f50611d63565b50506001821b6106b4565b5060208310610133831016604e8410600b8410161715611f7e575081810a6106b4565b611f8a5f198484611ec2565b805f1904821115611f9d57611f9d611d63565b029392505050565b5f61175c8383611f05565b80820281158282048414176106b4576106b4611d63565b5f82611fe157634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220a7ea7ef0c339d57f07fb0920081d58a76eaeae593c38f21681abb7bb5f63e55764736f6c634300081a003300000000000000000000000041cfe273c51e2c1391f9efa5ce7236810323eadc000000000000000000000000d9b73af0b29cbaf88f01384ea1fb5adcb608bed0