4 txs
5 calls
constructor
constructor(address _token, address _storage, address _multisig, address _manager)
functions
CLAIM_CONTRACT_ROLE
viewfunction CLAIM_CONTRACT_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
MANAGER_ROLE
viewfunction MANAGER_ROLE() view returns (bytes32)
MULTISIG_ROLE
viewfunction MULTISIG_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
stakingStorage
viewfunction stakingStorage() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
token
viewfunction token() view returns (address)
batchUnstake
nonpayablefunction batchUnstake(bytes32[] stakeIds)
emergencyRecover
nonpayablefunction emergencyRecover(address token_, uint256 amount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
stake
nonpayablefunction stake(uint128 amount, uint16 daysLock) returns (bytes32 stakeId)
stakeFromClaim
nonpayablefunction stakeFromClaim(address staker, uint128 amount, uint16 daysLock) returns (bytes32 stakeId)
unpause
nonpayablefunction unpause()
unstake
nonpayablefunction unstake(bytes32 stakeId)
events
EmergencyRecover
event EmergencyRecover(address token, address to, uint256 amount)
Paused
event Paused(address account)
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 staker, bytes32 stakeId, uint128 amount, uint16 indexed stakeDay, uint16 indexed daysLock, uint16 flags)
Unpaused
event Unpaused(address account)
Unstaked
event Unstaked(address indexed staker, bytes32 indexed stakeId, uint16 indexed unstakeDay, uint128 amount)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
ArithmeticOverflow
error ArithmeticOverflow(uint256 value)
ArithmeticUnderflow
error ArithmeticUnderflow(uint256 value)
BatchOperationFailed
error BatchOperationFailed(uint256 successCount, uint256 totalCount)
BatchSizeExceeded
error BatchSizeExceeded(uint256 batchSize, uint256 maximum)
CannotRecoverStakingToken
error CannotRecoverStakingToken()
CheckpointArrayCorrupted
error CheckpointArrayCorrupted(address staker)
CheckpointNotFound
error CheckpointNotFound(address staker, uint16 day)
ContractNotPaused
error ContractNotPaused()
ContractPaused
error ContractPaused()
ControllerAlreadySet
error ControllerAlreadySet()
DivisionByZero
error DivisionByZero()
EmptyBatchOperation
error EmptyBatchOperation()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InsufficientTokenBalance
error InsufficientTokenBalance(uint256 requested, uint256 available)
InvalidAmount
error InvalidAmount()
InvalidCalculationResult
error InvalidCalculationResult(uint256 result)
InvalidCheckpointDay
error InvalidCheckpointDay(uint16 day, uint16 currentDay)
InvalidContractAddress
error InvalidContractAddress(address contractAddr)
InvalidContractState
error InvalidContractState(string expectedState, string currentState)
InvalidDay
error InvalidDay(uint16 day)
InvalidFlags
error InvalidFlags(uint16 flags)
InvalidLockPeriod
error InvalidLockPeriod(uint16 daysLock, uint16 minimum, uint16 maximum)
InvalidPaginationParameters
error InvalidPaginationParameters(uint256 offset, uint256 limit)
InvalidStakeParameters
error InvalidStakeParameters(uint128 amount, uint16 daysLock)
InvalidStakerAddress
error InvalidStakerAddress(address staker)
LimitTooLarge
error LimitTooLarge(uint256 limit, uint256 maximum)
NotStakeOwner
error NotStakeOwner(address caller, address owner)
OutOfBounds
error OutOfBounds(uint256 total, uint256 offset)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StakeAlreadyExists
error StakeAlreadyExists(bytes32 stakeId)
StakeAlreadyUnstaked
error StakeAlreadyUnstaked(bytes32 stakeId)
StakeCreationFailed
error StakeCreationFailed(address staker, uint128 amount, uint16 daysLock)
StakeNotFound
error StakeNotFound(bytes32 stakeId)
StakeNotMatured
error StakeNotMatured(bytes32 stakeId, uint16 currentDay, uint16 matureDay)
StakeRemovalFailed
error StakeRemovalFailed(address staker, bytes32 stakeId)
StakerNotFound
error StakerNotFound(address staker)
TimeLockNotExpired
error TimeLockNotExpired(bytes32 stakeId, uint16 currentDay, uint16 unlockDay)
TokenTransferFailed
error TokenTransferFailed(address token, address to, uint256 amount)
UnauthorizedCaller
error UnauthorizedCaller(address caller, bytes32 requiredRole)
UnsupportedFlagOperation
error UnsupportedFlagOperation(uint16 flags, string operation)
ZeroAddress
error ZeroAddress()
creation bytecode
0x60c060405234801561000f575f5ffd5b5060405161138538038061138583398101604081905261002e91610157565b60015f90815561003e90836100ae565b506100697f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08826100ae565b506100947fa5a0b70b385ff7611cd3840916bd08b10829e5bf9e6637cf79dd9a427fc0e2ab836100ae565b5050506001600160a01b0391821660a052166080526101b3565b5f8281526001602090815260408083206001600160a01b038516845290915281205460ff16610137575f8381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a450600161013a565b505f5b92915050565b6001600160a01b0381168114610154575f5ffd5b50565b5f5f5f5f6080858703121561016a575f5ffd5b845161017581610140565b602086015190945061018681610140565b604086015190935061019781610140565b60608601519092506101a881610140565b939692955090935050565b60805160a0516111806102055f395f818161030c015281816105ee01528181610707015261083401525f818161021f01528181610426015281816105870152818161087c01526109fe01526111805ff3fe608060405234801561000f575f5ffd5b5060043610610127575f3560e01c8063a217fddf116100a9578063dbe46e671161006e578063dbe46e671461027f578063e328400c146102a6578063ec87621c146102cd578063fb1643d7146102f4578063fc0c546a14610307575f5ffd5b8063a217fddf14610200578063a5a1126614610207578063b518a00e1461021a578063b55fb44c14610259578063d547741f1461026c575f5ffd5b80635c975abb116100ef5780635c975abb146101b457806371ed5d1a146101bf5780638456cb59146101d257806391d14854146101da5780639639011e146101ed575f5ffd5b806301ffc9a71461012b578063248a9ca3146101535780632f2ff15d1461018457806336568abe146101995780633f4ba83a146101ac575b5f5ffd5b61013e610139366004610e36565b61032e565b60405190151581526020015b60405180910390f35b610176610161366004610e64565b5f908152600160208190526040909120015490565b60405190815260200161014a565b610197610192366004610e8f565b610364565b005b6101976101a7366004610e8f565b61038f565b6101976103c7565b60025460ff1661013e565b6101976101cd366004610e64565b6103fc565b61019761067f565b61013e6101e8366004610e8f565b6106b1565b6101976101fb366004610ebd565b6106db565b6101765f81565b610197610215366004610ee7565b6107b9565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161014a565b610176610267366004610f7b565b6107ec565b61019761027a366004610e8f565b61096b565b6101767f7b86e74b5b2cbeb359a5556f7b8aa26ec9fb74773c1c7b2dc16e82d368c7062781565b6101767fa5a0b70b385ff7611cd3840916bd08b10829e5bf9e6637cf79dd9a427fc0e2ab81565b6101767f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b610176610302366004610fa7565b610990565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b03198216637965db0b60e01b148061035e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f828152600160208190526040909120015461037f81610af7565b6103898383610b01565b50505050565b6001600160a01b03811633146103b85760405163334bd91960e11b815260040160405180910390fd5b6103c28282610b77565b505050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086103f181610af7565b6103f9610be2565b50565b610404610c34565b61040c610c5a565b6040516373b2e09160e11b81526004810182905233905f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e765c1229060240160a060405180830381865afa158015610473573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610497919061100a565b805190915083906001600160801b03166104d05760405163fbea34c360e01b81526004016104c791815260200190565b60405180910390fd5b506040810151839061ffff16156104fd57604051634fae759560e11b81526004016104c791815260200190565b505f610507610c82565b90505f8260600151836020015161051e91906110a4565b905084828261ffff8082169083161161055f5760405163a171a31b60e01b8152600481019390935261ffff91821660248401521660448201526064016104c7565b505060405163377f548960e01b81526001600160a01b038681166004830152602482018890527f000000000000000000000000000000000000000000000000000000000000000016915063377f5489906044015f604051808303815f87803b1580156105c9575f5ffd5b505af11580156105db573d5f5f3e3d5ffd5b5050845161062092506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915086906001600160801b0316610c95565b82516040516001600160801b03909116815261ffff83169086906001600160a01b038716907f954d6c098e53b2493dff95f8d8fe70acebd03cf52c3f36942c5a440864852ddf9060200160405180910390a4505050506103f960015f55565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b086106a981610af7565b6103f9610cf4565b5f9182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7fa5a0b70b385ff7611cd3840916bd08b10829e5bf9e6637cf79dd9a427fc0e2ab61070581610af7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361075757604051631b81380360e01b815260040160405180910390fd5b61076b6001600160a01b0384163384610c95565b604080516001600160a01b03851681523360208201529081018390527f1fb552e352146cbf91ab18bef411c89c83078d9c853e55bef197d0b6731285009060600160405180910390a1505050565b5f5b818110156103c2576107e48383838181106107d8576107d86110ca565b905060200201356103fc565b6001016107bb565b5f6107f5610c34565b6107fd610c5a565b5f836001600160801b0316116108265760405163162908e360e11b815260040160405180910390fd5b336108656001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682306001600160801b038816610d31565b6040516307c1dc3760e51b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f83b86e0906108b7908490889088905f906004016110de565b6020604051808303815f875af11580156108d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f79190611114565b91508261ffff16610906610c82565b604080518581526001600160801b03881660208201525f81830152905161ffff92909216916001600160a01b038516917fd792eeed90f5fb1d601b0bcdff559e8ba255d831f87c329460206cdbc34e2cde919081900360600190a45061035e60015f55565b5f828152600160208190526040909120015461098681610af7565b6103898383610b77565b5f610999610c34565b7f7b86e74b5b2cbeb359a5556f7b8aa26ec9fb74773c1c7b2dc16e82d368c706276109c381610af7565b5f846001600160801b0316116109ec5760405163162908e360e11b815260040160405180910390fd5b6040516307c1dc3760e51b81526001907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f83b86e090610a419089908990899087906004016110de565b6020604051808303815f875af1158015610a5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a819190611114565b92508361ffff16610a90610c82565b604080518681526001600160801b038916602082015261ffff858116928201929092529116906001600160a01b038916907fd792eeed90f5fb1d601b0bcdff559e8ba255d831f87c329460206cdbc34e2cde9060600160405180910390a450509392505050565b6103f98133610d6a565b5f610b0c83836106b1565b610b70575f8381526001602081815260408084206001600160a01b0387168086529252808420805460ff19169093179092559051339286917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a450600161035e565b505f61035e565b5f610b8283836106b1565b15610b70575f8381526001602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161035e565b610bea610da7565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60025460ff1615610c585760405163d93c066560e01b815260040160405180910390fd5b565b60025f5403610c7c57604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f610c90620151804261112b565b905090565b6040516001600160a01b038381166024830152604482018390526103c291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610dca565b610cfc610c34565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610c173390565b6040516001600160a01b0384811660248301528381166044830152606482018390526103899186918216906323b872dd90608401610cc2565b610d7482826106b1565b610da35760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016104c7565b5050565b60025460ff16610c5857604051638dfc202b60e01b815260040160405180910390fd5b5f5f60205f8451602086015f885af180610de9576040513d5f823e3d81fd5b50505f513d91508115610e00578060011415610e0d565b6001600160a01b0384163b155b1561038957604051635274afe760e01b81526001600160a01b03851660048201526024016104c7565b5f60208284031215610e46575f5ffd5b81356001600160e01b031981168114610e5d575f5ffd5b9392505050565b5f60208284031215610e74575f5ffd5b5035919050565b6001600160a01b03811681146103f9575f5ffd5b5f5f60408385031215610ea0575f5ffd5b823591506020830135610eb281610e7b565b809150509250929050565b5f5f60408385031215610ece575f5ffd5b8235610ed981610e7b565b946020939093013593505050565b5f5f60208385031215610ef8575f5ffd5b823567ffffffffffffffff811115610f0e575f5ffd5b8301601f81018513610f1e575f5ffd5b803567ffffffffffffffff811115610f34575f5ffd5b8560208260051b8401011115610f48575f5ffd5b6020919091019590945092505050565b6001600160801b03811681146103f9575f5ffd5b61ffff811681146103f9575f5ffd5b5f5f60408385031215610f8c575f5ffd5b8235610f9781610f58565b91506020830135610eb281610f6c565b5f5f5f60608486031215610fb9575f5ffd5b8335610fc481610e7b565b92506020840135610fd481610f58565b91506040840135610fe481610f6c565b809150509250925092565b8051610ffa81610f58565b919050565b8051610ffa81610f6c565b5f60a082840312801561101b575f5ffd5b5060405160a0810167ffffffffffffffff8111828210171561104b57634e487b7160e01b5f52604160045260245ffd5b60405261105783610fef565b815261106560208401610fff565b602082015261107660408401610fff565b604082015261108760608401610fff565b606082015261109860808401610fff565b60808201529392505050565b61ffff818116838216019081111561035e57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b039490941684526001600160801b0392909216602084015261ffff908116604084015216606082015260800190565b5f60208284031215611124575f5ffd5b5051919050565b5f8261114557634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220e9cc883b9d7ef5690daae21ffebb39bed7bc64995065a8a530d64345b630268f64736f6c634300081e0033000000000000000000000000f9ff95468cb9a0cd57b8542bbc4c148e290ff465000000000000000000000000faa8a501cf7ffd8080b0864f2c959e8cbcf8303000000000000000000000000007338f0d76f9d74c42c360ff7f852fce1c5369830000000000000000000000006972480b73fd3a5278c039cf072b499c4ca22e33