1 tx
2 calls
constructor
constructor(address _quote_addr)
functions
isAuthorizedSigner
viewfunction isAuthorizedSigner(address _signer) view returns (bool)
isOnchainOracle
viewfunction isOnchainOracle(address) view returns (bool)
owner
viewfunction owner() view returns (address)
path_div
viewfunction path_div(address, uint256) view returns (address)
path_mul
viewfunction path_mul(address, uint256) view returns (address)
PRECISION
viewfunction PRECISION() view returns (uint8)
QUOTE_ADDRESS
viewfunction QUOTE_ADDRESS() view returns (address)
QUOTE_DECIMALS
viewfunction QUOTE_DECIMALS() view returns (uint8)
quoteToken
viewfunction quoteToken() view returns (address)
readAbsoluteCollateralValue
viewfunction readAbsoluteCollateralValue(address base_addr, uint256 base_amount, uint8 base_decimals, bytes offchain_data) view returns (uint256)
readCollateralValues
viewfunction readCollateralValues(address base_addr, uint8 result_decimals, uint256 base_amount, uint8 base_decimals, uint256 quote_amount, bytes offchain_data) view returns (uint256, uint256)
readPrice
viewfunction readPrice(address base_addr, uint8 target_decimals, bytes offchain_data) view returns (uint256)
readQuoteAmountToCollateralAmount
viewfunction readQuoteAmountToCollateralAmount(address base_addr, uint8 base_decimals, uint256 quote_amount, bytes offchain_data) view returns (uint256)
readRelativeCollateralValue
viewfunction readRelativeCollateralValue(address base_addr, uint8 result_decimals, uint256 base_amount, uint8 base_decimals, uint256 quote_amount, bytes offchain_data) view returns (uint256)
renounceOwnership
nonpayablefunction renounceOwnership()
setOracles
nonpayablefunction setOracles(address base_addr, address[] mul, address[] div)
setSigner
nonpayablefunction setSigner(address signer, bool state)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
useAbsoluteCollateralValue
nonpayablefunction useAbsoluteCollateralValue(address base_addr, uint256 base_amount, uint8 base_decimals, bytes offchain_data) returns (uint256)
useCollateralValues
nonpayablefunction useCollateralValues(address base_addr, uint8 result_decimals, uint256 base_amount, uint8 base_decimals, uint256 quote_amount, bytes offchain_data) returns (uint256, uint256)
usePrice
nonpayablefunction usePrice(address base_addr, uint8 target_decimals, bytes offchain_data) returns (uint256)
useQuoteAmountToCollateralAmount
nonpayablefunction useQuoteAmountToCollateralAmount(address base_addr, uint8 base_decimals, uint256 quote_amount, bytes offchain_data) returns (uint256)
useRelativeCollateralValue
nonpayablefunction useRelativeCollateralValue(address base_addr, uint8 result_decimals, uint256 base_amount, uint8 base_decimals, uint256 quote_amount, bytes offchain_data) returns (uint256)
events
OnChainOracleAdded
event OnChainOracleAdded(address indexed base_token, address[] mul_path, address[] div_path)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PriceLog
event PriceLog(address indexed base_token, uint256 price, uint256 decimals)
SignerChanged
event SignerChanged(address signer, bool is_authorized)
errors
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60c06040527f08c4a6ba964682b11f46df8ca21a2332795b52b556af6ce17e5f0727ca0f8e53600255348015610033575f5ffd5b5060405161216f38038061216f83398101604081905261005291610148565b338061007757604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b610080816100f9565b506001600160a01b03811660808190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa1580156100c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ed9190610175565b60ff1660a05250610195565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610158575f5ffd5b81516001600160a01b038116811461016e575f5ffd5b9392505050565b5f60208284031215610185575f5ffd5b815160ff8116811461016e575f5ffd5b60805160a051611f886101e75f395f81816101db015281816105c4015261087a01525f8181610224015281816103ac01528181610416015281816104db015281816108c601526109d10152611f885ff3fe608060405234801561000f575f5ffd5b5060043610610184575f3560e01c8063715018a6116100dd578063b57a1b0b11610088578063f2fde38b11610063578063f2fde38b14610372578063f621a19a14610385578063fc01d62b146103a7575f5ffd5b8063b57a1b0b14610339578063bff734c11461034c578063c5801aa31461035f575f5ffd5b80639ef1f7c2116100b85780639ef1f7c21461030b578063aaf5eb681461031e578063b4e37cf914610326575f5ffd5b8063715018a6146102e05780638da5cb5b146102e8578063927b0504146102f8575f5ffd5b806331cb61051161013d5780634bbf415c116101185780634bbf415c146102a75780635d523216146102ba5780636a089215146102cd575f5ffd5b806331cb61051461025c5780633628815c1461027157806349045e1614610284575f5ffd5b8063150e89cb1161016d578063150e89cb146101d65780631ff8d6dc1461020f578063217a4b7014610222575f5ffd5b80630649b8c2146101885780630cd07409146101b5575b5f5ffd5b61019b610196366004611804565b6103ce565b604080519283526020830191909152015b60405180910390f35b6101c86101c336600461188d565b610413565b6040519081526020016101ac565b6101fd7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101ac565b6101c861021d3660046118ee565b6105a2565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016101ac565b61026f61026a36600461195c565b610628565b005b61019b61027f366004611804565b61063e565b610297610292366004611997565b61064e565b60405190151581526020016101ac565b6101c86102b5366004611804565b61068a565b6102446102c83660046119b9565b6106c9565b6101c86102db3660046118ee565b6106fd565b61026f61070c565b5f546001600160a01b0316610244565b61026f610306366004611a24565b61071f565b6102446103193660046119b9565b61083c565b6101fd601581565b6101c8610334366004611804565b610855565b6101c8610347366004611a95565b610864565b6101c861035a36600461188d565b6108c3565b6101c861036d366004611a95565b610ad4565b61026f610380366004611997565b610ae3565b610297610393366004611997565b60056020525f908152604090205460ff1681565b6102447f000000000000000000000000000000000000000000000000000000000000000081565b5f5f5f6103de8a898988886106fd565b90508086816103ee8c600a611bdd565b6103f89190611beb565b6104029190611c02565b925092505097509795505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361045f5761045884600a611bdd565b905061059a565b5f8460ff161161046d575f5ffd5b6001600160a01b0385165f9081526005602052604090205460ff1615610497576104588585610b39565b5f6104a385600a611bdd565b90505f5f5f5f6104b38888610f87565b50509350935093509350896001600160a01b0316846001600160a01b031614801561050f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b801561051d57505f8160ff16115b61056e5760405162461bcd60e51b815260206004820152601960248201527f426164206f6666636861696e206f7261636c652064617461210000000000000060448201526064015b60405180910390fd5b61057981600a611bdd565b6105838387611beb565b61058d9190611c02565b955061059a945050505050565b949350505050565b5f5f6105b18760158686610413565b90506105bf6015600a611bdd565b6105ea7f0000000000000000000000000000000000000000000000000000000000000000600a611bdd565b6105f587600a611bdd565b6105ff848a611beb565b6106099190611c02565b6106139190611beb565b61061d9190611c02565b979650505050505050565b610630611171565b61063a82826111b6565b5050565b5f5f5f6103de8a898988886105a2565b5f6001600160a01b0382161580159061068457506001600160a01b0382165f9081526001602081905260409091205460ff161515145b92915050565b5f5f61069989888887876105a2565b905084816106a88a600a611bdd565b6106b29190611beb565b6106bc9190611c02565b9998505050505050505050565b6004602052815f5260405f2081815481106106e2575f80fd5b5f918252602090912001546001600160a01b03169150829050565b5f5f6105b187601586866108c3565b610714611171565b61071d5f611218565b565b610727611171565b6001600160a01b0385165f9081526005602052604090205460ff161561078f5760405162461bcd60e51b815260206004820152601660248201527f4f7261636c6520697320616c72656164792073657421000000000000000000006044820152606401610565565b6001600160a01b0385165f9081526003602052604090206107b190858561171b565b506001600160a01b0385165f9081526004602052604090206107d490838361171b565b506001600160a01b0385165f8181526005602052604090819020805460ff19166001179055517f7f62a858613430febc57d74cd39ba9acb468281347bb5fe1acabb12482e890529061082d908790879087908790611c69565b60405180910390a25050505050565b6003602052815f5260405f2081815481106106e2575f80fd5b5f5f61069989888887876106fd565b5f5f6108738760158686610413565b90506108a07f0000000000000000000000000000000000000000000000000000000000000000600a611bdd565b6108ab87600a611bdd565b82876108b96015600a611bdd565b6105ff9190611beb565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361094f57604080516001815260ff861660208201526001600160a01b038716917f5db0211664709a6e813c8a533f05660f4d86d46ea914d072768d780cb75a934c910160405180910390a261045884600a611bdd565b5f8460ff161161095d575f5ffd5b6001600160a01b0385165f9081526005602052604081205460ff161561098e576109878686610b39565b9050610a85565b61099985600a611bdd565b90505f5f5f5f6109a98888611274565b50509350935093509350896001600160a01b0316846001600160a01b0316148015610a0557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b8015610a1357505f8160ff16115b610a5f5760405162461bcd60e51b815260206004820152601960248201527f426164206f6666636861696e206f7261636c65206461746121000000000000006044820152606401610565565b610a6a81600a611bdd565b610a748387611beb565b610a7e9190611c02565b9450505050505b6040805182815260ff871660208201526001600160a01b038816917f5db0211664709a6e813c8a533f05660f4d86d46ea914d072768d780cb75a934c910160405180910390a295945050505050565b5f5f61087387601586866108c3565b610aeb611171565b6001600160a01b038116610b2d576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610565565b610b3681611218565b50565b6001600160a01b0382165f90815260036020908152604080832080548251818502810185019093528083528493830182828015610b9d57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610b7f575b505050506001600160a01b0386165f9081526004602090815260408083208054825181850281018501909352808352959650929490935090830182828015610c0c57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610bee575b505050505090505f81518351610c229190611c8f565b11610c6f5760405162461bcd60e51b815260206004820152601260248201527f556e737570706f7274656420746f6b656e2100000000000000000000000000006044820152606401610565565b5f610c7b85600a611bdd565b90505f5b8351811015610dfc575f848281518110610c9b57610c9b611ca2565b602002602001015190505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d069190611cb6565b60ff1690505f826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610d48573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6c9190611cef565b5050509150505f82118015610d8057505f81135b610dcc5760405162461bcd60e51b815260206004820152601060248201527f426164206f7261636c65206461746121000000000000000000000000000000006044820152606401610565565b610dd782600a611d3d565b610de18287611beb565b610deb9190611c02565b94505060019092019150610c7f9050565b505f5b8251811015610f7d575f838281518110610e1b57610e1b611ca2565b602002602001015190505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e62573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e869190611cb6565b60ff1690505f826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610ec8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec9190611cef565b5050509150505f82118015610f0057505f81135b610f4c5760405162461bcd60e51b815260206004820152601060248201527f426164206f7261636c65206461746121000000000000000000000000000000006044820152606401610565565b80610f5883600a611d3d565b610f629087611beb565b610f6c9190611c02565b94505060019092019150610dff9050565b5095945050505050565b5f808080808086610fda5760405162461bcd60e51b815260206004820152601c60248201527f4f6666436861696e4f7261636c653a496e76616c6964206461746121000000006044820152606401610565565b5f80610fe8898b018b611de7565b915091505f5f5f5f5f5f5f5f898060200190518101906110089190611e67565b97509750975097509750975097509750600254881461108f5760405162461bcd60e51b815260206004820152602160248201527f4f6666436861696e4f7261636c653a496e76616c696420545950455f4841534860448201527f21000000000000000000000000000000000000000000000000000000000000006064820152608401610565565b4687146110de5760405162461bcd60e51b815260206004820181905260248201527f4f6666436861696e4f7261636c653a496e76616c696420636861696e5f6964216044820152606401610565565b806bffffffffffffffffffffffff16426bffffffffffffffffffffffff16111561114a5760405162461bcd60e51b815260206004820152601c60248201527f4f6666436861696e4f7261636c653a45787069726564206461746121000000006044820152606401610565565b6111548a8a6112b8565b949e50929c50909a50985096509450505050509295509295509295565b5f546001600160a01b0316331461071d576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610565565b6001600160a01b0382165f81815260016020908152604091829020805460ff19168515159081179091558251938452908301527f70f1a3dba165402559aaa92407aa69ed152f584fde0bc213bcf1c47acef771b6910160405180910390a15050565b5f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f5f5f5f5f5f5f5f5f5f5f61128a8e8e610f87565b9550955095509550955095508585858585859b509b509b509b509b509b505050505050509295509295509295565b5f6112cb6112c584611327565b83611361565b90506112d68161064e565b6113225760405162461bcd60e51b815260206004820152601e60248201527f4f6666436861696e4f7261636c653a4e6f7420617574686f72697a65642100006044820152606401610565565b505050565b5f6113328251611389565b82604051602001611344929190611f04565b604051602081830303815290604052805190602001209050919050565b5f5f5f5f61136f8686611426565b92509250925061137f828261146f565b5090949350505050565b60605f61139583611572565b60010190505f8167ffffffffffffffff8111156113b4576113b4611d48565b6040519080825280601f01601f1916602001820160405280156113de576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846113e857509392505050565b5f5f5f835160410361145d576020840151604085015160608601515f1a61144f88828585611653565b955095509550505050611468565b505081515f91506002905b9250925092565b5f82600381111561148257611482611f3e565b0361148b575050565b600182600381111561149f5761149f611f3e565b036114d6576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156114ea576114ea611f3e565b03611524576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610565565b600382600381111561153857611538611f3e565b0361063a576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610565565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106115ba577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106115e6576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061160457662386f26fc10000830492506010015b6305f5e100831061161c576305f5e100830492506008015b612710831061163057612710830492506004015b60648310611642576064830492506002015b600a83106106845760010192915050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561168c57505f91506003905082611711565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156116dd573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661170857505f925060019150829050611711565b92505f91508190505b9450945094915050565b828054828255905f5260205f20908101928215611779579160200282015b8281111561177957815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03843516178255602090920191600190910190611739565b50611785929150611789565b5090565b5b80821115611785575f815560010161178a565b6001600160a01b0381168114610b36575f5ffd5b60ff81168114610b36575f5ffd5b5f5f83601f8401126117cf575f5ffd5b50813567ffffffffffffffff8111156117e6575f5ffd5b6020830191508360208285010111156117fd575f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a03121561181a575f5ffd5b87356118258161179d565b96506020880135611835816117b1565b955060408801359450606088013561184c816117b1565b93506080880135925060a088013567ffffffffffffffff81111561186e575f5ffd5b61187a8a828b016117bf565b989b979a50959850939692959293505050565b5f5f5f5f606085870312156118a0575f5ffd5b84356118ab8161179d565b935060208501356118bb816117b1565b9250604085013567ffffffffffffffff8111156118d6575f5ffd5b6118e2878288016117bf565b95989497509550505050565b5f5f5f5f5f60808688031215611902575f5ffd5b853561190d8161179d565b9450602086013593506040860135611924816117b1565b9250606086013567ffffffffffffffff81111561193f575f5ffd5b61194b888289016117bf565b969995985093965092949392505050565b5f5f6040838503121561196d575f5ffd5b82356119788161179d565b91506020830135801515811461198c575f5ffd5b809150509250929050565b5f602082840312156119a7575f5ffd5b81356119b28161179d565b9392505050565b5f5f604083850312156119ca575f5ffd5b82356119d58161179d565b946020939093013593505050565b5f5f83601f8401126119f3575f5ffd5b50813567ffffffffffffffff811115611a0a575f5ffd5b6020830191508360208260051b85010111156117fd575f5ffd5b5f5f5f5f5f60608688031215611a38575f5ffd5b8535611a438161179d565b9450602086013567ffffffffffffffff811115611a5e575f5ffd5b611a6a888289016119e3565b909550935050604086013567ffffffffffffffff811115611a89575f5ffd5b61194b888289016119e3565b5f5f5f5f5f60808688031215611aa9575f5ffd5b8535611ab48161179d565b94506020860135611ac4816117b1565b935060408601359250606086013567ffffffffffffffff81111561193f575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611b3557808504811115611b1957611b19611ae6565b6001841615611b2757908102905b60019390931c928002611afe565b935093915050565b5f82611b4b57506001610684565b81611b5757505f610684565b8160018114611b6d5760028114611b7757611b93565b6001915050610684565b60ff841115611b8857611b88611ae6565b50506001821b610684565b5060208310610133831016604e8410600b8410161715611bb6575081810a610684565b611bc25f198484611afa565b805f1904821115611bd557611bd5611ae6565b029392505050565b5f6119b260ff841683611b3d565b808202811582820484141761068457610684611ae6565b5f82611c1c57634e487b7160e01b5f52601260045260245ffd5b500490565b8183526020830192505f815f5b84811015611c5f578135611c418161179d565b6001600160a01b031686526020958601959190910190600101611c2e565b5093949350505050565b604081525f611c7c604083018688611c21565b828103602084015261061d818587611c21565b8082018082111561068457610684611ae6565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611cc6575f5ffd5b81516119b2816117b1565b805169ffffffffffffffffffff81168114611cea575f5ffd5b919050565b5f5f5f5f5f60a08688031215611d03575f5ffd5b611d0c86611cd1565b60208701516040880151606089015192975090955093509150611d3160808701611cd1565b90509295509295909350565b5f6119b28383611b3d565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611d6b575f5ffd5b813567ffffffffffffffff811115611d8557611d85611d48565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611db457611db4611d48565b604052818152838201602001851015611dcb575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215611df8575f5ffd5b823567ffffffffffffffff811115611e0e575f5ffd5b611e1a85828601611d5c565b925050602083013567ffffffffffffffff811115611e36575f5ffd5b611e4285828601611d5c565b9150509250929050565b80516bffffffffffffffffffffffff81168114611cea575f5ffd5b5f5f5f5f5f5f5f5f610100898b031215611e7f575f5ffd5b885160208a015160408b01519199509750611e998161179d565b60608a0151909650611eaa8161179d565b60808a015160a08b01519196509450611ec2816117b1565b9250611ed060c08a01611e4c565b9150611ede60e08a01611e4c565b90509295985092959890939650565b5f81518060208401855e5f93019283525090919050565b7f19457468657265756d205369676e6564204d6573736167653a0a00000000000081525f61059a611f38601a840186611eed565b84611eed565b634e487b7160e01b5f52602160045260245ffdfea264697066735822122032c44a518b2889bfb89eb45c5e71f3475d3d78c350addc2bd391c44bfb0a736064736f6c634300081e00330000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d