0 txs
1.9k calls
constructor
constructor()
functions
cooldownBypass
viewfunction cooldownBypass(address) view returns (bool)
currentEpoch
viewfunction currentEpoch() view returns (uint8)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
renounceOwnership
viewfunction renounceOwnership() view
stakeParametersByToken
viewfunction stakeParametersByToken(address) view returns (uint8 epoch, uint248 stakeLimit, uint104 totalStaked, uint104 totalCoolingDown, uint48 cooldown)
stakes
viewfunction stakes(address, address) view returns (uint256 stakedAmount, uint152 coolingDownAmount, uint104 cooldownStartTimestamp)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
acceptOwnership
nonpayablefunction acceptOwnership()
initialize
nonpayablefunction initialize(address _owner)
rescueTokens
nonpayablefunction rescueTokens(address token, address to, uint256 amount)
setEpoch
nonpayablefunction setEpoch(uint8 newEpoch)
stake
nonpayablefunction stake(address token, uint104 amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstake
nonpayablefunction unstake(address token, uint104 amount)
updateBypass
nonpayablefunction updateBypass(address addr, bool bypass)
updateStakeParameters
nonpayablefunction updateStakeParameters(address token, uint8 epoch, uint248 stakeLimit, uint48 cooldown)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(address token, uint104 amount)
events
Initialized
event Initialized(uint64 version)
NewEpoch
event NewEpoch(uint8 indexed newEpoch, uint8 indexed previousEpoch)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Stake
event Stake(address indexed user, address indexed lpToken, uint256 amount)
StakeParametersUpdated
event StakeParametersUpdated(address indexed lpToken, uint8 indexed epoch, uint248 stakeLimit, uint104 cooldown)
TokensRescued
event TokensRescued(address indexed token, address indexed to, uint256 amount)
Unstake
event Unstake(address indexed user, address indexed lpToken, uint256 amount)
Upgraded
event Upgraded(address indexed implementation)
Withdraw
event Withdraw(address indexed user, address indexed lpToken, uint256 amount)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
CantRenounceOwnership
error CantRenounceOwnership()
CooldownNotOver
error CooldownNotOver()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidAmount
error InvalidAmount()
InvalidEpoch
error InvalidEpoch()
InvalidInitialization
error InvalidInitialization()
InvariantBroken
error InvariantBroken()
MaxCooldownExceeded
error MaxCooldownExceeded()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StakeLimitExceeded
error StakeLimitExceeded()
TransferFailed
error TransferFailed()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
ZeroAddressException
error ZeroAddressException()
creation bytecode
0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051611c366100f95f395f818161119c015281816111c501526113040152611c365ff3fe60806040526004361061011b575f3560e01c806392cd3ae11161009d578063c4d66de811610062578063c4d66de81461038f578063cea9d26f146103ae578063e30c3978146103cd578063e76c3f55146103e1578063f2fde38b14610495575f80fd5b806392cd3ae114610255578063a4e47b6614610293578063ad3cb1cc14610314578063b3dd411d14610351578063b5a2e01b14610370575f80fd5b80636ab498a3116100e35780636ab498a3146101b8578063715018a6146101d757806376671808146101eb57806379ba5097146102155780638da5cb5b14610229575f80fd5b8063171054171461011f57806321ec52b4146101405780634f1ef2861461015f57806352d1902d146101725780635d1f079014610199575b5f80fd5b34801561012a575f80fd5b5061013e61013936600461183c565b6104b4565b005b34801561014b575f80fd5b5061013e61015a3660046118a6565b61059a565b61013e61016d3660046118fa565b6107a3565b34801561017d575f80fd5b506101866107be565b6040519081526020015b60405180910390f35b3480156101a4575f80fd5b5061013e6101b33660046119c3565b6107d9565b3480156101c3575f80fd5b5061013e6101d23660046118a6565b61080b565b3480156101e2575f80fd5b5061013e610a2a565b3480156101f6575f80fd5b505f546102039060ff1681565b60405160ff9091168152602001610190565b348015610220575f80fd5b5061013e610a4b565b348015610234575f80fd5b5061023d610a98565b6040516001600160a01b039091168152602001610190565b348015610260575f80fd5b5061028361026f3660046119ed565b60036020525f908152604090205460ff1681565b6040519015158152602001610190565b34801561029e575f80fd5b506102e86102ad366004611a06565b600160208181525f9384526040808520909152918352912080549101546001600160981b03811690600160981b90046001600160681b031683565b604080519384526001600160981b0390921660208401526001600160681b031690820152606001610190565b34801561031f575f80fd5b50610344604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101909190611a37565b34801561035c575f80fd5b5061013e61036b3660046118a6565b610acc565b34801561037b575f80fd5b5061013e61038a366004611a6c565b610c95565b34801561039a575f80fd5b5061013e6103a93660046119ed565b610d0d565b3480156103b9575f80fd5b5061013e6103c8366004611a85565b610e2b565b3480156103d8575f80fd5b5061023d610fa4565b3480156103ec575f80fd5b5061044d6103fb3660046119ed565b60026020525f90815260409020805460019091015460ff82169161010090046001600160f81b0316906001600160681b0380821691600160681b810490911690600160d01b900465ffffffffffff1685565b6040805160ff90961686526001600160f81b0390941660208601526001600160681b039283169385019390935216606083015265ffffffffffff16608082015260a001610190565b3480156104a0575f80fd5b5061013e6104af3660046119ed565b610fcc565b6104bc611051565b6276a70065ffffffffffff821611156104e8576040516397e2d36d60e01b815260040160405180910390fd5b6001600160a01b0384165f81815260026020526040908190206001600160f81b0385166101000260ff8716908117825560018201805465ffffffffffff8716600160d01b026001600160d01b0390911617905591519092907fe9ea56618d31afea8558726ec90e5fef0c46d19e0674b8462b208da51359ed799061058b90879087906001600160f81b0392909216825265ffffffffffff16602082015260400190565b60405180910390a35050505050565b6105a2611085565b806001600160681b0316805f036105cc5760405163162908e360e11b815260040160405180910390fd5b6001600160a01b0383165f8181526002602090815260408083203384526001835281842094845293909152902080546001600160681b03851611156106245760405163162908e360e11b815260040160405180910390fd5b836001600160681b0316815f015f82825461063f9190611ad2565b90915550506001810180546001600160681b03861691905f9061066c9084906001600160981b0316611ae5565b82546001600160981b039182166101009390930a928302928202191691909117909155600183810180546001600160681b03428116600160981b02919094161790558401805487935090915f916106c591859116611b05565b92506101000a8154816001600160681b0302191690836001600160681b031602179055508382600101600d8282829054906101000a90046001600160681b031661070f9190611b25565b92506101000a8154816001600160681b0302191690836001600160681b0316021790555061073c856110bc565b6040516001600160681b03851681526001600160a01b0386169033907f390b1276974b9463e5d66ab10df69b6f3d7b930eb066a0e66df327edd2cc811c906020015b60405180910390a350505061079f60015f80516020611be183398151915255565b5050565b6107ab611191565b6107b482611235565b61079f828261123d565b5f6107c76112f9565b505f80516020611bc183398151915290565b6107e1611051565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b610813611085565b806001600160681b0316805f0361083d5760405163162908e360e11b815260040160405180910390fd5b6001600160a01b0383165f818152600260209081526040808320338452600180845282852095855294909252909120918201549091906001600160681b0385166001600160981b0390911610156108a75760405163162908e360e11b815260040160405180910390fd5b335f9081526003602052604090205460ff161580156109005750600182810154908201546108f491600160d01b900465ffffffffffff1690600160981b90046001600160681b0316611b25565b6001600160681b031642105b1561091e5760405163ae04b1c760e01b815260040160405180910390fd5b6001810180546001600160681b03861691905f906109469084906001600160981b0316611b45565b92506101000a8154816001600160981b0302191690836001600160981b031602179055508382600101600d8282829054906101000a90046001600160681b03166109909190611b05565b92506101000a8154816001600160681b0302191690836001600160681b031602179055506109db33856001600160681b0316876001600160a01b03166113429092919063ffffffff16565b6109e4856110bc565b6040516001600160681b03851681526001600160a01b0386169033907f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200161077e565b610a32611051565b60405163185b73b160e01b815260040160405180910390fd5b3380610a55610fa4565b6001600160a01b031614610a8c5760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b610a95816113a1565b50565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b610ad4611085565b806001600160681b0316805f03610afe5760405163162908e360e11b815260040160405180910390fd5b6001600160a01b0383165f90815260026020526040812080549154909160ff918216911614610b405760405163d5b25b6360e01b815260040160405180910390fd5b805460018201546101009091046001600160f81b031690610b6b9085906001600160681b0316611b25565b6001600160681b03161115610b9357604051631f12fec560e31b815260040160405180910390fd5b6001810180548491905f90610bb29084906001600160681b0316611b25565b82546101009290920a6001600160681b03818102199093169183160217909155335f9081526001602090815260408083206001600160a01b038a16845290915281208054928716935091610c07908490611b65565b90915550610c2b90506001600160a01b03851633306001600160681b0387166113d9565b610c34846110bc565b6040516001600160681b03841681526001600160a01b0385169033907f99039fcf0a98f484616c5196ee8b2ecfa971babf0b519848289ea4db381f85f79060200160405180910390a3505061079f60015f80516020611be183398151915255565b610c9d611051565b5f5460ff90811690821603610cc55760405163d5b25b6360e01b815260040160405180910390fd5b5f805460405160ff91821692918416917f168c41a8a7f5d81176dd8b849fe1dd8791803a3b75f63bd1987452a09385b90a91a35f805460ff191660ff92909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610d525750825b90505f8267ffffffffffffffff166001148015610d6e5750303b155b905081158015610d7c575080155b15610d9a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610dc457845460ff60401b1916600160401b1785555b610dcc611418565b610dd4611420565b610ddd86611430565b8315610e2357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b610e33611051565b610e3b611085565b80805f03610e5c5760405163162908e360e11b815260040160405180910390fd5b6001600160a01b038316610e8357604051635919af9760e11b815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03851601610f1e575f836001600160a01b0316836040515f6040518083038185875af1925050503d805f8114610ef1576040519150601f19603f3d011682016040523d82523d5f602084013e610ef6565b606091505b5050905080610f18576040516312171d8360e31b815260040160405180910390fd5b50610f3b565b610f326001600160a01b0385168484611342565b610f3b846110bc565b826001600160a01b0316846001600160a01b03167f77023e19c7343ad491fd706c36335ca0e738340a91f29b1fd81e2673d44896c484604051610f8091815260200190565b60405180910390a350610f9f60015f80516020611be183398151915255565b505050565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610abc565b610fd4611051565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b0383169081178255611018610a98565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3361105a610a98565b6001600160a01b0316146110835760405163118cdaa760e01b8152336004820152602401610a83565b565b5f80516020611be18339815191528054600119016110b657604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b0381165f8181526002602052604080822090516370a0823160e01b81523060048201529092906370a0823190602401602060405180830381865afa15801561110d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111319190611b78565b6001830154909150611155906001600160681b03600160681b820481169116611b25565b6001600160681b0316811015610f9f5760405163b215190760e01b815260040160405180910390fd5b60015f80516020611be183398151915255565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061121757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661120b5f80516020611bc1833981519152546001600160a01b031690565b6001600160a01b031614155b156110835760405163703e46dd60e11b815260040160405180910390fd5b610a95611051565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611297575060408051601f3d908101601f1916820190925261129491810190611b78565b60015b6112bf57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610a83565b5f80516020611bc183398151915281146112ef57604051632a87526960e21b815260048101829052602401610a83565b610f9f8383611441565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110835760405163703e46dd60e11b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052610f9f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611496565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561079f826114f7565b6040516001600160a01b0384811660248301528381166044830152606482018390526114129186918216906323b872dd9060840161136f565b50505050565b611083611567565b611428611567565b6110836115b0565b611438611567565b610a95816115b8565b61144a826115e9565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561148e57610f9f828261164c565b61079f6116c0565b5f6114aa6001600160a01b038416836116df565b905080515f141580156114ce5750808060200190518101906114cc9190611b8f565b155b15610f9f57604051635274afe760e01b81526001600160a01b0384166004820152602401610a83565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661108357604051631afcd79f60e31b815260040160405180910390fd5b61117e611567565b6115c0611567565b6001600160a01b038116610a8c57604051631e4fbdf760e01b81525f6004820152602401610a83565b806001600160a01b03163b5f0361161e57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610a83565b5f80516020611bc183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516116689190611baa565b5f60405180830381855af49150503d805f81146116a0576040519150601f19603f3d011682016040523d82523d5f602084013e6116a5565b606091505b50915091506116b58583836116f3565b925050505b92915050565b34156110835760405163b398979f60e01b815260040160405180910390fd5b60606116ec83835f61174f565b9392505050565b60608261170857611703826117e8565b6116ec565b815115801561171f57506001600160a01b0384163b155b1561174857604051639996b31560e01b81526001600160a01b0385166004820152602401610a83565b5092915050565b6060814710156117745760405163cd78605960e01b8152306004820152602401610a83565b5f80856001600160a01b0316848660405161178f9190611baa565b5f6040518083038185875af1925050503d805f81146117c9576040519150601f19603f3d011682016040523d82523d5f602084013e6117ce565b606091505b50915091506117de8683836116f3565b9695505050505050565b8051156117f85780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114611827575f80fd5b919050565b803560ff81168114611827575f80fd5b5f805f806080858703121561184f575f80fd5b61185885611811565b93506118666020860161182c565b925060408501356001600160f81b0381168114611881575f80fd5b9150606085013565ffffffffffff8116811461189b575f80fd5b939692955090935050565b5f80604083850312156118b7575f80fd5b6118c083611811565b915060208301356001600160681b03811681146118db575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561190b575f80fd5b61191483611811565b9150602083013567ffffffffffffffff80821115611930575f80fd5b818501915085601f830112611943575f80fd5b813581811115611955576119556118e6565b604051601f8201601f19908116603f0116810190838211818310171561197d5761197d6118e6565b81604052828152886020848701011115611995575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b8015158114610a95575f80fd5b5f80604083850312156119d4575f80fd5b6119dd83611811565b915060208301356118db816119b6565b5f602082840312156119fd575f80fd5b6116ec82611811565b5f8060408385031215611a17575f80fd5b611a2083611811565b9150611a2e60208401611811565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611a7c575f80fd5b6116ec8261182c565b5f805f60608486031215611a97575f80fd5b611aa084611811565b9250611aae60208501611811565b9150604084013590509250925092565b634e487b7160e01b5f52601160045260245ffd5b818103818111156116ba576116ba611abe565b6001600160981b0381811683821601908082111561174857611748611abe565b6001600160681b0382811682821603908082111561174857611748611abe565b6001600160681b0381811683821601908082111561174857611748611abe565b6001600160981b0382811682821603908082111561174857611748611abe565b808201808211156116ba576116ba611abe565b5f60208284031215611b88575f80fd5b5051919050565b5f60208284031215611b9f575f80fd5b81516116ec816119b6565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212205b7f2f48e5f2d7f62239d395334e91b2bf56637aa81781eead2ab64321fb12c064736f6c63430008190033