4 txs
5 calls
constructor
constructor(address token, address rewardsVault, address manager, string name, string symbol)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
campaignEndTimestamp
viewfunction campaignEndTimestamp() view returns (uint256)
campaignMaxTotalSupply
viewfunction campaignMaxTotalSupply() view returns (uint256)
COOLDOWN_SECONDS
viewfunction COOLDOWN_SECONDS() view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
FIXED_APR
viewfunction FIXED_APR() view returns (uint256)
getIndex
viewfunction getIndex() view returns (uint256 newIndex)
getRequestRedeemIdsAndStates
viewfunction getRequestRedeemIdsAndStates(address user) view returns (uint256[] ids, tuple[] requestRedeemStates)
getTotalRewardBalance
viewfunction getTotalRewardBalance(address user) view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
requestRedeemIndexCounts
viewfunction requestRedeemIndexCounts(address) view returns (uint256)
requestRedeemStartIndices
viewfunction requestRedeemStartIndices(address) view returns (uint256)
requestRedeemStatesById
viewfunction requestRedeemStatesById(address, uint256) view returns (address recipient, uint256 amount, uint256 cooldownStartTimestamp)
REWARD_VAULT
viewfunction REWARD_VAULT() view returns (address)
rewardToClaim
viewfunction rewardToClaim(address) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
TOKEN
viewfunction TOKEN() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
claimReward
nonpayablefunction claimReward(address recipient, uint256 amount)
endCampaign
nonpayablefunction endCampaign()
redeem
nonpayablefunction redeem(uint256 id)
renounceOwnership
nonpayablefunction renounceOwnership()
requestRedeem
nonpayablefunction requestRedeem(address recipient, uint256 amount) returns (uint256 id)
stake
nonpayablefunction stake(address user, uint256 amount)
startCampaign
nonpayablefunction startCampaign(uint256 maxTotalReward, uint256 duration)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
CampaignEnded
event CampaignEnded()
CampaignStarted
event CampaignStarted(uint256 maxRewardAmount, uint256 maxStakeAmount)
IndexUpdated
event IndexUpdated(uint256 index)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Redeem
event Redeem(address indexed from, address indexed to, uint256 amount, uint256 id)
RedeemRequested
event RedeemRequested(address indexed from, address indexed to, uint256 amount, uint256 cooldownStartTimestamp, uint256 id)
RewardAccrued
event RewardAccrued(address user, uint256 amount)
RewardClaimed
event RewardClaimed(address indexed from, address indexed to, uint256 amount)
Staked
event Staked(address indexed from, address indexed user, uint256 amount)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
FailedInnerCall
error FailedInnerCall()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a060405234801562000010575f80fd5b5060405162002049380380620020498339810160408190526200003391620001ee565b848484848482828260036200004983826200031f565b5060046200005882826200031f565b5050506001600160a01b0381166200008957604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200009481620000c7565b505050506001600160a01b03918216608052600680546001600160a01b0319169190921617905550620003e79350505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03811681146200012d575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000154575f80fd5b81516001600160401b038082111562000171576200017162000130565b604051601f8301601f19908116603f011681019082821181831017156200019c576200019c62000130565b81604052838152602092508683858801011115620001b8575f80fd5b5f91505b83821015620001db5785820183015181830184015290820190620001bc565b5f93810190920192909252949350505050565b5f805f805f60a0868803121562000203575f80fd5b8551620002108162000118565b6020870151909550620002238162000118565b6040870151909450620002368162000118565b60608701519093506001600160401b038082111562000253575f80fd5b6200026189838a0162000144565b9350608088015191508082111562000277575f80fd5b50620002868882890162000144565b9150509295509295909350565b600181811c90821680620002a857607f821691505b602082108103620002c757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200031a575f81815260208120601f850160051c81016020861015620002f55750805b601f850160051c820191505b81811015620003165782815560010162000301565b5050505b505050565b81516001600160401b038111156200033b576200033b62000130565b62000353816200034c845462000293565b84620002cd565b602080601f83116001811462000389575f8415620003715750858301515b5f19600386901b1c1916600185901b17855562000316565b5f85815260208120601f198616915b82811015620003b95788860151825594840194600190910190840162000398565b5085821015620003d757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b608051611c2d6200041c5f395f818161037d015281816105d601528181610c6701528181610e310152610f490152611c2d5ff3fe608060405234801561000f575f80fd5b50600436106101dc575f3560e01c8063715018a611610109578063a9059cbb1161009e578063dd62ed3e1161006e578063dd62ed3e14610468578063f2fde38b146104a0578063f413d468146104b3578063fcd4e43f146104c6575f80fd5b8063a9059cbb14610420578063adc9772e14610433578063c500f66914610446578063db006a7514610455575f80fd5b806382bfefc8116100d957806382bfefc8146103785780638da5cb5b1461039f57806395d89b41146103b05780639f70d057146103b8575f80fd5b8063715018a61461035857806371aac7f91461036057806372b49d631461036857806381045ead14610370575f80fd5b80632711f7271161017f5780634fc7ad7e1161014f5780634fc7ad7e146102eb57806365b89f9f146102fe578063674a63b91461031157806370a0823114610330575f80fd5b80632711f7271461028757806327f9387f14610290578063313ce567146102bb57806342410f71146102ca575f80fd5b8063174e31c4116101ba578063174e31c41461023857806318160ddd1461024d5780631f3549131461025557806323b872dd14610274575f80fd5b806306fdde03146101e0578063095ea7b3146101fe5780631077e56514610221575b5f80fd5b6101e86104e5565b6040516101f591906118e3565b60405180910390f35b61021161020c366004611930565b610575565b60405190151581526020016101f5565b61022a600b5481565b6040519081526020016101f5565b61024b610246366004611930565b61058e565b005b60025461022a565b61022a610263366004611958565b60096020525f908152604090205481565b610211610282366004611971565b610647565b61022a600c5481565b6006546102a3906001600160a01b031681565b6040516001600160a01b0390911681526020016101f5565b604051601281526020016101f5565b6102dd6102d8366004611958565b61066c565b6040516101f59291906119aa565b61022a6102f9366004611958565b6108c2565b61022a61030c366004611930565b61094e565b61022a61031f366004611958565b600a6020525f908152604090205481565b61022a61033e366004611958565b6001600160a01b03165f9081526020819052604090205490565b61024b610ab4565b61024b610ac7565b61022a603c81565b61022a610afd565b6102a37f000000000000000000000000000000000000000000000000000000000000000081565b6005546001600160a01b03166102a3565b6101e8610b15565b6103fb6103c6366004611930565b600760209081525f92835260408084209091529082529020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b0390941684526020840192909252908201526060016101f5565b61021161042e366004611930565b610b24565b61024b610441366004611930565b610b31565b61022a67016345785d8a000081565b61024b610463366004611a41565b610ce2565b61022a610476366004611a58565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61024b6104ae366004611958565b610ea9565b61024b6104c1366004611a89565b610ee6565b61022a6104d4366004611958565b60086020525f908152604090205481565b6060600380546104f490611aa9565b80601f016020809104026020016040519081016040528092919081815260200182805461052090611aa9565b801561056b5780601f106105425761010080835404028352916020019161056b565b820191905f5260205f20905b81548152906001019060200180831161054e57829003601f168201915b5050505050905090565b5f33610582818585611150565b60019150505b92915050565b5f610598336108c2565b90505f8183116105a857826105aa565b815b90506105b68183611af5565b335f908152600a6020526040902055600654610600906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691168684611162565b6040518181526001600160a01b0385169033907f0aa4d283470c904c551d18bb894d37e17674920f3261a7f854be501e25f421b7906020015b60405180910390a350505050565b5f336106548582856111e4565b61065f858585611259565b60019150505b9392505050565b6001600160a01b0381165f9081526008602052604081205460609182915b6001600160a01b0385165f908152600960205260409020548110156106f4576001600160a01b0385165f908152600760209081526040808320848452909152902060010154156106e257816106de81611b08565b9250505b806106ec81611b08565b91505061068a565b508067ffffffffffffffff81111561070e5761070e611b20565b604051908082528060200260200182016040528015610737578160200160208202803683370190505b5092508067ffffffffffffffff81111561075357610753611b20565b6040519080825280602002602001820160405280156107ae57816020015b61079b60405180606001604052805f6001600160a01b031681526020015f81526020015f81525090565b8152602001906001900390816107715790505b506001600160a01b0385165f9081526008602052604081205491935091505b6001600160a01b0385165f908152600960205260409020548110156108bb576001600160a01b0385165f908152600760209081526040808320848452909152902060010154156108a9576001600160a01b038086165f9081526007602090815260408083208584528252918290208251606081018452815490941684526001810154918401919091526002015490820152835184908490811061087257610872611b34565b60200260200101819052508084838151811061089057610890611b34565b6020908102919091010152816108a581611b08565b9250505b806108b381611b08565b9150506107cd565b5050915091565b5f806108e2600c5442116108d657426108da565b600c545b6002546112b6565b905061092c610905846001600160a01b03165f9081526020819052604090205490565b6001600160a01b0385165f908152600e60205260409020546109279084611af5565b611318565b6001600160a01b0384165f908152600a60205260409020546106659190611b48565b335f90815260208190526040812054805f036109b15760405162461bcd60e51b815260206004820152601b60248201527f494e56414c49445f42414c414e43455f4f4e5f434f4f4c444f574e000000000060448201526064015b60405180910390fd5b8083116109be57826109c0565b805b335f90815260096020526040812080549295509193508391906109e283611b08565b9091555050335f8181526007602090815260408083208684529091529020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03871617815560018101859055426002909101819055600c54610a55929111610a495742610a4d565b600c545b600254611336565b50610a603384611459565b604080518481524260208201529081018390526001600160a01b0385169033907f6280034a94c287586a9ac8e641015f7eef95d5afd33fbd2d63aa6c1a3e0231939060600160405180910390a35092915050565b610abc611491565b610ac55f6114be565b565b610acf611491565b42600c556040517f553ae054398f4abd9ec5710b0d247eaa1cd982245798110d0ceb48f43e370309905f90a1565b5f610b10600c5442116108d657426108da565b905090565b6060600480546104f490611aa9565b5f33610582818585611259565b5f600c544211610b415742610b45565b600c545b9050600c548103610b985760405162461bcd60e51b815260206004820152601160248201527f494e4143544956455f43414d504149474e00000000000000000000000000000060448201526064016109a8565b815f03610be75760405162461bcd60e51b815260206004820152601360248201527f494e56414c49445f5a45524f5f414d4f554e540000000000000000000000000060448201526064016109a8565b5f610bf160025490565b600b54909150610c018483611b48565b1115610c5a5760405162461bcd60e51b815260206004820152602260248201527f43414d504149474e5f4d41585f544f54414c5f535550504c595f455843454544604482015261115160f21b60648201526084016109a8565b610c8f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611162565b610c9a848383611336565b50610ca5848461151c565b6040518381526001600160a01b0385169033907f5dac0c1b1112564a045ba943c9d50270893e8e826c49be8e7073adc713ab7bd790602001610639565b335f908152600760209081526040808320848452909152812060018101549091819003610d515760405162461bcd60e51b815260206004820152601660248201527f52454445454d41424c455f5a45524f5f414d4f554e540000000000000000000060448201526064016109a8565b603c8260020154610d629190611b48565b421015610db15760405162461bcd60e51b815260206004820152601560248201527f434f4f4c444f574e5f4e4f545f46494e4953484544000000000000000000000060448201526064016109a8565b5f60018301819055338152600860205260409020548303610dec57335f908152600860205260408120805491610de683611b08565b91905055505b335f908152600960205260409020548303610e2157335f908152600960205260408120805491610e1b83611b5b565b91905055505b8154610e5a906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683611550565b815460408051838152602081018690526001600160a01b039092169133917f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc91015b60405180910390a3505050565b610eb1611491565b6001600160a01b038116610eda57604051631e4fbdf760e01b81525f60048201526024016109a8565b610ee3816114be565b50565b610eee611491565b5f610ef860025490565b905080610f17600c544211610f0d5742610f11565b600c545b836112b6565b610f219190611b70565b600654604051636eb1769f60e11b81526001600160a01b0391821660048201523060248201527f00000000000000000000000000000000000000000000000000000000000000009091169063dd62ed3e90604401602060405180830381865afa158015610f90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb49190611b87565b610fbe9190611af5565b8311156110195760405162461bcd60e51b815260206004820152602360248201527f494e53554646494349454e545f43414d504149474e5f5245574152445f414d4f60448201526215539560ea1b60648201526084016109a8565b5f6110248342611b48565b9050600c548110156110785760405162461bcd60e51b815260206004820152601d60248201527f494e56414c49445f43414d504149474e5f454e4454494d455354414d5000000060448201526064016109a8565b600c81905561108f8367016345785d8a0000611b70565b6110a1670de0b6b3a764000086611b70565b6110af906301e13380611b70565b6110b99190611b9e565b600b81905582111561110d5760405162461bcd60e51b815260206004820181905260248201527f494e53554646494349454e545f43414d504149474e5f4d41585f535550504c5960448201526064016109a8565b600b546040805186815260208101929092527f12221045b1a0b41f55e22c5a246cb89b0d3ba3c774890fc7b1099d077949f536910160405180910390a150505050565b61115d8383836001611581565b505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526111de9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611645565b50505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981146111de578181101561124b57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016109a8565b6111de84848484035f611581565b6001600160a01b03831661128257604051634b637e8f60e11b81525f60048201526024016109a8565b6001600160a01b0382166112ab5760405163ec442f0560e01b81525f60048201526024016109a8565b61115d8383836116a6565b5f80601054846112c69190611af5565b90508215806112d3575080155b156112e2575050600f54610588565b6301e133806112f967016345785d8a000083611b70565b6113039190611b9e565b600f546113109190611b48565b949350505050565b5f670de0b6b3a764000061132c8385611b70565b6106659190611b9e565b5f8061134284846112b6565b9050600f54811461138a57600f819055426010556040518181527facfc085c9be45d2b3f9e5c09a19d4a95749cc16939519c13e090de3a4cb192c69060200160405180910390a15b6001600160a01b0385165f9081526020818152604080832054600e9092528220546113ba91906109279085611af5565b6001600160a01b0387165f908152600a60205260409020549091506113e0908290611b48565b92508015611450576001600160a01b0386165f818152600a60209081526040808320879055600e8252808320869055600d825291829020429055815192835282018390527f578afab8065b30a5e9827120e4905b8a1810e180d2f793ca54af6f7633f4e57a910160405180910390a15b50509392505050565b6001600160a01b03821661148257604051634b637e8f60e11b81525f60048201526024016109a8565b61148d825f836116a6565b5050565b6005546001600160a01b03163314610ac55760405163118cdaa760e01b81523360048201526024016109a8565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166115455760405163ec442f0560e01b81525f60048201526024016109a8565b61148d5f83836116a6565b6040516001600160a01b0383811660248301526044820183905261115d91859182169063a9059cbb90606401611197565b6001600160a01b0384166115aa5760405163e602df0560e01b81525f60048201526024016109a8565b6001600160a01b0383166115d357604051634a1406b160e11b81525f60048201526024016109a8565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156111de57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161063991815260200190565b5f6116596001600160a01b038416836117bf565b905080515f1415801561167d57508080602001905181019061167b9190611bbd565b155b1561115d57604051635274afe760e01b81526001600160a01b03841660048201526024016109a8565b6001600160a01b0383166116d0578060025f8282546116c59190611b48565b909155506117409050565b6001600160a01b0383165f90815260208190526040902054818110156117225760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016109a8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661175c5760028054829003905561177a565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e9c91815260200190565b606061066583835f845f80856001600160a01b031684866040516117e39190611bdc565b5f6040518083038185875af1925050503d805f811461181d576040519150601f19603f3d011682016040523d82523d5f602084013e611822565b606091505b509150915061183286838361183c565b9695505050505050565b6060826118515761184c82611898565b610665565b815115801561186857506001600160a01b0384163b155b1561189157604051639996b31560e01b81526001600160a01b03851660048201526024016109a8565b5080610665565b8051156118a85780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f5b838110156118db5781810151838201526020016118c3565b50505f910152565b602081525f82518060208401526119018160408501602087016118c1565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461192b575f80fd5b919050565b5f8060408385031215611941575f80fd5b61194a83611915565b946020939093013593505050565b5f60208284031215611968575f80fd5b61066582611915565b5f805f60608486031215611983575f80fd5b61198c84611915565b925061199a60208501611915565b9150604084013590509250925092565b604080825283518282018190525f9190606090818501906020808901865b838110156119e4578151855293820193908201906001016119c8565b505086830381880152875180845288820193820192505f5b81811015611a3257845180516001600160a01b0316855283810151848601528701518785015293820193928501926001016119fc565b50919998505050505050505050565b5f60208284031215611a51575f80fd5b5035919050565b5f8060408385031215611a69575f80fd5b611a7283611915565b9150611a8060208401611915565b90509250929050565b5f8060408385031215611a9a575f80fd5b50508035926020909101359150565b600181811c90821680611abd57607f821691505b602082108103611adb57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561058857610588611ae1565b5f60018201611b1957611b19611ae1565b5060010190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b8082018082111561058857610588611ae1565b5f81611b6957611b69611ae1565b505f190190565b808202811582820484141761058857610588611ae1565b5f60208284031215611b97575f80fd5b5051919050565b5f82611bb857634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611bcd575f80fd5b81518015158114610665575f80fd5b5f8251611bed8184602087016118c1565b919091019291505056fea2646970667358221220eccdf262aeb688c1a2bad2fc8ab9108363b25f30b0864f33c4a1364c2fa0c79b64736f6c634300081400330000000000000000000000003bcbba90988d1ba805102f79546a1acfea3d0a710000000000000000000000009d90de81ef57e424985a5708775345f137e27a7c0000000000000000000000009d90de81ef57e424985a5708775345f137e27a7c00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000117374616b6564206d6f636b20746f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005734d4f434b000000000000000000000000000000000000000000000000000000