0 txs
10 calls
constructor
constructor()
functions
baseAPYBasisPoints
viewfunction baseAPYBasisPoints() view returns (uint16)
calculateCurrentPenalty
viewfunction calculateCurrentPenalty(address user) view returns (uint128 penalty, uint16 penaltyRate)
getBaseAPY
viewfunction getBaseAPY() view returns (uint16 baseAPY)
getContractStats
viewfunction getContractStats() view returns (uint256 totalStaked_, uint256 totalStakers_, uint256 totalRewardsPaid_, uint256 contractBalance)
getUserStake
viewfunction getUserStake(address user) view returns (uint128 amount, uint64 stakeTimestamp)
getUserStakeInfo
viewfunction getUserStakeInfo(address user) view returns (uint256 timeToMaturity, uint128 projectedRewards, uint128 currentPenalty)
getUserTierInfo
viewfunction getUserTierInfo(address user) view returns (uint8 currentTier, string tierName, uint16 tierAPY)
isReadyForUpgrade
purefunction isReadyForUpgrade(string upgradeVersion) pure returns (bool ready)
kageToken
viewfunction kageToken() view returns (address)
minimumStakeAmount
viewfunction minimumStakeAmount() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
rewardDistributor
viewfunction rewardDistributor() view returns (address)
tierConfigs
viewfunction tierConfigs(uint8) view returns (uint32 durationMinutes, uint16 penaltyBasisPoints, uint16 rewardMultiplier)
totalRewardsPaid
viewfunction totalRewardsPaid() view returns (uint256)
totalStaked
viewfunction totalStaked() view returns (uint256)
totalStakers
viewfunction totalStakers() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
userStakes
viewfunction userStakes(address) view returns (uint128 amount, uint64 stakeTimestamp, uint256 __reserved1)
version
purefunction version() pure returns (string)
emergencyTokenRecovery
nonpayablefunction emergencyTokenRecovery(address token, uint256 amount)
emergencyWithdraw
nonpayablefunction emergencyWithdraw()
initialize
nonpayablefunction initialize(address _kageToken, address _rewardDistributor, address _treasury)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
setBaseAPY
nonpayablefunction setBaseAPY(uint16 newBaseAPY)
setMinimumStakeAmount
nonpayablefunction setMinimumStakeAmount(uint256 newMinimumStakeAmount)
setRewardDistributor
nonpayablefunction setRewardDistributor(address newDistributor)
setTreasury
nonpayablefunction setTreasury(address newTreasury)
stake
nonpayablefunction stake(uint128 amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
unstake
nonpayablefunction unstake()
updateTierConfig
nonpayablefunction updateTierConfig(uint8 tier, uint32 durationMinutes, uint16 penaltyBP, uint16 rewardMultiplier)
events
BaseAPYUpdated
event BaseAPYUpdated(uint16 oldBaseAPY, uint16 newBaseAPY)
EmergencyWithdrawal
event EmergencyWithdrawal(address indexed user, uint128 amount)
Initialized
event Initialized(uint64 version)
MinimumStakeAmountUpdated
event MinimumStakeAmountUpdated(uint256 oldMinimumStakeAmount, uint256 newMinimumStakeAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RewardDistributorUpdated
event RewardDistributorUpdated(address indexed oldDistributor, address indexed newDistributor)
Staked
event Staked(address indexed user, uint128 amount, uint64 timestamp)
TierConfigUpdated
event TierConfigUpdated(uint8 indexed tier, uint32 durationDays, uint16 penaltyBP, uint16 rewardMultiplier)
TreasuryUpdated
event TreasuryUpdated(address indexed oldTreasury, address indexed newTreasury)
Unpaused
event Unpaused(address account)
Unstaked
event Unstaked(address indexed user, uint128 amount, uint128 penalty, uint128 rewards)
errors
AlreadyStaking
error AlreadyStaking()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InsufficientRewards
error InsufficientRewards()
InsufficientStakeAmount
error InsufficientStakeAmount()
InvalidAddress
error InvalidAddress()
InvalidAPY
error InvalidAPY()
InvalidInitialization
error InvalidInitialization()
InvalidTier
error InvalidTier()
MultiplierTooHigh
error MultiplierTooHigh()
NoStakeFound
error NoStakeFound()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
PenaltyTooHigh
error PenaltyTooHigh()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StakingDisabled
error StakingDisabled()
ZeroAmount
error ZeroAmount()
creation bytecode
0x608080604052346100b8577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100a957506001600160401b036002600160401b031982821601610064575b604051611f8d90816100be8239f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610055565b63f92ee8a960e01b8152600490fd5b600080fdfe60806040908082526004918236101561001757600080fd5b600092833560e01c92836303ea0a4014611663575082630716a019146116235782630d29fcd4146115b657826326d160c71461040c5782632def6620146112d55782633066af5a146112ad5782633f4ba83a1461124857826354fd4d50146111eb5782635c975abb146111ba57826361d027b3146111915782636b036f45146111725782636e6aca37146110dd578263715018a61461107357826374958e351461105457826376bab6aa14610ef5578263817b1cd214610ed65782638456cb5914610e6e5782638698903814610e4f57826388fe2be814610cf45782638da5cb5b14610cbe5782638da7ad2314610c605782639da9db2a14610c0d578263a1809b9514610b97578263acc2166a14610b6e578263b49b0cb314610a4b578263bbadc93a146109b3578263c0c53b8b14610685578263c32d3ae21461049f578263d02829e214610433578263d3d0d9271461040c578263db2e21bc14610305578263dfe6b5d614610253578263f0f44260146101cc57505063f2fde38b1461019d57600080fd5b346101c95760203660031901126101c9576101c66101b96116b2565b6101c1611b8f565b611aba565b80f35b80fd5b9091503461024f57602036600319011261024f576101e86116b2565b906101f1611b8f565b6001600160a01b03918216928315610242575050600254826001600160601b0360a01b821617600255167f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a8380a380f35b5163e6c4247b60e01b8152fd5b8280fd5b9091503461024f578260031936011261024f57600554916006549060075491602060018060a01b038754169460248451809781936370a0823160e01b835230908301525afa9384156102fb5786946102bf575b5060809550815194855260208501528301526060820152f35b9093506020813d6020116102f3575b816102db60209383611788565b810103126102ef57608095505192386102a6565b8580fd5b3d91506102ce565b82513d88823e3d90fd5b9091503461024f578260031936011261024f57610320611bc8565b610328611e4b565b338352806020528183209082519061033f8261173c565b825460016001600160801b03946001600160401b038684169384875260801c166020860152015485840152156103fe57338552602052836001848220828155015561038f828251166005546117a9565b60055561039d6006546118e1565b600655835481516103bc919084169033906001600160a01b0316611d2c565b511690519081527f25e7fff862e101f58872b71f8a3acf5460b020d1f27e6b47bb38e366b8cf167460203392a26001600080516020611f618339815191525580f35b8351632cdf478160e11b8152fd5b83823461042f578160031936011261042f5760209061ffff600954169051908152f35b5080fd5b83823461042f57602036600319011261042f576104566104516116b2565b611913565b92918251948682101561048c575084955061ffff916104829186526060602087015260608601906116cd565b9216908301520390f35b634e487b7160e01b815260218752602490fd5b83823461042f57602091826003193601126101c9576104bc6116b2565b81938295839260018060a01b031684528082528484209385516104de8161173c565b8554956001600160801b039660016001600160401b038983169283865260801c16928388860152015489840152610529575b5050505082606096855196875216908501521690820152f35b919750935061053a919750426117a9565b61054381611b2e565b9261054d8461170d565b8651906105598261173c565b549063ffffffff95868316825261ffff9189838883019581818b1c16875260301c169101528a8110156106725760609a5087929190806105f65750826105ae8693612710936105cd96885116915116906117cc565b16049560018a52600386526105c7818a8c2054166118fb565b166117a9565b968288116105ee575b508491826105e6925b5116611c36565b968880610510565b9650846105d6565b96925050508288956001811460001461064357506106249160028a52600386526105c7818a8c2054166118fb565b965b82881161063b575b508491826105e6926105df565b96508461062e565b60020361066a576106649160038a52600386526105c7818a8c2054166118fb565b96610626565b505086610626565b634e487b7160e01b8a5260218b5260248afd5b91503461024f57606036600319011261024f576106a06116b2565b6024356001600160a01b0381811693918490036102ef576044358181168091036109af577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009586549560ff87861c1615936001600160401b038816968715806109a8575b6001809914908161099e575b159081610995575b506109855767ffffffffffffffff1989811689178b559886610966575b5016918215801561095e575b8015610956575b6109485750610755611edf565b61075d611edf565b61076633611aba565b61076e611edf565b610776611edf565b85600080516020611f618339815191525561078f611edf565b6001600160601b0360a01b91828a541617895581865416178555600254161760025569021e19e0c9bab24000006008556103e861ffff1960095416176009558151936107da8561173c565b6201fa40855260209485810190610bb882528481019189835289805260038852858a2063ffffffff8093511681549065ffff000000008094518c1b16908767ffff00000000000080985160301b1693161717179055855161083a8161173c565b6203f48081528a888a878786888d85890197808952818a019760648952815260038752209751169387549651901b16935160301b169316171717905585516108818161173c565b6205eec081528881018b81528b8a878786888d80890196607888526002815260038752209751169387549651901b16935160301b16931617171790558551936108c98561173c565b620805208552888501938b85528786019360c8855260038d5260038b52888d2096511692865495518b1b16935160301b1693161717179055610909578480f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29368ff000000000000000019815416905551908152a1388080808480f35b855163e6c4247b60e01b8152fd5b508315610748565b508115610741565b68ffffffffffffffffff191668010000000000000001178a5538610735565b865163f92ee8a960e01b81528490fd5b90501538610718565b303b159150610710565b5085610704565b8680fd5b9091503461024f57602036600319011261024f57909182916001600160a01b036109db6116b2565b1682526020522090610a478151916109f28361173c565b8354928160016001600160401b036001600160801b0387169687855260801c1696876020850152015491015251928392839092916001600160401b036020916001600160801b03604085019616845216910152565b0390f35b83903461042f578260031936011261042f57610a656116b2565b60243591610a71611b8f565b83546001600160a01b039283169291908216838114610aaa575b50506101c6939450600080516020611f21833981519152541690611d2c565b60206024918851928380926370a0823160e01b825230878301525afa8015610b64578690610b30575b610ae19150600554906117a9565b8411610aed5780610a8b565b606490602087519162461bcd60e51b8352820152601c60248201527f43616e6e6f74207265636f766572207374616b656420746f6b656e73000000006044820152fd5b506020813d602011610b5c575b81610b4a60209383611788565b810103126102ef57610ae19051610ad3565b3d9150610b3d565b87513d88823e3d90fd5b83823461042f578160031936011261042f5760015490516001600160a01b039091168152602090f35b9091503461024f57602036600319011261024f57610bb36116b2565b90610bbc611b8f565b6001600160a01b03918216928315610242575050600154826001600160601b0360a01b821617600155167f1df95772db25c427e0df149fe4cd5b7c2e970e096ee7305ff86f6e1167281d7b8380a380f35b83346101c95760203660031901126101c9578135918210156101c95750610c339061170d565b54905163ffffffff8216815261ffff602083811c82169083015260309290921c9091166040820152606090f35b9091503461024f57602036600319011261024f5760609282916001600160a01b03610c896116b2565b168252602052209060018254920154906001600160401b038151936001600160801b038116855260801c166020840152820152f35b83823461042f578160031936011261042f57600080516020611f218339815191525490516001600160a01b039091168152602090f35b83823461042f57602036600319011261042f578235906001600160801b0380831690818403610e4b57610d25611bc8565b610d2d611bf8565b8115610e3b576008548210610e2b573385528560205282852090815416610e1b578454610d98929190610d6e908390309033906001600160a01b0316611d7b565b80546001600160c01b03191682174260801b67ffffffffffffffff60801b161790556005546118ee565b6005556006546000198114610e0857600101600655516001600160801b039190911681526001600160401b034216602082015233907f2544ac6c0d12620c0d158afc200af094204139dc39f80409e791ad7817671bd390604090a26001600080516020611f618339815191525580f35b634e487b7160e01b845260118552602484fd5b82516308b8e78360e41b81528690fd5b825163a8ded35f60e01b81528690fd5b8251631f2a200560e01b81528690fd5b8480fd5b83823461042f578160031936011261042f576020906006549051908152f35b83823461042f578160031936011261042f5760207f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25891610eac611b8f565b610eb4611bf8565b600080516020611f41833981519152805460ff1916600117905551338152a180f35b83823461042f578160031936011261042f576020906005549051908152f35b91503461024f57608036600319011261024f5781359180831015611050576024359063ffffffff928383168084036109af576044359461ffff938487169182880361104c576064359586169182870361104857610f50611b8f565b600360ff8b161161103a57612710841161102c576103e8831161101e5750917f14c63a4b7db8e30195d60e22ace7d3f05886b604931b3ec0fe7042782d6b65a797969593918593611018965193610fa68561173c565b845260208401928352848401918252610fbe8b61170d565b93511667ffff00000000000065ffff000000008554945160201b16925160301b16926001600160401b0319161717179055519384938491604091949363ffffffff606085019616845261ffff809216602085015216910152565b0390a280f35b8551638f651fb760e01b8152fd5b8551630a2dcfe760e31b8152fd5b855163e142361760e01b8152fd5b8a80fd5b8980fd5b8380fd5b83823461042f578160031936011261042f576020906007549051908152f35b83346101c957806003193601126101c95761108c611b8f565b600080516020611f2183398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b83823461042f57602036600319011261042f57823561ffff9081811680910361105057611108611b8f565b80158015611167575b611157577f8a0696aa20c444a8b83bd4e1890061f450008b96b5e79d4d7b8cf29f85ec3a39939450600954918161ffff198416176009558351921682526020820152a180f35b8251631b0848d160e21b81528590fd5b506113888111611111565b83823461042f578160031936011261042f576020906008549051908152f35b83823461042f578160031936011261042f5760025490516001600160a01b039091168152602090f35b83823461042f578160031936011261042f5760209060ff600080516020611f41833981519152541690519015158152f35b83823461042f578160031936011261042f578051610a479161120c8261176d565b601c82527f312e302e302d6b6167656e6574776f726b2d7374616b696e672d7632000000006020830152519182916020835260208301906116cd565b83823461042f578160031936011261042f5760207f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa91611286611b8f565b61128e611e4b565b600080516020611f41833981519152805460ff1916905551338152a180f35b83823461042f578160031936011261042f57905490516001600160a01b039091168152602090f35b9091503461024f578260031936011261024f576112f0611bc8565b6112f8611bf8565b3383526020918183528084208151906113108261173c565b8054906001600160801b039182811680855260016001600160401b0393848a88019460801c168452015486860152156115a6578691611351915116426117a9565b61135a81611b2e565b906113648261170d565b918651926113718461173c565b549263ffffffff841681528761ffff85818097898601991c16885260301c16910152878110156115935761157c57506113b661271092849283875116915116906117cc565b160491865b33885285875287600186822082815501556113db838351166005546117a9565b6005556113e96006546118e1565b60065582808351169416809403908382116115695788546001600160a01b039285929161141c9184169033908616611d2c565b85611551575b169586611475575b505051169382519485528401528201527f33cc10f3b6a2d5857f6e45b45d4ebffff18ab8eb40487ac91127c718f875aac760603392a26001600080516020611f618339815191525580f35b8189541691600154169086516370a0823160e01b815282828201528981602481875afa908115611547579089918c91611516575b50106114d357506114bd9187913391611d7b565b6114c9856007546118ee565b600755388061142a565b865162461bcd60e51b8152908101899052601c60248201527f496e73756666696369656e7420726577617264732062616c616e6365000000006044820152606490fd5b8092508b8092503d8311611540575b61152f8183611788565b8101031261104857889051386114a9565b503d611525565b88513d8d823e3d90fd5b61156486848c5416856002541690611d2c565b611422565b634e487b7160e01b895260118752602489fd5b9391505061158e879383835116611c36565b6113bb565b634e487b7160e01b8a526021885260248afd5b8451632cdf478160e11b81528690fd5b9091503461024f57602036600319011261024f578035906115d5611b8f565b81156116155750907fe3117c3cc31e2d5d67afc8b5c366cd87a436cd3aaf93a169500733f4ebfb96ad91600854908060085582519182526020820152a180f35b8251631f2a200560e01b8152fd5b5082346101c95760203660031901126101c9575061ffff61164a6116456116b2565b6117ea565b6001600160801b03849392935193168352166020820152f35b84913461024f57602036600319011261024f578035906001600160401b0390818311610e4b5736602384011215610e4b57820135908111611050573691016024011161042f5780600160209252f35b600435906001600160a01b03821682036116c857565b600080fd5b919082519283825260005b8481106116f9575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016116d8565b6004811015611726576000526003602052604060002090565b634e487b7160e01b600052602160045260246000fd5b606081019081106001600160401b0382111761175757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761175757604052565b90601f801991011681019081106001600160401b0382111761175757604052565b919082039182116117b657565b634e487b7160e01b600052601160045260246000fd5b9190916001600160801b03808094169116029182169182036117b657565b6001600160a01b03166000908152600460205260408082209051909161180f8261173c565b8254926001600160801b039360016001600160401b038683169283875260801c169283602087015201546040850152156118d85761185061185591426117a9565b611b2e565b61185e8161170d565b916040519261186c8461173c565b549163ffffffff8316845261ffff936040856020830195818160201c16875260301c1691015260048110156118c4576118bb57506127109284926118b692511694859151166117cc565b160491565b93505050508091565b634e487b7160e01b82526021600452602482fd5b50929150508190565b80156117b6576000190190565b919082018092116117b657565b90603c63ffffffff809316029182169182036117b657565b6001600160a01b0316600090815260046020908152604080832081519194929161193c8161173c565b8154906001600160801b038216908181528760016001600160401b0395868885019660801c168652015491015215611a945761197e91611850915116426117a9565b936119888561170d565b8151906119948261173c565b5463ffffffff8116825261ffff908181861c168584015260301c16828201526004861015611a8057856119e557506650454e414c545960c81b9051916119d98361176d565b6007835282015291905b565b9360018603611a18575051611a15916542524f4e5a4560d01b90611a088361176d565b6006835282015292611dd3565b90565b60028603611a3a575051611a15916529a4a62b22a960d11b90611a088361176d565b60038603611a67575051611a15916311d3d31160e21b90611a5a8361176d565b6004835282015292611dd3565b9350662aa725a727aba760c91b9051916119d98361176d565b634e487b7160e01b85526021600452602485fd5b5050674e4f5f5354414b4560c01b83945191611aaf8361176d565b600883528201529190565b6001600160a01b03908116908115611b1557600080516020611f2183398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b603c9004600090818052600360205263ffffffff806040842054168210600014611b5757505090565b909160018152816040822054168310600014611b7557505050600190565b600281526040902054161115611b8a57600290565b600390565b600080516020611f21833981519152546001600160a01b03163303611bb057565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020611f618339815191526002815414611be65760029055565b604051633ee5aeb560e01b8152600490fd5b60ff600080516020611f418339815191525416611c1157565b60405163d93c066560e01b8152600490fd5b818102929181159184041417156117b657565b90611c4081611b2e565b90611c4a8261170d565b9060405191611c588361173c565b5463ffffffff8116835261ffff93848260201c16602085015284604085019260301c168252600481101561172657849015918215611d20575b5050611d1757612710611cc06301e1338094611caf611cc695611dd3565b166001600160801b03809716611c23565b04611c23565b04818111611cd2571690565b60405162461bcd60e51b815260206004820152601b60248201527f5265776172642063616c63756c6174696f6e206f766572666c6f7700000000006044820152606490fd5b50505050600090565b51161590508338611c91565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815260808101916001600160401b03831182841017611757576119e392604052611e77565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b03841117611757576119e392604052611e77565b6040015161ffff9081168015611e4457611df36064918360095416611c23565b04818111611dff571690565b60405162461bcd60e51b815260206004820152601860248201527f4150592063616c63756c6174696f6e206f766572666c6f7700000000000000006044820152606490fd5b5050600090565b60ff600080516020611f41833981519152541615611e6557565b604051638dfc202b60e01b8152600490fd5b906000602091828151910182855af115611ed3576000513d611eca57506001600160a01b0381163b155b611ea85750565b604051635274afe760e01b81526001600160a01b039091166004820152602490fd5b60011415611ea1565b6040513d6000823e3d90fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615611f0e57565b604051631afcd79f60e31b8152600490fdfe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a164736f6c6343000816000a