UNPKG

@perp/perp-oracle-contract

Version:

Perpetual Protocol Curie (v2) oracle contracts - v0.5.0 is not an audited version

172 lines (171 loc) 21 kB
{ "_format": "hh-sol-artifact-1", "contractName": "BandPriceFeed", "sourceName": "contracts/BandPriceFeed.sol", "abi": [ { "inputs": [ { "internalType": "contract IStdReference", "name": "stdRefArg", "type": "address" }, { "internalType": "string", "name": "baseAssetArg", "type": "string" }, { "internalType": "uint80", "name": "cacheTwapInterval", "type": "uint80" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "QUOTE_ASSET", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseAsset", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "interval", "type": "uint256" } ], "name": "cacheTwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentObservationIndex", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "interval", "type": "uint256" } ], "name": "getPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "observations", "outputs": [ { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "priceCumulative", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stdRef", "outputs": [ { "internalType": "contract IStdReference", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "update", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b5060405162001285380380620012858339810160408190526200003491620001ab565b61151a8054600160a01b600160f01b031916600160a01b6001600160501b03841602179055620000796001600160a01b038416620000dd602090811b6200030017901c565b620000a15760405162461bcd60e51b815260040162000098906200029f565b60405180910390fd5b61151c80546001600160a01b0319166001600160a01b0385161790558151620000d39061151b906020850190620000e7565b50505050620002c0565b803b15155b919050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200011f57600085556200016a565b82601f106200013a57805160ff19168380011785556200016a565b828001600101855582156200016a579182015b828111156200016a5782518255916020019190600101906200014d565b50620001789291506200017c565b5090565b5b808211156200017857600081556001016200017d565b80516001600160501b0381168114620000e257600080fd5b600080600060608486031215620001c0578283fd5b83516001600160a01b0381168114620001d7578384fd5b602085810151919450906001600160401b0380821115620001f6578485fd5b818701915087601f8301126200020a578485fd5b8151818111156200021757fe5b604051601f8201601f19168101850183811182821017156200023557fe5b60405281815283820185018a10156200024c578687fd5b8692505b818310156200026f578383018501518184018601529184019162000250565b818311156200028057868583830101525b8096505050505050620002966040850162000193565b90509250925092565b6020808252600790820152664250465f414e4360c81b604082015260600190565b610fb580620002d06000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a2e6204511610066578063a2e620451461010d578063aed3aff714610117578063cdf456e11461012c578063e757223014610141578063f06a1e131461015457610093565b80631d1a111a14610098578063252c09d7146100c1578063313ce567146100e35780635368945b146100f8575b600080fd5b6100ab6100a6366004610d6d565b61015c565b6040516100b89190610f25565b60405180910390f35b6100d46100cf366004610d6d565b610192565b6040516100b893929190610f2e565b6100eb6101ba565b6040516100b89190610f44565b6101006101bf565b6040516100b89190610dd0565b6101156101cf565b005b61011f61021b565b6040516100b89190610f16565b610134610225565b6040516100b89190610de4565b6100ab61014f366004610d6d565b6102b4565b6101346102e1565b600080610167610306565b9050826101765751905061018d565b6101898382600001518360200151610417565b9150505b919050565b60018161070881106101a357600080fd5b600302018054600182015460029092015490925083565b601290565b61151c546001600160a01b031681565b60006101d9610306565b905060006101ef826000015183602001516104c0565b9050806102175760405162461bcd60e51b815260040161020e90610e94565b60405180910390fd5b5050565b60005461ffff1681565b61151b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102ac5780601f10610281576101008083540402835291602001916102ac565b820191906000526020600020905b81548152906001019060200180831161028f57829003601f168201915b505050505081565b6000806102bf610306565b9050826102ce5751905061018d565b61018983826000015183602001516106a6565b604051806040016040528060038152602001621554d160ea1b81525081565b3b151590565b61030e610cf7565b61151c5460408051808201825260038152621554d160ea1b6020820152905163195556f360e21b81526000926001600160a01b0316916365555bcc9161035a9161151b91600401610df7565b60606040518083038186803b15801561037257600080fd5b505afa158015610386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103aa9190610d18565b905060008160400151116103d05760405162461bcd60e51b815260040161020e90610eb4565b60008160200151116103f45760405162461bcd60e51b815260040161020e90610ef5565b80516104125760405162461bcd60e51b815260040161020e90610ed5565b905090565b600061042383836104c0565b5061151a54600160a01b900469ffffffffffffffffffff16841461046057831561045757610452848484610702565b610459565b825b90506104b9565b61151a546001600160a01b0316610475610729565b146104b357610482610729565b61151a80546001600160a01b0319166001600160a01b03929092169190911790556104ae848484610702565b611519555b50611519545b9392505050565b6000805461ffff161580156104d55750600354155b15610533576040518060600160405280848152602001600081526020018381525060016000610708811061050557fe5b60030201600082015181600001556020820151816001015560408201518160020155905050600190506106a0565b6000805460019061ffff16610708811061054957fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508310156105b3576040805162461bcd60e51b815260206004820152600560248201526410d517d25560da1b604482015290519081900360640190fd5b80604001518314156105fe57805184146105fe576040805162461bcd60e51b815260206004820152600760248201526643545f4950575560c81b604482015290519081900360640190fd5b80518414156106115760009150506106a0565b6000805461ffff19811661070861ffff928316600190810184168290068416929092179384905560408581015181516060810183528a815287516020808a0151938c03918202909301928201929092529182018990529490931690811061067457fe5b600302016000820151816000015560208201518160010155604082015181600201559050506001925050505b92915050565b61151a546000906001600160a01b03166106be610729565b1480156106e0575061151a54600160a01b900469ffffffffffffffffffff1684145b156106ef5750611519546104b9565b6106fa848484610702565b949350505050565b60008061071085858561072d565b9050801561071e5780610720565b835b95945050505050565b4290565b6000805461ffff161580156107425750600354155b8061074b575083155b15610758575060006104b9565b6000805460019061ffff16610708811061076e57fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508314156107e357805184146107e3576040805162461bcd60e51b815260206004820152600860248201526710d517d25415d0d560c21b604482015290519081900360640190fd5b60006107ed610729565b905060006107fb8288610947565b9050600061084c610841610819610812868a610947565b8a906109a4565b61083b61083388604001518b61094790919063ffffffff16565b8851906109a4565b906109fd565b6020860151906109fd565b905060008061085a84610a57565b91509150600082604001518514156108775750602082015161092a565b848260400151141561088e5750602081015161092a565b8160400151836040015114156108ae5760009750505050505050506104b9565b60408201516108ce5750604082015182516020840151918603020161092a565b600083604001518603905060008460400151846040015103905061092561091a826109148561090e8a602001518a6020015161094790919063ffffffff16565b906109a4565b90610b7d565b6020870151906109fd565b925050505b6109388b6109148684610947565b9b9a5050505050505050505050565b60008282111561099e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000826109b3575060006106a0565b828202828482816109c057fe5b04146104b95760405162461bcd60e51b8152600401808060200182810382526021815260200180610f5f6021913960400191505060405180910390fd5b6000828201838110156104b9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b610a5f610cf7565b610a67610cf7565b60005460019061ffff166107088110610a7c57fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050915082600160008054906101000a900461ffff1661ffff166107088110610acc57fe5b600302016002015411610ade57610b78565b6000546001906107089061ffff9081168301160661ffff166107088110610b0157fe5b60408051606081018252600392909202929092018054825260018101546020830152600201549181018290529250610b575760408051606081018252600154815260025460208201526003549181019190915291505b8282604001511115610b6a575080610b78565b610b7383610be4565b915091505b915091565b6000808211610bd3576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610bdc57fe5b049392505050565b610bec610cf7565b610bf4610cf7565b60008054610708600161ffff9283160182160616906107078201905b6002838301049050600161070882066107088110610c2a57fe5b60408051606081018252600392909202929092018054825260018101546020830152600201549181018290529550610c6757806001019250610c10565b6001610708828201066107088110610c7b57fe5b6003020160405180606001604052908160008201548152602001600182015481526020016002820154815250509350600086866040015111159050808015610cc7575084604001518711155b15610cd25750610cef565b80610ce257600182039250610ce9565b8160010193505b50610c10565b505050915091565b60405180606001604052806000815260200160008152602001600081525090565b600060608284031215610d29578081fd5b6040516060810181811067ffffffffffffffff82111715610d4657fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b600060208284031215610d7e578081fd5b5035919050565b60008151808452815b81811015610daa57602081850181015186830182015201610d8e565b81811115610dbb5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6000602082526104b96020830184610d85565b60006040820160408352818554600180821660008114610e1e5760018114610e3c57610e75565b60028304607f16855260ff1983166060880152608087019350610e75565b60028304808652610e4c8a610f52565b875b82811015610e6b5781548a82016060015290840190602001610e4e565b8901606001955050505b5050508381036020850152610e8a8186610d85565b9695505050505050565b6020808252600690820152654250465f4e5560d01b604082015260600190565b6020808252600790820152662128232faa28ad60c91b604082015260600190565b60208082526006908201526504250465f49560d41b604082015260600190565b6020808252600790820152662128232faa212d60c91b604082015260600190565b61ffff91909116815260200190565b90815260200190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b6000908152602090209056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220663d2a1d438ccbaea0d0655fbae2be96413773285b140eacc0c3ae4557a007d464736f6c63430007060033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063a2e6204511610066578063a2e620451461010d578063aed3aff714610117578063cdf456e11461012c578063e757223014610141578063f06a1e131461015457610093565b80631d1a111a14610098578063252c09d7146100c1578063313ce567146100e35780635368945b146100f8575b600080fd5b6100ab6100a6366004610d6d565b61015c565b6040516100b89190610f25565b60405180910390f35b6100d46100cf366004610d6d565b610192565b6040516100b893929190610f2e565b6100eb6101ba565b6040516100b89190610f44565b6101006101bf565b6040516100b89190610dd0565b6101156101cf565b005b61011f61021b565b6040516100b89190610f16565b610134610225565b6040516100b89190610de4565b6100ab61014f366004610d6d565b6102b4565b6101346102e1565b600080610167610306565b9050826101765751905061018d565b6101898382600001518360200151610417565b9150505b919050565b60018161070881106101a357600080fd5b600302018054600182015460029092015490925083565b601290565b61151c546001600160a01b031681565b60006101d9610306565b905060006101ef826000015183602001516104c0565b9050806102175760405162461bcd60e51b815260040161020e90610e94565b60405180910390fd5b5050565b60005461ffff1681565b61151b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102ac5780601f10610281576101008083540402835291602001916102ac565b820191906000526020600020905b81548152906001019060200180831161028f57829003601f168201915b505050505081565b6000806102bf610306565b9050826102ce5751905061018d565b61018983826000015183602001516106a6565b604051806040016040528060038152602001621554d160ea1b81525081565b3b151590565b61030e610cf7565b61151c5460408051808201825260038152621554d160ea1b6020820152905163195556f360e21b81526000926001600160a01b0316916365555bcc9161035a9161151b91600401610df7565b60606040518083038186803b15801561037257600080fd5b505afa158015610386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103aa9190610d18565b905060008160400151116103d05760405162461bcd60e51b815260040161020e90610eb4565b60008160200151116103f45760405162461bcd60e51b815260040161020e90610ef5565b80516104125760405162461bcd60e51b815260040161020e90610ed5565b905090565b600061042383836104c0565b5061151a54600160a01b900469ffffffffffffffffffff16841461046057831561045757610452848484610702565b610459565b825b90506104b9565b61151a546001600160a01b0316610475610729565b146104b357610482610729565b61151a80546001600160a01b0319166001600160a01b03929092169190911790556104ae848484610702565b611519555b50611519545b9392505050565b6000805461ffff161580156104d55750600354155b15610533576040518060600160405280848152602001600081526020018381525060016000610708811061050557fe5b60030201600082015181600001556020820151816001015560408201518160020155905050600190506106a0565b6000805460019061ffff16610708811061054957fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508310156105b3576040805162461bcd60e51b815260206004820152600560248201526410d517d25560da1b604482015290519081900360640190fd5b80604001518314156105fe57805184146105fe576040805162461bcd60e51b815260206004820152600760248201526643545f4950575560c81b604482015290519081900360640190fd5b80518414156106115760009150506106a0565b6000805461ffff19811661070861ffff928316600190810184168290068416929092179384905560408581015181516060810183528a815287516020808a0151938c03918202909301928201929092529182018990529490931690811061067457fe5b600302016000820151816000015560208201518160010155604082015181600201559050506001925050505b92915050565b61151a546000906001600160a01b03166106be610729565b1480156106e0575061151a54600160a01b900469ffffffffffffffffffff1684145b156106ef5750611519546104b9565b6106fa848484610702565b949350505050565b60008061071085858561072d565b9050801561071e5780610720565b835b95945050505050565b4290565b6000805461ffff161580156107425750600354155b8061074b575083155b15610758575060006104b9565b6000805460019061ffff16610708811061076e57fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508314156107e357805184146107e3576040805162461bcd60e51b815260206004820152600860248201526710d517d25415d0d560c21b604482015290519081900360640190fd5b60006107ed610729565b905060006107fb8288610947565b9050600061084c610841610819610812868a610947565b8a906109a4565b61083b61083388604001518b61094790919063ffffffff16565b8851906109a4565b906109fd565b6020860151906109fd565b905060008061085a84610a57565b91509150600082604001518514156108775750602082015161092a565b848260400151141561088e5750602081015161092a565b8160400151836040015114156108ae5760009750505050505050506104b9565b60408201516108ce5750604082015182516020840151918603020161092a565b600083604001518603905060008460400151846040015103905061092561091a826109148561090e8a602001518a6020015161094790919063ffffffff16565b906109a4565b90610b7d565b6020870151906109fd565b925050505b6109388b6109148684610947565b9b9a5050505050505050505050565b60008282111561099e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000826109b3575060006106a0565b828202828482816109c057fe5b04146104b95760405162461bcd60e51b8152600401808060200182810382526021815260200180610f5f6021913960400191505060405180910390fd5b6000828201838110156104b9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b610a5f610cf7565b610a67610cf7565b60005460019061ffff166107088110610a7c57fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050915082600160008054906101000a900461ffff1661ffff166107088110610acc57fe5b600302016002015411610ade57610b78565b6000546001906107089061ffff9081168301160661ffff166107088110610b0157fe5b60408051606081018252600392909202929092018054825260018101546020830152600201549181018290529250610b575760408051606081018252600154815260025460208201526003549181019190915291505b8282604001511115610b6a575080610b78565b610b7383610be4565b915091505b915091565b6000808211610bd3576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610bdc57fe5b049392505050565b610bec610cf7565b610bf4610cf7565b60008054610708600161ffff9283160182160616906107078201905b6002838301049050600161070882066107088110610c2a57fe5b60408051606081018252600392909202929092018054825260018101546020830152600201549181018290529550610c6757806001019250610c10565b6001610708828201066107088110610c7b57fe5b6003020160405180606001604052908160008201548152602001600182015481526020016002820154815250509350600086866040015111159050808015610cc7575084604001518711155b15610cd25750610cef565b80610ce257600182039250610ce9565b8160010193505b50610c10565b505050915091565b60405180606001604052806000815260200160008152602001600081525090565b600060608284031215610d29578081fd5b6040516060810181811067ffffffffffffffff82111715610d4657fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b600060208284031215610d7e578081fd5b5035919050565b60008151808452815b81811015610daa57602081850181015186830182015201610d8e565b81811115610dbb5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6000602082526104b96020830184610d85565b60006040820160408352818554600180821660008114610e1e5760018114610e3c57610e75565b60028304607f16855260ff1983166060880152608087019350610e75565b60028304808652610e4c8a610f52565b875b82811015610e6b5781548a82016060015290840190602001610e4e565b8901606001955050505b5050508381036020850152610e8a8186610d85565b9695505050505050565b6020808252600690820152654250465f4e5560d01b604082015260600190565b6020808252600790820152662128232faa28ad60c91b604082015260600190565b60208082526006908201526504250465f49560d41b604082015260600190565b6020808252600790820152662128232faa212d60c91b604082015260600190565b61ffff91909116815260200190565b90815260200190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b6000908152602090209056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220663d2a1d438ccbaea0d0655fbae2be96413773285b140eacc0c3ae4557a007d464736f6c63430007060033", "linkReferences": {}, "deployedLinkReferences": {} }