0 txs
2k calls
constructor
constructor()
functions
calculateCredit
viewfunction calculateCredit(address holder) view returns (uint256)
calculateCreditForLock
viewfunction calculateCreditForLock(address holder) view returns (uint256)
cycleInterval
viewfunction cycleInterval() view returns (uint40)
getCurrentPeriod
viewfunction getCurrentPeriod(uint256 _timestamp) view returns (uint256)
lockedTokens
viewfunction lockedTokens(address) view returns (uint256)
lockEndTime
viewfunction lockEndTime(address) view returns (uint256)
lockStartTime
viewfunction lockStartTime(address) view returns (uint256)
MAX_LOCK_TIME
viewfunction MAX_LOCK_TIME() view returns (uint256)
MIN_LOCK_TIME
viewfunction MIN_LOCK_TIME() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
stakingBaseRate
viewfunction stakingBaseRate() view returns (uint128)
stakingRate
viewfunction stakingRate() view returns (uint128)
stakingToken
viewfunction stakingToken() view returns (address)
totalCredit
viewfunction totalCredit() view returns (uint256)
totalCredits
viewfunction totalCredits() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
userCredits
viewfunction userCredits(address) view returns (uint256)
userTotalCredits
viewfunction userTotalCredits(address) view returns (uint256)
veToken
viewfunction veToken() view returns (address)
initialize
nonpayablefunction initialize(address owner)
lock
nonpayablefunction lock(uint256 amount, uint256 duration)
pause
nonpayablefunction pause()
recoverToken
nonpayablefunction recoverToken(address _token, uint256 _amount)
renounceOwnership
nonpayablefunction renounceOwnership()
setLockTimeInterval
nonpayablefunction setLockTimeInterval(uint40 _cycleIntervalSeconds)
setLockTimeRange
nonpayablefunction setLockTimeRange(uint256 _minTime, uint256 _maxTime)
setToken
nonpayablefunction setToken(address _stakingToken, uint128 _stakingRate, uint128 _stakingBaseRate, address _veToken)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw()
events
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
TokensLocked
event TokensLocked(address indexed user, (uint8 _lockType, uint256 totalCredits, uint256 newCredits, uint256 addCredits, uint256 newAmount, uint256 addAmount, uint256 addTime, uint256 lockStartTime, uint256 lockEndTime) _lockedParams)
TokensWithdrawn
event TokensWithdrawn(address indexed user, uint256 amount)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
InvalidRequest
error InvalidRequest()
LockDurationTooLong
error LockDurationTooLong()
LockTimeNotReached
error LockTimeNotReached()
NotInitializing
error NotInitializing()
NoTokensToLock
error NoTokensToLock()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051611e026100f95f395f81816115050152818161152e015261166d0152611e025ff3fe6080604052600436106101e6575f3560e01c8063715018a611610108578063ad3cb1cc1161009d578063c63a6ad21161006d578063c63a6ad21461058a578063c789edfb146105c1578063d412d719146105e0578063f2fde38b14610606578063fa78668f14610625575f80fd5b8063ad3cb1cc146104fa578063b29a814014610537578063b5bd3eb914610556578063c4d66de81461056b575f80fd5b8063974f95ae116100d8578063974f95ae1461047d5780639fab73f71461049c578063a43d6404146104c7578063ab6b1200146104db575f80fd5b8063715018a61461042357806372f702f3146104375780638456cb59146104555780638da5cb5b14610469575f80fd5b80633f4ba83a1161017e57806352d1902d1161014e57806352d1902d146103975780635c975abb146103ab5780635eb7413a146103d95780636fdddbde14610404575f80fd5b80633f4ba83a1461033c5780633ff03207146103505780634b56fd98146103655780634f1ef28614610384575f80fd5b80632298a0eb116101b95780632298a0eb146102935780633b26156e146102be5780633b92eb23146102f15780633ccfd60b14610328575f80fd5b80630597bef8146101ea5780631338736f1461022857806320babb921461024957806322684db014610274575b5f80fd5b3480156101f5575f80fd5b50610215610204366004611a9b565b600a6020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610233575f80fd5b50610247610242366004611ab4565b61063a565b005b348015610254575f80fd5b50610215610263366004611a9b565b60096020525f908152604090205481565b34801561027f575f80fd5b5061021561028e366004611ad4565b610cd7565b34801561029e575f80fd5b506102156102ad366004611a9b565b60066020525f908152604090205481565b3480156102c9575f80fd5b50600b546102db9064ffffffffff1681565b60405164ffffffffff909116815260200161021f565b3480156102fc575f80fd5b50600154610310906001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b348015610333575f80fd5b50610247610d12565b348015610347575f80fd5b50610247610ed6565b34801561035b575f80fd5b5061021560045481565b348015610370575f80fd5b5061024761037f366004611b01565b610ee6565b610247610392366004611b66565b610f33565b3480156103a2575f80fd5b50610215610f4e565b3480156103b6575f80fd5b505f80516020611d8d8339815191525460ff16604051901515815260200161021f565b3480156103e4575f80fd5b506102156103f3366004611a9b565b60086020525f908152604090205481565b34801561040f575f80fd5b5061024761041e366004611ab4565b610f69565b34801561042e575f80fd5b50610247610f7c565b348015610442575f80fd5b505f54610310906001600160a01b031681565b348015610460575f80fd5b50610247610f8d565b348015610474575f80fd5b50610310610f9d565b348015610488575f80fd5b50610215610497366004611a9b565b610fcb565b3480156104a7575f80fd5b506102156104b6366004611a9b565b60076020525f908152604090205481565b3480156104d2575f80fd5b50600354610215565b3480156104e6575f80fd5b506102156104f5366004611a9b565b6110a0565b348015610505575f80fd5b5061052a604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161021f9190611c2a565b348015610542575f80fd5b50610247610551366004611c5f565b6111a7565b348015610561575f80fd5b5061021560035481565b348015610576575f80fd5b50610247610585366004611a9b565b6111cb565b348015610595575f80fd5b506002546105a9906001600160801b031681565b6040516001600160801b03909116815260200161021f565b3480156105cc575f80fd5b506102476105db366004611c87565b6112f1565b3480156105eb575f80fd5b506002546105a990600160801b90046001600160801b031681565b348015610611575f80fd5b50610247610620366004611a9b565b611317565b348015610630575f80fd5b5061021560055481565b610642611359565b61064a611389565b335f81815260086020908152604080832054600690925282205490914290610676826305a39a80611cbf565b90505f805f805f8b11801561068d57506005548a11155b801561069b57506004548a10155b156108285787156106e657335f908152600660205260409020544211156106cd57600393506106c8610d12565b6106e6565b6040516341abc80160e01b815260040160405180910390fd5b6106f08a87611cbf565b6001600160a01b03808b165f908152600660209081526040808320949094556007905291822088905590548b925061072b91168a308e6113c0565b6001600160a01b0389165f9081526008602052604090208b90556002548b92506001600160801b03600160801b82048116918c9161076b91869116611cd2565b6107759190611cd2565b61077f9190611ce9565b6001600160a01b038a165f908152600960209081526040808320849055600a90915281208290556003805492955085929091906107bd908490611cbf565b90915550506001546040516312c4ccd160e31b81526001600160a01b03909116906396266688906107f6905f908d908890600401611d08565b5f604051808303815f87803b15801561080d575f80fd5b505af115801561081f573d5f803e3d5ffd5b50505050610b94565b8a15801561083d57505f61083b8a610fcb565b115b801561084b57506004548a10155b801561085957506005548a11155b156109e157335f90815260066020526040902054859061087a908c90611cbf565b11156108995760405163f761f1cd60e01b815260040160405180910390fd5b6002546001600160801b03600160801b82048116918c916108bc918c9116611cd2565b6108c69190611cd2565b6108d09190611ce9565b9250826108dc8a610fcb565b6108e69190611cbf565b6001600160a01b038a165f90815260096020908152604080832093909355600a9052908120805485929061091b908490611cbf565b925050819055508260035f8282546109339190611cbf565b90915550506001600160a01b0389165f90815260066020526040812080548c929061095f908490611cbf565b90915550506001600160a01b03808a165f908152600760205260408082208990556001805491516312c4ccd160e31b81529097509216916396266688916109ac918d908890600401611d08565b5f604051808303815f87803b1580156109c3575f80fd5b505af11580156109d5573d5f803e3d5ffd5b50505050899050610b94565b5f8b1180156109ee575089155b8015610a0157505f6109ff8a610fcb565b115b8015610a1e5750600b5464ffffffffff16610a1c8789611d2c565b115b156106cd57600254600160801b90046001600160801b0316610a408789611d2c565b600254610a57908e906001600160801b0316611cd2565b610a619190611cd2565b610a6b9190611ce9565b925082610a778a610fcb565b610a819190611cbf565b6001600160a01b038a165f90815260096020908152604080832093909355600a90529081208054859290610ab6908490611cbf565b925050819055508260035f828254610ace9190611cbf565b90915550505f54610aea906001600160a01b03168a308e6113c0565b6001600160a01b03808a165f9081526007602052604080822089905560015490516312c4ccd160e31b815260029750921691639626668891610b32918d908890600401611d08565b5f604051808303815f87803b158015610b49575f80fd5b505af1158015610b5b573d5f803e3d5ffd5b505050506001600160a01b0389165f90815260086020526040812080548d9290610b86908490611cbf565b909155508b9250610b949050565b604080516101208101825260ff861681526001600160a01b038b165f818152600a60209081528482205481850152828252600981528482205484860152606084018890528282526008815284822054608085015260a0840187905260c08401869052828252600781528482205460e0850152828252600690528390205461010083015291519091907f08fbe99d02853e5309791968e9c9e36f0c572f7c8e78cb7d0e67c6795482063790610cab9084905f6101208201905060ff83511682526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010083015161010083015292915050565b60405180910390a250505050505050505050610cd360015f80516020611dad83398151915255565b5050565b5f6367b64b0080831015610ced57505f92915050565b600b5464ffffffffff16610d018285611d2c565b610d0b9190611ce9565b9392505050565b610d1a611389565b335f90815260066020526040902054421015610d48576040516214930960e01b815260040160405180910390fd5b335f9081526008602052604081205490819003610d78576040516376e2446360e01b815260040160405180910390fd5b335f81815260086020526040812081905554610da0916001600160a01b039091169083611433565b335f9081526006602090815260408083208390556007825280832083905560098252808320839055600a9091528120546003805491929091610de3908490611d2c565b9091555050600154335f818152600a60205260408082205490516312c4ccd160e31b81526001600160a01b0390941693639626668893610e299390929091600401611d08565b5f604051808303815f87803b158015610e40575f80fd5b505af1158015610e52573d5f803e3d5ffd5b505050505f600a5f610e613390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b82604051610eb591815260200190565b60405180910390a250610ed460015f80516020611dad83398151915255565b565b610ede611469565b610ed461149b565b610eee611469565b5f80546001600160a01b039586166001600160a01b03199182161790915560018054929095169116179092556001600160801b03918216600160801b02911617600255565b610f3b6114fa565b610f448261159e565b610cd382826115a6565b5f610f57611662565b505f80516020611d6d83398151915290565b610f71611469565b600491909155600555565b610f84611469565b610ed45f6116ab565b610f95611469565b610ed461171b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0381165f9081526006602052604081205442118061100557506001600160a01b0382165f90815260086020526040902054155b1561101157505f919050565b6001600160a01b0382165f90815260066020526040812054611034904290611d2c565b6001600160a01b0384165f90815260076020908152604080832054600690925282205492935090916110669190611d2c565b6001600160a01b0385165f90815260096020526040902054909150819061108e908490611cd2565b6110989190611ce9565b949350505050565b6001600160a01b0381165f908152600660205260408120544211806110da57506001600160a01b0382165f90815260086020526040902054155b156110e657505f919050565b5f6110f042610cd7565b6001600160a01b0384165f908152600760205260408120549192509061111590610cd7565b6001600160a01b0385165f908152600660205260408120549192509061113a90610cd7565b90505f6111478483611d2c565b611152906001611cbf565b90505f61115f8484611d2c565b61116a906001611cbf565b6001600160a01b0388165f908152600960205260409020549091508190611192908490611cd2565b61119c9190611ce9565b979650505050505050565b6111af611469565b610cd36111ba610f9d565b6001600160a01b0384169083611433565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156112105750825b90505f8267ffffffffffffffff16600114801561122c5750303b155b90508115801561123a575080155b156112585760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561128257845460ff60401b1916600160401b1785555b61128a611763565b6112938661176b565b61129b61177c565b6112a361178c565b83156112e957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6112f9611469565b600b805464ffffffffff191664ffffffffff92909216919091179055565b61131f611469565b6001600160a01b03811661134d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b611356816116ab565b50565b5f80516020611d8d8339815191525460ff1615610ed45760405163d93c066560e01b815260040160405180910390fd5b5f80516020611dad8339815191528054600119016113ba57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b61141a84856001600160a01b03166323b872dd8686866040516024016113e893929190611d08565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061179c565b50505050565b60015f80516020611dad83398151915255565b6040516001600160a01b0383811660248301526044820183905261146491859182169063a9059cbb906064016113e8565b505050565b33611472610f9d565b6001600160a01b031614610ed45760405163118cdaa760e01b8152336004820152602401611344565b6114a3611808565b5f80516020611d8d833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115745f80516020611d6d833981519152546001600160a01b031690565b6001600160a01b031614155b15610ed45760405163703e46dd60e11b815260040160405180910390fd5b611356611469565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611600575060408051601f3d908101601f191682019092526115fd91810190611d3f565b60015b61162857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611344565b5f80516020611d6d833981519152811461165857604051632a87526960e21b815260048101829052602401611344565b6114648383611837565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ed45760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611723611359565b5f80516020611d8d833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336114dc565b610ed461188c565b61177361188c565b611356816118d5565b61178461188c565b610ed46118dd565b61179461188c565b610ed46118fd565b5f8060205f8451602086015f885af1806117bb576040513d5f823e3d81fd5b50505f513d915081156117d25780600114156117df565b6001600160a01b0384163b155b1561141a57604051635274afe760e01b81526001600160a01b0385166004820152602401611344565b5f80516020611d8d8339815191525460ff16610ed457604051638dfc202b60e01b815260040160405180910390fd5b61184082611905565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611884576114648282611968565b610cd36119dc565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610ed457604051631afcd79f60e31b815260040160405180910390fd5b61131f61188c565b6118e561188c565b5f80516020611d8d833981519152805460ff19169055565b61142061188c565b806001600160a01b03163b5f0361193a57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611344565b5f80516020611d6d83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516119849190611d56565b5f60405180830381855af49150503d805f81146119bc576040519150601f19603f3d011682016040523d82523d5f602084013e6119c1565b606091505b50915091506119d18583836119fb565b925050505b92915050565b3415610ed45760405163b398979f60e01b815260040160405180910390fd5b606082611a1057611a0b82611a57565b610d0b565b8151158015611a2757506001600160a01b0384163b155b15611a5057604051639996b31560e01b81526001600160a01b0385166004820152602401611344565b5092915050565b805115611a675780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b0381168114611a96575f80fd5b919050565b5f60208284031215611aab575f80fd5b610d0b82611a80565b5f8060408385031215611ac5575f80fd5b50508035926020909101359150565b5f60208284031215611ae4575f80fd5b5035919050565b80356001600160801b0381168114611a96575f80fd5b5f805f8060808587031215611b14575f80fd5b611b1d85611a80565b9350611b2b60208601611aeb565b9250611b3960408601611aeb565b9150611b4760608601611a80565b905092959194509250565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215611b77575f80fd5b611b8083611a80565b9150602083013567ffffffffffffffff811115611b9b575f80fd5b8301601f81018513611bab575f80fd5b803567ffffffffffffffff811115611bc557611bc5611b52565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611bf457611bf4611b52565b604052818152828201602001871015611c0b575f80fd5b816020840160208301375f602083830101528093505050509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215611c70575f80fd5b611c7983611a80565b946020939093013593505050565b5f60208284031215611c97575f80fd5b813564ffffffffff81168114610d0b575f80fd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156119d6576119d6611cab565b80820281158282048414176119d6576119d6611cab565b5f82611d0357634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b039384168152919092166020820152604081019190915260600190565b818103818111156119d6576119d6611cab565b5f60208284031215611d4f575f80fd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220a333b2c2b1707d766fc4823755e9779522e7c26212d48eef4e6ec18a480b596c64736f6c634300081a0033