0 txs
557 calls
constructor
constructor()
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
earned
viewfunction earned(address account, address _rewardToken) view returns (uint256)
fraction
viewfunction fraction(address) view returns (uint256)
getRewardTokens
viewfunction getRewardTokens() view returns (address[] tokens)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
lastTimeRewardApplicable
viewfunction lastTimeRewardApplicable(address _rewardToken) view returns (uint256)
MAX_DURATION
viewfunction MAX_DURATION() view returns (uint256)
OWNER_ROLE
viewfunction OWNER_ROLE() view returns (bytes32)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
rewardData
viewfunction rewardData(address) view returns (uint256 rewardRate, uint256 periodFinish, uint256 lastUpdateTime, uint256 rewardPerTokenStored)
rewardPerToken
viewfunction rewardPerToken(address _rewardToken) view returns (uint256)
rewards
viewfunction rewards(address, address) view returns (uint256)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UMO
viewfunction UMO() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
userRewardPerTokenPaid
viewfunction userRewardPerTokenPaid(address, address) view returns (uint256)
addRewardAmount
nonpayablefunction addRewardAmount(address _rewardToken, uint256 reward, uint256 duration)
addRewardToken
nonpayablefunction addRewardToken(address _rewardToken)
getReward
nonpayablefunction getReward()
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _governanceContract)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setGovernanceContract
nonpayablefunction setGovernanceContract(address _governanceContract)
updateReward
nonpayablefunction updateReward(address account)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
GovernanceContractUpdated
event GovernanceContractUpdated(address indexed UMO)
Initialized
event Initialized(uint64 version)
RewardAdded
event RewardAdded(address indexed rewardToken, uint256 reward)
RewardPaid
event RewardPaid(address indexed user, address indexed rewardToken, uint256 reward)
RewardTokenAdded
event RewardTokenAdded(address indexed rewardToken)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
DurationExceeds
error DurationExceeds()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
NotUMO
error NotUMO()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
RewardNotPositive
error RewardNotPositive()
TokenAlreadyExists
error TokenAlreadyExists()
TransferFailed
error TransferFailed()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a080604052346100ea57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b604051611c8590816100f08239608051818181610ba60152610c7a0152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880610054565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146112c0575080631129753f1461125a5780631c03e6cc1461119d578063211dc32d14611171578063248a9ca3146111535780632f2ff15d1461112257806336568abe146110dc5780633d18b91214610e9a57806348e5d9f814610e3e5780634f1ef28614610bfd57806352d1902d14610b93578063632447c914610b4e578063638634ee14610b2b5780637035ab9814610ada57806375b238fc14610ab15780637bb7bed114610a6f57806391d1485414610a15578063a217fddf146109f9578063ad3cb1cc1461097d578063b1724b461461095f578063b2afd88614610936578063c4d66de81461069c578063c4f59f9b146105d0578063d547741f14610598578063d7a6e0c814610242578063e58378bb14610219578063e70b9e27146101c8578063e74006441461018e5763f12297771461015e57600080fd5b3461018957602036600319011261018957602061018161017c611313565b6115af565b604051908152f35b600080fd5b34610189576020366003190112610189576001600160a01b036101af611313565b1660005260036020526020604060002054604051908152f35b34610189576040366003190112610189576101e1611313565b6101e9611329565b6001600160a01b039182166000908152600560209081526040808320949093168252928352819020549051908152f35b34610189576000366003190112610189576020604051600080516020611b908339815191528152f35b346101895760603660031901126101895761025b611313565b3360009081527fb16e88c42fd4e48df2dd6a2eabd6bc9aec654ec170056b470819f8892cc6431c602052604090205460443591906024359060ff16156105715762278d00831161056057801561054f5760005b60015481101561030257806102c460019261137d565b838060a01b0391549060031b1c1680600052600260205260026102f96040600020926102ef816115af565b6003850155611574565b910155016102ae565b509060018060a01b03169182600052600260205260026040600020015415610489575b82600052600260205261039e604060002091600183019283548042101560001461043e575085600052600360205261038361036586604060002054611404565b61036f84826113e4565b83555b61037d8484546113d1565b906113ae565b86600052600360205260406000205560024291015542611404565b90556040516323b872dd60e01b815233600482015230602482015260448101829052906020826064816000875af1908115610432577fac24935fd910bc682b5ccb1a07b718cadf8cf2f6d1404c4f3ddc3662dae40e2992602092610407575b50604051908152a2005b61042690833d851161042b575b61041e818361133f565b81019061155c565b6103fd565b503d610414565b6040513d6000823e3d90fd5b61047861046361045d6104556103839442906113ae565b8554906113d1565b88611404565b88600052600360205260406000205490611404565b61048284826113e4565b8355610372565b6104916116cb565b82600052600260205260026040600020015461053e57600154600160401b811015610528578060016104c6920160015561137d565b81546001600160a01b0360039290921b91821b19169085901b17905560008381526002602081905260408220429181018290556001015583907ff3e4c2c64e71e6ba2eaab9a599bced62f9eb91d2cda610bf41aa8c80ff2cf8269080a2610325565b634e487b7160e01b600052604160045260246000fd5b63c991cbb160e01b60005260046000fd5b6365f346ed60e11b60005260046000fd5b630b73a8e560e11b60005260046000fd5b63e2517d3f60e01b60005233600452600080516020611c1083398151915260245260446000fd5b34610189576040366003190112610189576105ce6004356105b7611329565b906105c96105c48261150f565b61172b565b61199c565b005b34610189576000366003190112610189576040518060206001549283815201809260016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69060005b81811061067d575050508161063191038261133f565b6040519182916020830190602084525180915260408301919060005b81811061065b575050500390f35b82516001600160a01b031684528594506020938401939092019160010161064d565b82546001600160a01b031684526020909301926001928301920161061b565b34610189576020366003190112610189576106b5611313565b600080516020611c30833981519152549060ff8260401c16159167ffffffffffffffff81168015908161092e575b6001149081610924575b15908161091b575b5061090a5767ffffffffffffffff198116600117600080516020611c3083398151915255826108dd575b50610728611b00565b610730611b00565b610738611b00565b610740611b00565b6001600080516020611bf08339815191525561075b33611775565b5061076533611837565b50600080516020611c108339815191526000818152600080516020611bd08339815191526020527fb16e88c42fd4e48df2dd6a2eabd6bc9aec654ec170056b470819f8892cc6431d8054600080516020611b9083398151915291829055909290917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9080a4600080516020611b908339815191526000818152600080516020611bd08339815191526020527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51de8054908390559082907fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9080a460018060a01b03166bffffffffffffffffffffffff60a01b600054161760005561088457005b68ff000000000000000019600080516020611c308339815191525416600080516020611c30833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff19166801000000000000000117600080516020611c30833981519152558261071f565b63f92ee8a960e01b60005260046000fd5b905015846106f5565b303b1591506106ed565b8491506106e3565b34610189576000366003190112610189576000546040516001600160a01b039091168152602090f35b3461018957600036600319011261018957602060405162278d008152f35b3461018957600036600319011261018957604080519061099d818361133f565b60058252640352e302e360dc1b6020830152805180926020825280519081602084015260005b8281106109e25750506000828201840152601f01601f19168101030190f35b6020828201810151878301870152869450016109c3565b3461018957600036600319011261018957602060405160008152f35b3461018957604036600319011261018957610a2e611329565b600435600052600080516020611bd083398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101895760203660031901126101895760043560015481101561018957610a9860209161137d565b905460405160039290921b1c6001600160a01b03168152f35b34610189576000366003190112610189576020604051600080516020611c108339815191528152f35b3461018957604036600319011261018957610af3611313565b610afb611329565b6001600160a01b039182166000908152600460209081526040808320949093168252928352819020549051908152f35b34610189576020366003190112610189576020610181610b49611313565b611574565b3461018957602036600319011261018957610b67611313565b6000546001600160a01b03163303610b82576105ce90611a3c565b634e64d06960e01b60005260046000fd5b34610189576000366003190112610189577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610bec576020604051600080516020611bb08339815191528152f35b63703e46dd60e11b60005260046000fd5b604036600319011261018957610c11611313565b6024359067ffffffffffffffff8211610189573660238301121561018957816004013590610c3e82611361565b91610c4c604051938461133f565b8083526020830193366024838301011161018957816000926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610e1b575b50610bec57610cb26116cb565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa60009181610de7575b50610cf75784634c9c8ce360e01b60005260045260246000fd5b80600080516020611bb0833981519152869203610dd35750823b15610dbf57600080516020611bb083398151915280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2825115610da457600080916105ce945190845af43d15610d9c573d91610d7f83611361565b92610d8d604051948561133f565b83523d6000602085013e611b2e565b606091611b2e565b50505034610dae57005b63b398979f60e01b60005260046000fd5b634c9c8ce360e01b60005260045260246000fd5b632a87526960e21b60005260045260246000fd5b9091506020813d602011610e13575b81610e036020938361133f565b8101031261018957519086610cdd565b3d9150610df6565b600080516020611bb0833981519152546001600160a01b03161415905084610ca5565b34610189576020366003190112610189576001600160a01b03610e5f611313565b166000526002602052608060406000208054906001810154906003600282015491015491604051938452602084015260408301526060820152f35b34610189576000366003190112610189576002600080516020611bf083398151915254146110cb576002600080516020611bf083398151915255610edd33611a3c565b600154610ee981611530565b90610ef7604051928361133f565b808252601f19610f0682611530565b01366020840137610f1681611530565b91610f24604051938461133f565b818352601f19610f3383611530565b0136602085013760005b828110611058575060005b828110610f63576001600080516020611bf083398151915255005b610f6d8183611548565b51610f7b575b600101610f48565b600060206001600160a01b03610f918488611548565b51166044610f9f8587611548565b51604051948593849263a9059cbb60e01b845233600485015260248401525af19081156104325760009161103a575b5015611029576001906001600160a01b03610fe98287611548565b5116610ff58285611548565b516040519081527f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e60203392a39050610f73565b6312171d8360e31b60005260046000fd5b611052915060203d811161042b5761041e818361133f565b85610fce565b806000604061106860019461137d565b858060a01b0391549060031b1c163383526005602052818084208490878060a01b0384168252602052205461109d8588611548565b52806110a9858a611548565b5233835260056020528183208391868060a01b03168252602052205501610f3d565b633ee5aeb560e01b60005260046000fd5b34610189576040366003190112610189576110f5611329565b336001600160a01b03821603611111576105ce9060043561199c565b63334bd91960e11b60005260046000fd5b34610189576040366003190112610189576105ce600435611141611329565b9061114e6105c48261150f565b6118f3565b3461018957602036600319011261018957602061018160043561150f565b3461018957604036600319011261018957602061018161118f611313565b611197611329565b90611411565b34610189576020366003190112610189576111b6611313565b6111be6116cb565b6001600160a01b03166000818152600260208190526040909120015461053e57600154600160401b811015610528578060016111fd920160015561137d565b81546001600160a01b0360039290921b91821b19169083901b1790556000818152600260208190526040822042918101829055600101557ff3e4c2c64e71e6ba2eaab9a599bced62f9eb91d2cda610bf41aa8c80ff2cf8269080a2005b3461018957602036600319011261018957611273611313565b61127b6116cb565b600080546001600160a01b0319166001600160a01b039290921691821781557fe3cf2b71b55b62fc1a6c7b2f6ff944c1b70048908cff22f2e08d1144e7ca7edb9080a2005b34610189576020366003190112610189576004359063ffffffff60e01b821680920361018957602091637965db0b60e01b8114908115611302575b5015158152f35b6301ffc9a760e01b149050836112fb565b600435906001600160a01b038216820361018957565b602435906001600160a01b038216820361018957565b90601f8019910116810190811067ffffffffffffffff82111761052857604052565b67ffffffffffffffff811161052857601f01601f191660200190565b60015481101561139857600160005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b919082039182116113bb57565b634e487b7160e01b600052601160045260246000fd5b818102929181159184041417156113bb57565b81156113ee570490565b634e487b7160e01b600052601260045260246000fd5b919082018092116113bb57565b600054604051630991d88160e21b81526001600160a01b039283166004820181905290939092909160809185916024918391165afa928315610432576000936114ce575b50670de0b6b3a76400006114a16114cb9461149b611472856115af565b866000526004602052604060002060018060a01b038716600052602052604060002054906113ae565b906113d1565b0491600052600560205260406000209060018060a01b031660005260205260406000205490611404565b90565b92506080833d608011611507575b816114e96080938361133f565b81010312610189576020929092015191670de0b6b3a7640000611455565b3d91506114dc565b600052600080516020611bd083398151915260205260016040600020015490565b67ffffffffffffffff81116105285760051b60200190565b80518210156113985760209160051b010190565b90816020910312610189575180151581036101895790565b6001600160a01b031660008181526002602052604090206001015442101561159b57504290565b600052600260205260016040600020015490565b600054604051631d54c6e160e01b81529190602090839060049082906001600160a01b03165afa91821561043257600092611697575b5081156116775761164360018060a01b03821680600052600260205261162e61161660036040600020015494611574565b826000526002602052600260406000200154906113ae565b906000526002602052604060002054906113d1565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156113bb576114cb92611671916113e4565b90611404565b6001600160a01b0316600090815260026020526040902060030154919050565b9091506020813d6020116116c3575b816116b36020938361133f565b81010312610189575190386115e5565b3d91506116a6565b3360009081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff161561170457565b63e2517d3f60e01b60005233600452600080516020611b9083398151915260245260446000fd5b6000818152600080516020611bd08339815191526020908152604080832033845290915290205460ff161561175d5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd602052604090205460ff16611831576001600160a01b031660008181527fc32d4dc01d07c436ad8a6f9a20eadd61263c71fe16f6b5956005ba3b341f51dd60205260408120805460ff19166001179055339190600080516020611b90833981519152907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50600090565b6001600160a01b03811660009081527fb16e88c42fd4e48df2dd6a2eabd6bc9aec654ec170056b470819f8892cc6431c602052604090205460ff16611831576001600160a01b031660008181527fb16e88c42fd4e48df2dd6a2eabd6bc9aec654ec170056b470819f8892cc6431c60205260408120805460ff19166001179055339190600080516020611c10833981519152907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b6000818152600080516020611bd0833981519152602090815260408083206001600160a01b038616845290915290205460ff16611995576000818152600080516020611bd0833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5050600090565b6000818152600080516020611bd0833981519152602090815260408083206001600160a01b038616845290915290205460ff1615611995576000818152600080516020611bd0833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b60005b600154811015611afc5780611a5560019261137d565b838060a01b0391549060031b1c168060005260026020526040600020611a7a826115af565b90600381019182556002611a8d84611574565b910155838060a01b0385169182611aa8575b50505001611a3f565b604091611ab58288611411565b8460005260056020528380600020600090898060a01b038616825260205220555492600052600460205281600020600091868060a01b031682526020522055388080611a9f565b5050565b60ff600080516020611c308339815191525460401c1615611b1d57565b631afcd79f60e31b60005260046000fd5b90611b545750805115611b4357805190602001fd5b63d6bda27560e01b60005260046000fd5b81511580611b86575b611b65575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b15611b5d56feb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220068aec8eec9623ae147e7eba2a080c76afede06b2917efaed4db627df1f0042164736f6c634300081a0033