0 txs
74 calls
constructor
constructor(address _systemRegistry)
functions
accessController
viewfunction accessController() view returns (address)
ALPHA
viewfunction ALPHA() view returns (uint256)
APR_FILTER_INIT_INTERVAL_IN_SEC
viewfunction APR_FILTER_INIT_INTERVAL_IN_SEC() view returns (uint256)
APR_SNAPSHOT_INTERVAL_IN_SEC
viewfunction APR_SNAPSHOT_INTERVAL_IN_SEC() view returns (uint256)
baseApr
viewfunction baseApr() view returns (uint256)
baseAprFilterInitialized
viewfunction baseAprFilterInitialized() view returns (bool)
calculateEthPerToken
viewfunction calculateEthPerToken() view returns (uint256)
destinationMessageSend
viewfunction destinationMessageSend() view returns (bool)
DISCOUNT_SNAPSHOT_INTERVAL_IN_SEC
viewfunction DISCOUNT_SNAPSHOT_INTERVAL_IN_SEC() view returns (uint256)
discountHistory
viewfunction discountHistory(uint256) view returns (uint24)
discountTimestampByPercent
viewfunction discountTimestampByPercent() view returns (uint40)
getAddressId
viewfunction getAddressId() view returns (address)
getAprId
viewfunction getAprId() view returns (bytes32)
getSystemRegistry
viewfunction getSystemRegistry() view returns (address)
lastBaseAprEthPerToken
viewfunction lastBaseAprEthPerToken() view returns (uint256)
lastBaseAprSnapshotTimestamp
viewfunction lastBaseAprSnapshotTimestamp() view returns (uint256)
lastDiscountSnapshotTimestamp
viewfunction lastDiscountSnapshotTimestamp() view returns (uint256)
lstTokenAddress
viewfunction lstTokenAddress() view returns (address)
shouldSnapshot
viewfunction shouldSnapshot() view returns (bool)
usePriceAsDiscount
purefunction usePriceAsDiscount() pure returns (bool)
current
nonpayablefunction current() returns (tuple)
initialize
nonpayablefunction initialize(bytes32[], bytes initData)
setDestinationMessageSend
nonpayablefunction setDestinationMessageSend()
snapshot
nonpayablefunction snapshot()
events
BaseAprSnapshotTaken
event BaseAprSnapshotTaken(uint256 priorEthPerToken, uint256 priorTimestamp, uint256 currentEthPerToken, uint256 currentTimestamp, uint256 priorBaseApr, uint256 currentBaseApr)
DestinationMessageSendSet
event DestinationMessageSendSet(bool destinationMessageSend)
DiscountSnapshotTaken
event DiscountSnapshotTaken(uint256 priorTimestamp, uint24 discount, uint256 currentTimestamp)
Initialized
event Initialized(uint8 version)
errors
AccessDenied
error AccessDenied()
IncorrectTimestamps
error IncorrectTimestamps()
InvalidParam
error InvalidParam(string paramName)
MissingRole
error MissingRole(bytes32 role, address user)
NoSnapshotTaken
error NoSnapshotTaken()
UndefinedAddress
error UndefinedAddress()
ZeroAddress
error ZeroAddress(string paramName)
ZeroDivisor
error ZeroDivisor()
creation bytecode
0x60c06040526006805460ff60381b191690553480156200001d575f80fd5b50604051620018d1380380620018d1833981016040819052620000409162000239565b808080816001600160a01b031663bc43cbaf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000080573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000a6919062000239565b6001600160a01b038116620000ce57604051630cbe126f60e11b815260040160405180910390fd5b6001600160a01b031660805260408051808201909152600f81526e5f73797374656d526567697374727960881b60208201526200010d9082906200012c565b6001600160a01b031660a0526200012362000165565b505050620002ac565b6001600160a01b03821662000161578060405163eac0d38960e01b81526004016200015891906200025e565b60405180910390fd5b5050565b5f54610100900460ff1615620001ce5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840162000158565b5f5460ff90811610156200021f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811462000236575f80fd5b50565b5f602082840312156200024a575f80fd5b8151620002578162000221565b9392505050565b5f602080835283518060208501525f5b818110156200028c578581018301518582016040015282016200026e565b505f604082860101526040601f19601f8301168501019250505092915050565b60805160a0516115e0620002f15f395f81816102eb0152818161080401528181610d4c0152610e8e01525f81816102a7015281816107710152610b9c01526115e05ff3fe608060405234801561000f575f80fd5b5060043610610153575f3560e01c80637b09a4d3116100bf578063bc43cbaf11610079578063bc43cbaf146102a2578063cbd0a0cd146102c9578063e59dd828146102d1578063f12baf5c146102e9578063f972a4031461030f578063ffb0ba1d14610317575f80fd5b80637b09a4d3146102515780639711715a146102655780639fa6a6e31461026d578063afa8563b14610282578063b0bb1c5a1461028b578063b78c7ea01461029a575f80fd5b806344149ca91161011057806344149ca9146101ef578063448c84141461020357806350f22add1461022a578063618c48ff1461023457806365d98f571461023d5780636b5640ad14610247575f80fd5b80630a4df617146101575780631942a1a01461016e578063243a6cdf1461017757806325b1a9b61461018c5780632b5663ec1461019e578063366b33fb146101c8575b5f80fd5b6007545b6040519081526020015b60405180910390f35b61015b60045481565b61018a6101853660046111dd565b610320565b005b5f5b6040519015158152602001610165565b5f546201000090046001600160a01b03165b6040516001600160a01b039091168152602001610165565b6101db6101d63660046112db565b610501565b60405162ffffff9091168152602001610165565b60065461018e90600160301b900460ff1681565b6006546102149064ffffffffff1681565b60405164ffffffffff9091168152602001610165565b61015b6203f48081565b61015b60015481565b61015b6201518081565b61015b6202a30081565b60065461018e90600160381b900460ff1681565b61018a61052f565b6102756105cd565b60405161016591906112f2565b61015b60035481565b61015b67016345785d8a000081565b61015b6106a0565b6101b07f000000000000000000000000000000000000000000000000000000000000000081565b61018e61071c565b5f546101b0906201000090046001600160a01b031681565b7f00000000000000000000000000000000000000000000000000000000000000006101b0565b61018a610733565b61015b60025481565b5f54610100900460ff161580801561033e57505f54600160ff909116105b806103575750303b15801561035757505f5460ff166001145b6103bf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156103e0575f805461ff0019166101001790555b5f828060200190518101906103f59190611370565b80515f805462010000600160b01b031916620100006001600160a01b039384168102919091179182905592935061047c9290041660408051602081018290526005606082015264065726332360dc1b60808201526001600160a01b038316918101919091525f9060a001604051602081830303815290604052805190602001209050919050565b6007555f6104886106a0565b6001819055426002556006805466ff0000000000001916905590506104ac81610917565b6104b4610a3f565b505080156104fb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600581600a8110610510575f80fd5b600a9182820401919006600302915054906101000a900462ffffff1681565b6105597fb24d60b8ec6e13b591c36c81b8ba9e01422aace0ada340f101db25935eac6d9433610b74565b61059e576040516301d4003760e61b81527fb24d60b8ec6e13b591c36c81b8ba9e01422aace0ada340f101db25935eac6d9460048201523360248201526044016103b6565b6105a661071c565b6105c35760405163e80707e160e01b815260040160405180910390fd5b6105cb610c10565b565b6105d5611179565b5f6105e4600254600354610e75565b90506040518060a0016040528060068054906101000a900460ff16610609574261060b565b825b815260200160045481526020016106286106236106a0565b610e8a565b81526040805161014081019182905260209092019190600590600a90825f855b82829054906101000a900462ffffff1662ffffff1681526020019060030190602082600201049283019260010382029150808411610648579050505050918352505060065464ffffffffff1660209091015292915050565b5f80546040516303d1689d60e11b8152670de0b6b3a76400006004820152620100009091046001600160a01b0316906307a2d13a90602401602060405180830381865afa1580156106f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071791906113ba565b905090565b5f610725610fc1565b806107175750610717610fff565b604051632474521560e21b81527f476fc7092505435d9cd7613219fde08d35d5e8d46b628a64ad8c3b491ef588be60048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa1580156107be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e291906113d1565b6107ff57604051634ca8886760e01b815260040160405180910390fd5b6108ac7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635573b8b66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561085e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088291906113f7565b6040518060400160405280600c81526020016b6d65737361676550726f787960a01b815250611011565b6006805460ff600160381b808304821615810267ff000000000000001990931692909217928390556040517ffa0bd055da820f3bc0c1501322e860681edeb591fe50e67b56666d9e4a99468e9361090c9390049091161515815260200190565b60405180910390a150565b5f64174876e80061092783610e8a565b610931919061143a565b90505f80821361094257505f610959565b629896808212610956575062989680610959565b50805b600654819060059065010000000000900460ff16600a811061097d5761097d611466565b600a91828204019190066003026101000a81548162ffffff021916908362ffffff160217905550600a600660059054906101000a900460ff1660016109c2919061147a565b6109cc9190611493565b6006805460ff92909216650100000000000265ff0000000000199092169190911790556003546040805191825262ffffff8316602083015242908201527f257f765a1802f6a7ca3d6d3f7b7bdf277a5f9df8e3107e66558a2d9c9c04da3a9060600160405180910390a150504260035550565b600654600a905f906005908390600290610a6690839065010000000000900460ff166114b4565b610a7091906114c7565b610a7a91906114da565b600a8110610a8a57610a8a611466565b600a91828204019190066003029054906101000a900462ffffff1662ffffff1690505f600583600185600660059054906101000a900460ff1660ff16610ad091906114b4565b610ada91906114c7565b610ae491906114da565b600a8110610af457610af4611466565b600a80820492909201549190066003026101000a900462ffffff169050620186a064ffffffffff83168111158282118015908190610b30575081155b15610b4d576006805464ffffffffff19164264ffffffffff161790555b80158015610b585750815b15610b6c576006805464ffffffffff191690555b505050505050565b604051632474521560e21b8152600481018390526001600160a01b0382811660248301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906391d1485490604401602060405180830381865afa158015610be3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0791906113d1565b90505b92915050565b5f610c196106a0565b9050610c23610fc1565b15610e54575f610c39600254600154428561103e565b90505f60068054906101000a900460ff1615610c6b57610c6467016345785d8a0000600454846110eb565b9050610c84565b506006805466ff0000000000001916600160301b179055805b600154600254600454604080519384526020840192909252828201869052426060840152608083015260a08201839052517ff6f6dccb15bc636c822c11121702d326e9db62e525d4e543cbe79d6b8e5ba07d9181900360c00190a1600654600160381b900460ff1615610e46575f604051806060016040528042815260200183815260200185815250604051602001610d39919081518152602080830151908201526040918201519181019190915260600190565b60405160208183030381529060405290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635573b8b66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dca91906113f7565b6001600160a01b03166323c640e77f3e9c7a8767d3790a3e992d4112a3613fd19e69407ce8607dbc7053a0a18a90de836040518363ffffffff1660e01b8152600401610e17929190611530565b5f604051808303815f87803b158015610e2e575f80fd5b505af1158015610e40573d5f803e3d5ffd5b50505050505b600455506001819055426002555b610e5c610fff565b15610e7257610e6a81610917565b610e72610a3f565b50565b5f818311610e835781610c07565b5090919050565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f3c274f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ee8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0c91906113f7565b5f80546040516334ff2eeb60e01b8152620100009091046001600160a01b03908116600483015292935090918316906334ff2eeb906024016020604051808303815f875af1158015610f60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8491906113ba565b90505f84610f9a83670de0b6b3a7640000611548565b610fa4919061155f565b9050610fb881670de0b6b3a7640000611572565b95945050505050565b6006545f90600160301b900460ff1615610fee576203f480600254610fe691906114b4565b421015905090565b6202a300600254610fe691906114b4565b5f62015180600354610fe691906114b4565b6001600160a01b03821661103a578060405163eac0d38960e01b81526004016103b69190611598565b5050565b5f835f0361105f57604051631071d4d360e11b815260040160405180910390fd5b84831161107f5760405163218f7e0d60e21b815260040160405180910390fd5b83821161108d57505f6110e3565b5f670de0b6b3a7640000856110a28583611548565b6110ac919061155f565b6110b691906114c7565b90505f6110c387866114c7565b9050806110d46301e1338084611548565b6110de919061155f565b925050505b949350505050565b5f670de0b6b3a7640000841180611100575083155b1561113657604051634389d5ab60e01b8152602060048201526005602482015264616c70686160d81b60448201526064016103b6565b670de0b6b3a76400006111498584611548565b61115b86670de0b6b3a76400006114c7565b6111659086611548565b61116f91906114b4565b6110e3919061155f565b6040518060a001604052805f81526020015f81526020015f815260200161119e6111aa565b81525f60209091015290565b604051806101400160405280600a906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b5f805f604084860312156111ef575f80fd5b833567ffffffffffffffff80821115611206575f80fd5b818601915086601f830112611219575f80fd5b813581811115611227575f80fd5b602088818360051b860101111561123c575f80fd5b808401965081955080880135935082841115611256575f80fd5b838801935088601f850112611269575f80fd5b833591508282111561127d5761127d6111c9565b604051601f8301601f19908116603f011681019084821181831017156112a5576112a56111c9565b816040528381528a838588010111156112bc575f80fd5b83838701848301375f8385830101528096505050505050509250925092565b5f602082840312156112eb575f80fd5b5035919050565b5f6101c082019050825182526020808401516020840152604084015160408401526060840151606084015f5b600a81101561134057825162ffffff168252918301919083019060010161131e565b5050505064ffffffffff6080840151166101a083015292915050565b6001600160a01b0381168114610e72575f80fd5b5f60208284031215611380575f80fd5b6040516020810181811067ffffffffffffffff821117156113a3576113a36111c9565b60405282516113b18161135c565b81529392505050565b5f602082840312156113ca575f80fd5b5051919050565b5f602082840312156113e1575f80fd5b815180151581146113f0575f80fd5b9392505050565b5f60208284031215611407575f80fd5b81516113f08161135c565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261144857611448611412565b600160ff1b82145f198414161561146157611461611426565b500590565b634e487b7160e01b5f52603260045260245ffd5b60ff8181168382160190811115610c0a57610c0a611426565b5f60ff8316806114a5576114a5611412565b8060ff84160691505092915050565b80820180821115610c0a57610c0a611426565b81810381811115610c0a57610c0a611426565b5f826114e8576114e8611412565b500690565b5f81518084525f5b81811015611511576020818501810151868301820152016114f5565b505f602082860101526020601f19601f83011685010191505092915050565b828152604060208201525f6110e360408301846114ed565b8082028115828204841417610c0a57610c0a611426565b5f8261156d5761156d611412565b500490565b8181035f83128015838313168383128216171561159157611591611426565b5092915050565b602081525f610c0760208301846114ed56fea2646970667358221220212a249a56fe2700af047d37024e0459f933885255a3725bd2a820140ede833364736f6c634300081800330000000000000000000000002218f90a98b0c070676f249ef44834686daa4285