0 txs
11 calls
constructor
constructor()
functions
earnedReward
viewfunction earnedReward(address account) view returns (uint256)
incentiveEndsAt
viewfunction incentiveEndsAt() view returns (uint32)
nextStakeId
viewfunction nextStakeId() view returns (uint64)
owner
viewfunction owner() view returns (address)
rewardPerToken
viewfunction rewardPerToken() view returns (uint256)
rewardPerTokenStored
viewfunction rewardPerTokenStored() view returns (uint96)
rewardRate
viewfunction rewardRate() view returns (uint256)
rewardToken
viewfunction rewardToken() view returns (address)
stakedBy
viewfunction stakedBy(address) view returns (uint256)
stakes
viewfunction stakes(uint256) view returns (address owner, uint96 amount, uint32 withdrawAfter)
stakingToken
viewfunction stakingToken() view returns (address)
totalStaked
viewfunction totalStaked() view returns (uint96)
unstakePeriod
viewfunction unstakePeriod() view returns (uint32)
updatedAt
viewfunction updatedAt() view returns (uint32)
userRewardPerTokenPaid
viewfunction userRewardPerTokenPaid(address) view returns (uint256)
changeUnstakePeriod
nonpayablefunction changeUnstakePeriod(uint32 newUnstakePeriod)
claimReward
nonpayablefunction claimReward(address account)
initialize
nonpayablefunction initialize(address stakingToken_, address rewardToken_, uint32 unstakePeriod_)
recover
nonpayablefunction recover(address token, address to)
renounceOwnership
nonpayablefunction renounceOwnership()
stakeFor
nonpayablefunction stakeFor(address account, uint96 amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstake
nonpayablefunction unstake(address to, uint256[] stakeIds)
updateStakingIncentive
nonpayablefunction updateStakingIncentive(uint256 extraReward, uint256 incentiveDuration)
events
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewardClaimed
event RewardClaimed(address indexed account, uint256 amount)
Staked
event Staked(uint256 indexed stakeId, address indexed account, uint96 amount, uint32 withdrawAfter)
StakingIncentiveUpdated
event StakingIncentiveUpdated(uint256 reward, uint32 incentiveEndsAt)
Unstaked
event Unstaked(uint256 indexed stakeId, uint256 amount)
UnstakePeriodChanged
event UnstakePeriodChanged(uint256 newUnstakePeriod)
errors
InvalidIncentiveDuration
error InvalidIncentiveDuration(uint256 min, uint256 max)
InvalidInitialization
error InvalidInitialization()
InvalidReceiver
error InvalidReceiver(address account)
NoAvailableBalance
error NoAvailableBalance(address token)
NoReward
error NoReward()
NotInitializing
error NotInitializing()
NoUnclaimedReward
error NoUnclaimedReward(address account)
OnlyStakeOwner
error OnlyStakeOwner(uint256 stakeId, address owner)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SameStakingAndRewardToken
error SameStakingAndRewardToken()
StakeDoesNotExist
error StakeDoesNotExist(uint256 stakeId)
StakeLocked
error StakeLocked(uint256 stakeId, uint256 secondsBeforeUnstake)
ZeroAmount
error ZeroAmount()
creation bytecode
0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611fa6806100d96000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80638b876347116100e3578063d279c1911161008c578063e4aa64ab11610066578063e4aa64ab146104fd578063f2fde38b1461052d578063f7c618c11461054057600080fd5b8063d279c19114610411578063d5a44f8614610424578063df136d65146104d557600080fd5b8063a8968a2d116100bd578063a8968a2d146103ca578063bd83dbe5146103f6578063cd3daf9d1461040957600080fd5b80638b8763471461035a5780638da5cb5b1461037a57806396ac65d1146103b757600080fd5b806372f702f3116101455780637b0a47ee1161011f5780637b0a47ee146102f1578063817b1cd2146102fa5780638b6168711461034757600080fd5b806372f702f3146102265780637519ab501461026b57806375506c96146102a857600080fd5b8063648bf77411610176578063648bf774146101f85780636ecf2b221461020b578063715018a61461021e57600080fd5b806326bd86431461019d5780635dbe4756146101b25780635f56a31a146101c5575b600080fd5b6101b06101ab366004611be9565b610560565b005b6101b06101c0366004611c2d565b6105ef565b6101e56101d3366004611cb7565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b6101b0610206366004611cd4565b6106e0565b6101b0610219366004611d0d565b610910565b6101b0610b90565b6000546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ef565b6001546102939074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101ef565b6003546102d8907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ef565b6101e560025481565b60005461032a907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff90911681526020016101ef565b6101e5610355366004611cb7565b610ba4565b6101e5610368366004611cb7565b60066020526000908152604090205481565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff16610246565b6101b06103c5366004611d54565b610c3b565b600154610293907801000000000000000000000000000000000000000000000000900463ffffffff1681565b6101b0610404366004611d76565b610f11565b6101e56112be565b6101b061041f366004611cb7565b6113a3565b610490610432366004611db5565b6004602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff8216917401000000000000000000000000000000000000000090046bffffffffffffffffffffffff169063ffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff90941684526bffffffffffffffffffffffff909216602084015263ffffffff16908201526060016101ef565b60035461032a906c0100000000000000000000000090046bffffffffffffffffffffffff1681565b600154610293907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1681565b6101b061053b366004611cb7565b61152d565b6001546102469073ffffffffffffffffffffffffffffffffffffffff1681565b610568611591565b600180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff8416908102919091179091556040519081527fe38e02a0993ebc1d22860019a45a3c26b72b3b377afebf7cc7b2c7caeee9e42a9060200160405180910390a150565b336105f98161161f565b6000805b8381101561063a5761062685858381811061061a5761061a611dce565b9050602002013561172e565b6106309083611e2c565b91506001016105fd565b506000546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156106b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d89190611e3f565b505050505050565b6106e8611591565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190611e61565b60005490915073ffffffffffffffffffffffffffffffffffffffff908116908416036107d9576000546107d2907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1682611e7a565b905061081a565b60015473ffffffffffffffffffffffffffffffffffffffff9081169084160361081a57600354610817906bffffffffffffffffffffffff1682611e7a565b90505b80600003610871576040517fed93fd4c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156108e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090a9190611e3f565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561095b5750825b905060008267ffffffffffffffff1660011480156109785750303b155b905081158015610986575080155b156109bd576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a1e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603610a83576040517fae84520200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a8c336119f7565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691909117909155600180549189167bffffffffffffffff0000000000000000000000000000000000000000909216919091177c010000000000000000000000000000000000000000000000000000000063ffffffff8916021790558315610b865784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b610b98611591565b610ba260006119ff565b565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760209081526040808320546006909252822054670de0b6b3a764000090610be76112be565b610bf19190611e7a565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260056020526040902054610c219190611e8d565b610c2b9190611ea4565b610c359190611e2c565b92915050565b610c43611591565b6000610c4e8161161f565b6001821080610c6057506305a39a8082115b15610ca4576040517fe0c5c620000000000000000000000000000000000000000000000000000000008152600160048201526305a39a806024820152604401610868565b600083610caf611a95565b610cb99190611e2c565b905080600003610cf5576040517f6e99268600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82610d0882670de0b6b3a7640000611e8d565b610d129190611ea4565b6002556001805463ffffffff4290811674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff90921691909117909155610d6f908490611e2c565b6001805463ffffffff929092167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff90921691909117905560038054859190600090610de49084906bffffffffffffffffffffffff16611edf565b82546bffffffffffffffffffffffff9182166101009390930a9283029190920219909116179055506001546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810186905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015610e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ead9190611e3f565b5060015460408051838152780100000000000000000000000000000000000000000000000090920463ffffffff1660208301527f981736d92e90ca302507e694011d6f3061011cd94afa729b12099353bb0cc33a910160405180910390a150505050565b81610f1b8161161f565b816bffffffffffffffffffffffff16600003610f63576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff841603610fca576040517f9cfea58300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610868565b6000546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526bffffffffffffffffffffffff8416604482015273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015611054573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110789190611e3f565b5060038054600091780100000000000000000000000000000000000000000000000090910467ffffffffffffffff169060186110b383611f03565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555067ffffffffffffffff16905060006001601c9054906101000a900463ffffffff16426111059190611f30565b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff8089168083526bffffffffffffffffffffffff808a16602080860182815263ffffffff808a16888a0190815260008d8152600485528a812099519351909616740100000000000000000000000000000000000000000292909716919091178755945160019096018054969095167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909616959095179093559081526005909252918120805493945091926111d9908490611e2c565b9091555050600080548591906014906112199084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16611edf565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff16827f02f94abdb85d1a7b9ca59809af8a380cb5183813a7b04b930f89261f892bed6086846040516112af9291906bffffffffffffffffffffffff92909216825263ffffffff16602082015260400190565b60405180910390a35050505050565b600080547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16810361131357506003546c0100000000000000000000000090046bffffffffffffffffffffffff1690565b6000546001546bffffffffffffffffffffffff7401000000000000000000000000000000000000000092839004169163ffffffff910416611352611b0d565b61135c9190611e7a565b6002546113699190611e8d565b6113739190611ea4565b60035461139e91906c0100000000000000000000000090046bffffffffffffffffffffffff16611e2c565b905090565b806113ad8161161f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081205490819003611425576040517f843bdc9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610868565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600760205260408082209190915560015490517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810192909252602482018490529091169063a9059cbb906044016020604051808303816000875af11580156114b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d79190611e3f565b508273ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72418260405161152091815260200190565b60405180910390a2505050565b611535611591565b73ffffffffffffffffffffffffffffffffffffffff8116611585576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610868565b61158e816119ff565b50565b336115d07f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610ba2576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610868565b6116276112be565b6003600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061165f611b0d565b6001805463ffffffff9290921674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff90921691909117905573ffffffffffffffffffffffffffffffffffffffff81161561158e576116d281610ba4565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526007602090815260408083209390935560035460069091529190206c010000000000000000000000009091046bffffffffffffffffffffffff169055565b60008181526004602090815260408083208151606081018352815473ffffffffffffffffffffffffffffffffffffffff8116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff169482019490945260019091015463ffffffff1691810191909152906117de576040517f3e6a804800000000000000000000000000000000000000000000000000000000815260048101849052602401610868565b805173ffffffffffffffffffffffffffffffffffffffff1633146118505780516040517fc0ef93730000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610868565b806040015163ffffffff164210156118b4578242826040015163ffffffff166118799190611e7a565b6040517f5ab9830100000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610868565b600083815260046020908152604080832083815560010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055838201513384526005909252822080546bffffffffffffffffffffffff90921692909161191f908490611e7a565b90915550506020810151600080546014906119619084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16611f4c565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550827ffe67007f52a1bf967323b00fd406f9028a8e8a88aec274e07a63b2fabacc64a782602001516040516119d791906bffffffffffffffffffffffff91909116815260200190565b60405180910390a2602001516bffffffffffffffffffffffff1692915050565b611535611b69565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000670de0b6b3a764000042600160189054906101000a900463ffffffff1663ffffffff1611611ac6576000611af6565b600154611af69042907801000000000000000000000000000000000000000000000000900463ffffffff16611e7a565b600254611b039190611e8d565b61139e9190611ea4565b6001546000907801000000000000000000000000000000000000000000000000900463ffffffff164210611b6457506001547801000000000000000000000000000000000000000000000000900463ffffffff1690565b504290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610ba2576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803563ffffffff81168114611be457600080fd5b919050565b600060208284031215611bfb57600080fd5b611c0482611bd0565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461158e57600080fd5b600080600060408486031215611c4257600080fd5b8335611c4d81611c0b565b9250602084013567ffffffffffffffff811115611c6957600080fd5b8401601f81018613611c7a57600080fd5b803567ffffffffffffffff811115611c9157600080fd5b8660208260051b8401011115611ca657600080fd5b939660209190910195509293505050565b600060208284031215611cc957600080fd5b8135611c0481611c0b565b60008060408385031215611ce757600080fd5b8235611cf281611c0b565b91506020830135611d0281611c0b565b809150509250929050565b600080600060608486031215611d2257600080fd5b8335611d2d81611c0b565b92506020840135611d3d81611c0b565b9150611d4b60408501611bd0565b90509250925092565b60008060408385031215611d6757600080fd5b50508035926020909101359150565b60008060408385031215611d8957600080fd5b8235611d9481611c0b565b915060208301356bffffffffffffffffffffffff81168114611d0257600080fd5b600060208284031215611dc757600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610c3557610c35611dfd565b600060208284031215611e5157600080fd5b81518015158114611c0457600080fd5b600060208284031215611e7357600080fd5b5051919050565b81810381811115610c3557610c35611dfd565b8082028115828204841417610c3557610c35611dfd565b600082611eda577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6bffffffffffffffffffffffff8181168382160190811115610c3557610c35611dfd565b600067ffffffffffffffff821667ffffffffffffffff8103611f2757611f27611dfd565b60010192915050565b63ffffffff8181168382160190811115610c3557610c35611dfd565b6bffffffffffffffffffffffff8281168282160390811115610c3557610c35611dfd56fea264697066735822122073cb9d7b6fb1e64384b05f0ca9d8752f24b81ce0ceec597dbd36ddc9f1d3369464736f6c634300081c0033