0 txs
33 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address user) view returns (uint256 stakedBalance)
DECIMAL_PRECISION
viewfunction DECIMAL_PRECISION() view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
duration
viewfunction duration() view returns (uint256)
earned
viewfunction earned(address _account) view returns (uint256)
finishAt
viewfunction finishAt() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
kernelToken
viewfunction kernelToken() view returns (address)
lastTimeRewardApplicable
viewfunction lastTimeRewardApplicable() view returns (uint256)
rewardPerToken
viewfunction rewardPerToken() view returns (uint256)
rewardPerTokenStored
viewfunction rewardPerTokenStored() view returns (uint256)
rewardRate
viewfunction rewardRate() view returns (uint256)
rewards
viewfunction rewards(address user) view returns (uint256 reward)
rewardsToken
viewfunction rewardsToken() view returns (address)
STAKE_FOR_ROLE
viewfunction STAKE_FOR_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalKernelStaked
viewfunction totalKernelStaked() view returns (uint256)
updatedAt
viewfunction updatedAt() view returns (uint256)
userRewardPerTokenPaid
viewfunction userRewardPerTokenPaid(address user) view returns (uint256 rewardPerTokenPaid)
getReward
nonpayablefunction getReward()
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _admin, address _kernelToken, address _rewardToken)
notifyRewardAmount
nonpayablefunction notifyRewardAmount(uint256 _amount)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setRewardsDuration
nonpayablefunction setRewardsDuration(uint256 _duration)
stake
nonpayablefunction stake(uint256 _amount)
stakeFor
nonpayablefunction stakeFor(address _account, uint256 _amount)
withdraw
nonpayablefunction withdraw(uint256 _amount)
events
Initialized
event Initialized(uint8 version)
NotifyRewardAmount
event NotifyRewardAmount(uint256 reward, uint256 finishAt)
RewardsClaimed
event RewardsClaimed(address indexed user, uint256 amount)
RewardsDurationUpdated
event RewardsDurationUpdated(uint256 newDuration)
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)
Staked
event Staked(address indexed user, uint256 amount)
StakedFor
event StakedFor(address indexed sender, address indexed user, uint256 amount)
Withdrawn
event Withdrawn(address indexed user, uint256 amount)
errors
AmountZero
error AmountZero()
RewardAmountGreaterThanBalance
error RewardAmountGreaterThanBalance()
RewardDurationNotFinished
error RewardDurationNotFinished()
RewardRateZero
error RewardRateZero()
ZeroAddressNotAllowed
error ZeroAddressNotAllowed()
creation bytecode
0x608060405234801561000f575f80fd5b5061001861001d565b6100d9565b5f54610100900460ff16156100885760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146100d7575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61207880620000e75f395ff3fe608060405234801561000f575f80fd5b50600436106101d0575f3560e01c80637519ab50116100fe578063a217fddf1161009e578063cd3daf9d1161006e578063cd3daf9d1461043a578063d1af0c7d14610442578063d547741f14610462578063df136d6514610475575f80fd5b8063a217fddf146103fa578063a694fc3a14610401578063c0c53b8b14610414578063cc1a378f14610427575f80fd5b806380faa57d116100d957806380faa57d1461037f5780638b8763471461038757806391d14854146103a6578063a20baee6146103eb575f80fd5b80637519ab50146103645780637b0a47ee1461036d5780637e1270dd14610376575f80fd5b80632f2ff15d11610174578063405ce8a411610144578063405ce8a4146102d05780635a405b131461031557806367d3b4881461033c57806370a0823114610345575f80fd5b80632f2ff15d1461028f57806336568abe146102a25780633c6b16ab146102b55780633d18b912146102c8575f80fd5b80630fb5a6b4116101af5780630fb5a6b41461023c578063248a9ca3146102455780632e1a7d4d146102675780632ee409081461027c575f80fd5b80628cc262146101d457806301ffc9a7146101fa5780630700037d1461021d575b5f80fd5b6101e76101e2366004611cce565b61047e565b6040519081526020015b60405180910390f35b61020d610208366004611ce7565b610513565b60405190151581526020016101f1565b6101e761022b366004611cce565b60d16020525f908152604090205481565b6101e760cb5481565b6101e7610253366004611d26565b5f9081526065602052604090206001015490565b61027a610275366004611d26565b6105a9565b005b61027a61028a366004611d3d565b610701565b61027a61029d366004611d65565b6108bc565b61027a6102b0366004611d65565b6108e5565b61027a6102c3366004611d26565b61097f565b61027a610c87565b60c9546102f09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f1565b6101e77f2e00cc003b4a46542ef0203d62e9e0e94092978668ebd0227d8dd302f9a9b77b81565b6101e760cc5481565b6101e7610353366004611cce565b60d36020525f908152604090205481565b6101e760cd5481565b6101e760ce5481565b6101e760d25481565b6101e7610d90565b6101e7610395366004611cce565b60d06020525f908152604090205481565b61020d6103b4366004611d65565b5f91825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101e7670de0b6b3a764000081565b6101e75f81565b61027a61040f366004611d26565b610da2565b61027a610422366004611d8f565b610ee9565b61027a610435366004611d26565b6110e0565b6101e7611161565b60ca546102f09073ffffffffffffffffffffffffffffffffffffffff1681565b61027a610470366004611d65565b6111c1565b6101e760cf5481565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260d1602090815260408083205460d0909252822054670de0b6b3a7640000906104c0611161565b6104ca9190611dfc565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260d360205260409020546104f99190611e0f565b6105039190611e26565b61050d9190611e5e565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061050d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461050d565b6105b16111e5565b336105ba611161565b60cf556105c5610d90565b60cd5573ffffffffffffffffffffffffffffffffffffffff811615610625576105ed8161047e565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260d1602090815260408083209390935560cf5460d0909152919020555b815f0361065e576040517fcbca5aa200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f90815260d360205260408120805484929061067c908490611dfc565b925050819055508160d25f8282546106949190611dfc565b909155505060c9546106bd9073ffffffffffffffffffffffffffffffffffffffff16338461123e565b60405182815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906020015b60405180910390a2506106fe6001609755565b50565b6107096111e5565b7f2e00cc003b4a46542ef0203d62e9e0e94092978668ebd0227d8dd302f9a9b77b61073381611319565b8261073c611161565b60cf55610747610d90565b60cd5573ffffffffffffffffffffffffffffffffffffffff8116156107a75761076f8161047e565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260d1602090815260408083209390935560cf5460d0909152919020555b6107b084611323565b825f036107e9576040517fcbca5aa200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f90815260d360205260408120805485929061081d908490611e5e565b925050819055508260d25f8282546108359190611e5e565b909155505060c95461085f9073ffffffffffffffffffffffffffffffffffffffff16333086611370565b60405183815273ffffffffffffffffffffffffffffffffffffffff85169033907ff27841bf2ce46c8c33a68e103ff4238ad9192a4156d62c4b449f834e914d12919060200160405180910390a350506108b86001609755565b5050565b5f828152606560205260409020600101546108d681611319565b6108e083836113ce565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109755760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6108b882826114c0565b5f61098981611319565b5f610992611161565b60cf5561099d610d90565b60cd5573ffffffffffffffffffffffffffffffffffffffff8116156109fd576109c58161047e565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260d1602090815260408083209390935560cf5460d0909152919020555b60ca546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610a69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8d9190611e71565b831115610ac6576040517f88b88e1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cc544210610ae45760cb54610adc9084611e26565b60ce55610b1f565b5f60ce544260cc54610af69190611dfc565b610b009190611e0f565b60cb54909150610b108286611e5e565b610b1a9190611e26565b60ce55505b60ce545f03610b5a576040517f0f5d66ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610bc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bea9190611e71565b60cb5460ce54610bfa9190611e0f565b1115610c32576040517f88b88e1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cb54610c3f9042611e5e565b60cc8190554260cd556040805185815260208101929092527f508a190c6ee7833c0e03bc9f63cdea942f646a6ec1a57a93ba5c08b0b70547a2910160405180910390a1505050565b610c8f6111e5565b33610c98611161565b60cf55610ca3610d90565b60cd5573ffffffffffffffffffffffffffffffffffffffff811615610d0357610ccb8161047e565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260d1602090815260408083209390935560cf5460d0909152919020555b335f90815260d160205260409020548015610d4d57335f81815260d1602052604081205560ca54610d4d9173ffffffffffffffffffffffffffffffffffffffff909116908361123e565b60405181815233907ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe9060200160405180910390a25050610d8e6001609755565b565b5f610d9d60cc5442611579565b905090565b610daa6111e5565b33610db3611161565b60cf55610dbe610d90565b60cd5573ffffffffffffffffffffffffffffffffffffffff811615610e1e57610de68161047e565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260d1602090815260408083209390935560cf5460d0909152919020555b815f03610e57576040517fcbca5aa200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b335f90815260d3602052604081208054849290610e75908490611e5e565b925050819055508160d25f828254610e8d9190611e5e565b909155505060c954610eb79073ffffffffffffffffffffffffffffffffffffffff16333085611370565b60405182815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d906020016106eb565b5f54610100900460ff1615808015610f0757505f54600160ff909116105b80610f205750303b158015610f2057505f5460ff166001145b610f925760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161096c565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610fee575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610ff784611323565b61100083611323565b61100982611323565b611011611591565b61101961160d565b6110235f85611691565b60c9805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560ca80549285169290911691909117905580156110da575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b5f6110ea81611319565b4260cc5410611125576040517fe2be708600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cb8290556040518281527ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d39060200160405180910390a15050565b5f60d2545f03611172575060cf5490565b60d254670de0b6b3a764000060cd54611189610d90565b6111939190611dfc565b60ce546111a09190611e0f565b6111aa9190611e0f565b6111b49190611e26565b60cf54610d9d9190611e5e565b5f828152606560205260409020600101546111db81611319565b6108e083836114c0565b6002609754036112375760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161096c565b6002609755565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526108e09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261169b565b6001609755565b6106fe813361178e565b73ffffffffffffffffffffffffffffffffffffffff81166106fe576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110da9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611290565b5f82815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166108b8575f82815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114623390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b5f82815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156108b8575f82815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b5f81831115611588578161158a565b825b9392505050565b5f54610100900460ff16610d8e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161096c565b5f54610100900460ff166116895760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161096c565b610d8e61182d565b6108b882826113ce565b5f6116fc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118a99092919063ffffffff16565b905080515f148061171c57508080602001905181019061171c9190611e88565b6108e05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161096c565b5f82815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166108b8576117cd816118bf565b6117d88360206118de565b6040516020016117e9929190611ec9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b825261096c91600401611f49565b5f54610100900460ff166113125760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161096c565b60606118b784845f85611b01565b949350505050565b606061050d73ffffffffffffffffffffffffffffffffffffffff831660145b60605f6118ec836002611e0f565b6118f7906002611e5e565b67ffffffffffffffff81111561190f5761190f611f99565b6040519080825280601f01601f191660200182016040528015611939576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f8151811061196f5761196f611fc6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106119d1576119d1611fc6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f611a0b846002611e0f565b611a16906001611e5e565b90505b6001811115611ab2577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611a5757611a57611fc6565b1a60f81b828281518110611a6d57611a6d611fc6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060049490941c93611aab81611ff3565b9050611a19565b50831561158a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161096c565b606082471015611b795760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161096c565b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051611ba19190612027565b5f6040518083038185875af1925050503d805f8114611bdb576040519150601f19603f3d011682016040523d82523d5f602084013e611be0565b606091505b5091509150611bf187838387611bfc565b979650505050505050565b60608315611c775782515f03611c705773ffffffffffffffffffffffffffffffffffffffff85163b611c705760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161096c565b50816118b7565b6118b78383815115611c8c5781518083602001fd5b8060405162461bcd60e51b815260040161096c9190611f49565b803573ffffffffffffffffffffffffffffffffffffffff81168114611cc9575f80fd5b919050565b5f60208284031215611cde575f80fd5b61158a82611ca6565b5f60208284031215611cf7575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461158a575f80fd5b5f60208284031215611d36575f80fd5b5035919050565b5f8060408385031215611d4e575f80fd5b611d5783611ca6565b946020939093013593505050565b5f8060408385031215611d76575f80fd5b82359150611d8660208401611ca6565b90509250929050565b5f805f60608486031215611da1575f80fd5b611daa84611ca6565b9250611db860208501611ca6565b9150611dc660408501611ca6565b90509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561050d5761050d611dcf565b808202811582820484141761050d5761050d611dcf565b5f82611e59577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8082018082111561050d5761050d611dcf565b5f60208284031215611e81575f80fd5b5051919050565b5f60208284031215611e98575f80fd5b8151801515811461158a575f80fd5b5f5b83811015611ec1578181015183820152602001611ea9565b50505f910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f8351611f00816017850160208801611ea7565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351611f3d816028840160208801611ea7565b01602801949350505050565b602081525f8251806020840152611f67816040850160208701611ea7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8161200157612001611dcf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8251612038818460208701611ea7565b919091019291505056fea264697066735822122080fcbc3aef090cf644e10d0d9909b207360eab4f52278fec1bcaee63d1d429db64736f6c63430008150033