0 txs
1 call
constructor
constructor()
functions
CLAIM_PERIOD
viewfunction CLAIM_PERIOD() view returns (uint96)
getPool
viewfunction getPool(uint256 pool_id) view returns (address staking_token, address rewards_token, uint96 start_epoch, uint96 end_epoch, uint256 stake_amount, uint256 reward_rate, uint256 reward_rate_cumsum, uint96 last_update_epoch, uint256 available_rewards)
getPoolsCount
viewfunction getPoolsCount() view returns (uint256)
getUserRewards
viewfunction getUserRewards(uint256 pool_id, address user) view returns (uint256)
owner
viewfunction owner() view returns (address)
SCALE_FACTOR
viewfunction SCALE_FACTOR() view returns (uint256)
stakes
viewfunction stakes(address, uint256) view returns (uint256 stake_amount, uint256 reward_amount, uint256 reward_rate_cumsum)
addRewards
nonpayablefunction addRewards(uint256 pool_id, uint256 amount)
claim
nonpayablefunction claim(uint256 pool_id)
createPool
nonpayablefunction createPool(address staking_token, address rewards_token, uint96 start_epoch, uint96 end_epoch, uint256 reward_amount, uint256 transfer_reward_amount) returns (uint256)
renounceOwnership
nonpayablefunction renounceOwnership()
stake
nonpayablefunction stake(uint256 pool_id, uint256 stake_amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawRewards
nonpayablefunction withdrawRewards(uint256 pool_id, address to, uint256 amount)
withdrawStake
nonpayablefunction withdrawStake(uint256 pool_id)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolCreated
event PoolCreated(uint256 indexed pool_id, address staking_token, address rewards_token, uint96 start_epoch, uint96 end_epoch, uint256 scale_factor)
PoolUpdated
event PoolUpdated(uint256 indexed pool_id, uint256 stake_amount, uint256 reward_rate, uint256 reward_rate_cumsum, uint96 last_update_epoch)
RewardAdded
event RewardAdded(uint256 indexed pool_id, uint256 amount)
RewardPaid
event RewardPaid(uint256 indexed pool_id, address indexed user, uint256 amount)
RewardWithdrawn
event RewardWithdrawn(uint256 indexed pool_id, address indexed to, uint256 amount)
StakeUpdated
event StakeUpdated(uint256 indexed pool_id, address indexed user, uint256 stake_amount, uint256 reward_amount, uint256 reward_rate_cumsum)
StakeWithdrawn
event StakeWithdrawn(uint256 indexed pool_id, address indexed user, uint256 amount)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405234801561000f575f5ffd5b50338061003557604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61003e816101f1565b50600180805560408051610120810182525f80825260208201818152928201818152606083018281526080840183815260a0850184815260c0860185815260e087018681526101008801878152600280549b8c018155909752965197516001600160a01b03988916600160a01b6001600160601b039283168102919091177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace6007909c029b8c01559551945194909816938816909402929092177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf880155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0870155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad1860155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad285015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad3840155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad490920180546001600160601b03191692909116919091179055610240565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611c948061024d5f395ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c80637b0472f011610093578063ce4b5bbe11610063578063ce4b5bbe14610276578063f2fde38b14610286578063fc41aa0914610299578063fdeef425146102ac575f5ffd5b80637b0472f01461022e5780637db7e3bf146102415780638da5cb5b14610254578063b4ac68601461026e575f5ffd5b8063379607f5116100ce578063379607f51461019e578063584b62a1146101b15780635d9d231814610205578063715018a614610226575f5ffd5b8063068bcd8d146100f457806321241dfe1461016757806325d5971f14610189575b5f5ffd5b610107610102366004611a34565b6102bf565b604080516001600160a01b039a8b1681529990981660208a01526001600160601b03968716978901979097529385166060880152608087019290925260a086015260c08501521660e0830152610100820152610120015b60405180910390f35b6101716234bc0081565b6040516001600160601b03909116815260200161015e565b61019c610197366004611a34565b6103fe565b005b61019c6101ac366004611a34565b610699565b6101ea6101bf366004611a66565b600360209081525f928352604080842090915290825290208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161015e565b610218610213366004611aa4565b6109b7565b60405190815260200161015e565b61019c610db7565b61019c61023c366004611b06565b610dca565b61019c61024f366004611b26565b6110ba565b5f546040516001600160a01b03909116815260200161015e565b6102186112e8565b610218683635c9adc5dea0000081565b61019c610294366004611b59565b6112fe565b61019c6102a7366004611b06565b611351565b6102186102ba366004611b72565b6114cf565b5f5f5f5f5f5f5f5f5f895f811180156102d9575060025481105b6103345760405162461bcd60e51b815260206004820152602160248201527f4d61726b6574696e675374616b696e673a496e76616c696420506f6f6c2049446044820152602160f81b60648201526084015b60405180910390fd5b5f60028c8154811061034857610348611b9c565b905f5260205f2090600702019050805f015f9054906101000a90046001600160a01b0316816001015f9054906101000a90046001600160a01b0316825f0160149054906101000a90046001600160601b03168360010160149054906101000a90046001600160601b0316846002015485600301548660040154876006015f9054906101000a90046001600160601b031688600501549a509a509a509a509a509a509a509a509a5050509193959799909294969850565b610406611671565b805f81118015610417575060025481105b61046d5760405162461bcd60e51b815260206004820152602160248201527f4d61726b6574696e675374616b696e673a496e76616c696420506f6f6c2049446044820152602160f81b606482015260840161032b565b61047782336116b4565b335f908152600360209081526040808320858452909152812060028054919291859081106104a7576104a7611b9c565b5f91825260209091206007909102016001810154909150600160a01b90046001600160601b0316426001600160601b0316101561054c5760405162461bcd60e51b815260206004820152603360248201527f4d61726b6574696e675374616b696e673a4561726c792057697468647261776160448201527f6c206973206e6f74207065726d69747465642100000000000000000000000000606482015260840161032b565b81541561068a5761056c335b835483546001600160a01b0316919061182e565b81546002820180545f90610581908490611bc4565b90915550508154604051908152339085907f459d5aef2c549903c1eeb1736f5728845d5ccf82537ddd5bf8035795eee892639060200160405180910390a35f8255335b6001600160a01b0316847f8fe70e917ad578cbb5b0779aa52ee3f23afa39c5295542125059f2a4e98cbbfe845f01548560010154866002015460405161061d939291909283526020830191909152604082015260600190565b60405180910390a36002810154600382015460048301546006840154604080519485526020850193909352918301526001600160601b0316606082015284907fe9d4ced29dfd1b7392aa77b7ea3220d8318a5a65cd900f4e40e9d816d11d84f29060800160405180910390a25b50505061069660018055565b50565b6106a1611671565b805f811180156106b2575060025481105b6107085760405162461bcd60e51b815260206004820152602160248201527f4d61726b6574696e675374616b696e673a496e76616c696420506f6f6c2049446044820152602160f81b606482015260840161032b565b61071282336116b4565b335f9081526003602090815260408083208584529091528120600280549192918590811061074257610742611b9c565b5f91825260209091206007909102016001810154909150600160a01b90046001600160601b0316426001600160601b031610156107e75760405162461bcd60e51b815260206004820152603360248201527f4d61726b6574696e675374616b696e673a4561726c792057697468647261776160448201527f6c206973206e6f74207065726d69747465642100000000000000000000000000606482015260840161032b565b5f8260010154116108605760405162461bcd60e51b815260206004820152602160248201527f4d61726b6574696e675374616b696e673a4e6f7468696e6720746f20636c616960448201527f6d00000000000000000000000000000000000000000000000000000000000000606482015260840161032b565b8160010154816005015410156108c75760405162461bcd60e51b815260206004820152602660248201527f4d61726b6574696e675374616b696e673a496e73756666696369656e742062616044820152656c616e63652160d01b606482015260840161032b565b81541561092e576108d733610558565b81546002820180545f906108ec908490611bc4565b90915550508154604051908152339085907f459d5aef2c549903c1eeb1736f5728845d5ccf82537ddd5bf8035795eee892639060200160405180910390a35f82555b61094c33600180850154908401546001600160a01b0316919061182e565b8160010154816005015f8282546109639190611bc4565b90915550506001820154604051908152339085907f04492fab062412e7e4e5f46c9e919f1640652946a5e163ad6e6c1c03d87954d29060200160405180910390a35f600183018190556002830155336105c4565b5f6109c06118a7565b6001600160601b038416426001600160601b031610610a475760405162461bcd60e51b815260206004820152603860248201527f4d61726b6574696e675374616b696e673a456e642074696d65206d757374206260448201527f652067726561746572207468616e2074696d655f6e6f77210000000000000000606482015260840161032b565b610a636001600160601b038616426001600160601b03166118ec565b9450836001600160601b0316856001600160601b031610610aec5760405162461bcd60e51b815260206004820152603760248201527f4d61726b6574696e675374616b696e673a53746172742074696d65206d75737460448201527f206265206c657373207468616e20656e642074696d6521000000000000000000606482015260840161032b565b5f610af78686611bd7565b6001600160601b0316610b1385683635c9adc5dea00000611bf6565b610b1d9190611c0d565b60408051610120810182526001600160a01b038b811682526001600160601b038a8116602084018181528d84169585019586528b8316606086019081525f6080870181815260a088018a815260c0890183815260e08a018f81526101008b0197885260028054600180820183558288529c519851988c16600160a01b998c168a02177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace6007909202918201559c51965196909a16958916909602949094177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8b015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad08a0155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad189015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad288015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad387015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad490950180546bffffffffffffffffffffffff191695909216949094179055549293509091610ce79190611bc4565b604080516001600160a01b038c811682528b1660208201526001600160601b038a81168284015289166060820152683635c9adc5dea000006080820152905191925082917f7c89ff64ffbfc8006a5f9ef85541e2fc4f990a7906ba4920928ffd9c9b7b3a959181900360a00190a28315610dab57610d706001600160a01b038916333087611900565b807f6c07ee05dcf262f13abf9d87b846ee789d2f90fe991d495acd7d7fc109ee1f5585604051610da291815260200190565b60405180910390a25b98975050505050505050565b610dbf6118a7565b610dc85f611939565b565b610dd2611671565b815f81118015610de3575060025481105b610e395760405162461bcd60e51b815260206004820152602160248201527f4d61726b6574696e675374616b696e673a496e76616c696420506f6f6c2049446044820152602160f81b606482015260840161032b565b5f60028481548110610e4d57610e4d611b9c565b5f91825260209091206007909102018054909150600160a01b90046001600160601b0316426001600160601b031610158015610ea557506001810154600160a01b90046001600160601b0316426001600160601b0316105b610f165760405162461bcd60e51b8152602060048201526024808201527f4d61726b6574696e675374616b696e673a506f6f6c206973206e6f742061637460448201527f6976652100000000000000000000000000000000000000000000000000000000606482015260840161032b565b5f8311610f8b5760405162461bcd60e51b815260206004820152603560248201527f4d61726b6574696e675374616b696e673a7374616b655f616d6f756e74206d7560448201527f73742062652067726561746572207468616e2030210000000000000000000000606482015260840161032b565b610fa23382546001600160a01b0316903086611900565b610fac84336116b4565b335f9081526003602090815260408083208784529091528120805490918591839190610fd9908490611c2c565b9250508190555083826002015f828254610ff39190611c2c565b90915550508054600182015460028301546040805193845260208401929092528282015251339187917f8fe70e917ad578cbb5b0779aa52ee3f23afa39c5295542125059f2a4e98cbbfe9181900360600190a36002820154600383015460048401546006850154604080519485526020850193909352918301526001600160601b0316606082015285907fe9d4ced29dfd1b7392aa77b7ea3220d8318a5a65cd900f4e40e9d816d11d84f29060800160405180910390a25050506110b660018055565b5050565b6110c26118a7565b825f811180156110d3575060025481105b6111295760405162461bcd60e51b815260206004820152602160248201527f4d61726b6574696e675374616b696e673a496e76616c696420506f6f6c2049446044820152602160f81b606482015260840161032b565b5f821161119e5760405162461bcd60e51b815260206004820152603260248201527f4d61726b6574696e675374616b696e673a616d6f756e74206d7573742062652060448201527f67726561746572207468616e207a65726f210000000000000000000000000000606482015260840161032b565b5f600285815481106111b2576111b2611b9c565b905f5260205f209060070201905082816005015410156112235760405162461bcd60e51b815260206004820152602660248201527f4d61726b6574696e675374616b696e673a496e73756666696369656e742062616044820152656c616e63652160d01b606482015260840161032b565b6001810154611246906234bc0090600160a01b90046001600160601b0316611c3f565b6001600160601b0316426001600160601b031610158061126857506002810154155b611270575f5ffd5b6001810154611289906001600160a01b0316858561182e565b82816005015f82825461129c9190611bc4565b90915550506040518381526001600160a01b0385169086907fb886382d42263e3c08a157dd29a33c435741f36625dbc3acb6fb8c19bbf782479060200160405180910390a35050505050565b6002545f906112f990600190611bc4565b905090565b6113066118a7565b6001600160a01b038116611348576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f600482015260240161032b565b61069681611939565b611359611671565b815f8111801561136a575060025481105b6113c05760405162461bcd60e51b815260206004820152602160248201527f4d61726b6574696e675374616b696e673a496e76616c696420506f6f6c2049446044820152602160f81b606482015260840161032b565b5f82116114355760405162461bcd60e51b815260206004820152603260248201527f4d61726b6574696e675374616b696e673a616d6f756e74206d7573742062652060448201527f67726561746572207468616e207a65726f210000000000000000000000000000606482015260840161032b565b5f6002848154811061144957611449611b9c565b905f5260205f20906007020190506114776114613390565b60018301546001600160a01b0316903086611900565b82816005015f82825461148a9190611c2c565b909155505060405183815284907f6c07ee05dcf262f13abf9d87b846ee789d2f90fe991d495acd7d7fc109ee1f559060200160405180910390a250506110b660018055565b5f825f811180156114e1575060025481105b6115375760405162461bcd60e51b815260206004820152602160248201527f4d61726b6574696e675374616b696e673a496e76616c696420506f6f6c2049446044820152602160f81b606482015260840161032b565b6001600160a01b0383165f9081526003602090815260408083208784529091528120600280549192918790811061157057611570611b9c565b5f918252602082206007919091020160068101549092506115bd906001600160601b03166115b8425b60018601546001600160601b0391821691600160a01b909104166119a0565b6118ec565b6004830154600284015491925090158015906115e5575060068301546001600160601b031682115b156116325760028301546003840154600685015461160c906001600160601b031685611bc4565b6116169190611bf6565b6116209190611c0d565b836004015461162f9190611c2c565b90505b683635c9adc5dea0000084600201548261164c9190611bc4565b85546116589190611bf6565b6116629190611c0d565b8460010154610dab9190611c2c565b6002600154036116ad576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b5f600283815481106116c8576116c8611b9c565b5f918252602082206007919091020160068101549092506116f5906001600160601b03166115b842611599565b90505f826002015411801561171a575060068201546001600160601b03908116908216115b1561177657600282015460038301546006840154611741906001600160601b031684611bd7565b6001600160601b03166117549190611bf6565b61175e9190611c0d565b826004015f8282546117709190611c2c565b90915550505b6006820180546bffffffffffffffffffffffff19166001600160601b0383161790556001600160a01b03831615611828576001600160a01b0383165f908152600360209081526040808320878452909152902080541561181c57683635c9adc5dea00000816002015484600401546117ee9190611bc4565b82546117fa9190611bf6565b6118049190611c0d565b816001015f8282546118169190611c2c565b90915550505b60048301546002909101555b50505050565b6040516001600160a01b038381166024830152604482018390526118a291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506119af565b505050565b5f546001600160a01b03163314610dc8576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161032b565b5f8282188284110282185b90505b92915050565b6040516001600160a01b0384811660248301528381166044830152606482018390526118289186918216906323b872dd9060840161185b565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8282188284100282186118f7565b5f5f60205f8451602086015f885af1806119ce576040513d5f823e3d81fd5b50505f513d915081156119e55780600114156119f2565b6001600160a01b0384163b155b15611828576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161032b565b5f60208284031215611a44575f5ffd5b5035919050565b80356001600160a01b0381168114611a61575f5ffd5b919050565b5f5f60408385031215611a77575f5ffd5b611a8083611a4b565b946020939093013593505050565b80356001600160601b0381168114611a61575f5ffd5b5f5f5f5f5f5f60c08789031215611ab9575f5ffd5b611ac287611a4b565b9550611ad060208801611a4b565b9450611ade60408801611a8e565b9350611aec60608801611a8e565b9598949750929560808101359460a0909101359350915050565b5f5f60408385031215611b17575f5ffd5b50508035926020909101359150565b5f5f5f60608486031215611b38575f5ffd5b83359250611b4860208501611a4b565b929592945050506040919091013590565b5f60208284031215611b69575f5ffd5b6118f782611a4b565b5f5f60408385031215611b83575f5ffd5b82359150611b9360208401611a4b565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156118fa576118fa611bb0565b6001600160601b0382811682821603908111156118fa576118fa611bb0565b80820281158282048414176118fa576118fa611bb0565b5f82611c2757634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156118fa576118fa611bb0565b6001600160601b0381811683821601908111156118fa576118fa611bb056fea26469706673582212200608caaee113912350e72aca1c3f6df36573f491de49a14d101c1be46e39462b64736f6c634300081e0033