0 txs
178 calls
constructor
constructor()
functions
checkWhitelist
viewfunction checkWhitelist(address asset) view returns (bool)
getBalance
viewfunction getBalance(address user, address asset) view returns (uint256)
getTotalStaked
viewfunction getTotalStaked(address asset) view returns (uint256)
getTotalStakedBalances
viewfunction getTotalStakedBalances() view returns (tuple[])
getUnlockTime
viewfunction getUnlockTime(address user, address asset) view returns (uint256)
getUserBalances
viewfunction getUserBalances(address user) view returns (tuple[])
getWhitelistedAssets
viewfunction getWhitelistedAssets() view returns (address[])
MAX_LOCK_WEEKS
viewfunction MAX_LOCK_WEEKS() view returns (uint256)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
renounceOwnership
viewfunction renounceOwnership() view
acceptOwnership
nonpayablefunction acceptOwnership()
addMultipleToWhitelist
nonpayablefunction addMultipleToWhitelist(address[] assets)
addToWhitelist
nonpayablefunction addToWhitelist(address asset)
deposit
nonpayablefunction deposit(address asset, uint256 amount, uint256 lockWeeks)
initialize
nonpayablefunction initialize()
migrateLiquidity
nonpayablefunction migrateLiquidity()
rebalancerWithdraw
nonpayablefunction rebalancerWithdraw(address token, uint256 amount)
rebalancerWithdrawEth
nonpayablefunction rebalancerWithdrawEth(uint256 amount)
removeFromWhitelist
nonpayablefunction removeFromWhitelist(address asset, bool force)
setLockTime
nonpayablefunction setLockTime(address asset, uint256 lockWeeks)
setMigrationTarget
nonpayablefunction setMigrationTarget(address _newTargetContract)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw(address asset, uint256 amount)
events
AssetRemovedFromWhitelist
event AssetRemovedFromWhitelist(address indexed asset)
AssetWhitelisted
event AssetWhitelisted(address indexed asset)
Deposited
event Deposited(address indexed user, address indexed asset, uint256 amount, uint256 lockWeeks)
Initialized
event Initialized(uint64 version)
LiquidityMigrated
event LiquidityMigrated(address indexed user, address indexed asset, uint256 amount, address indexed targetContract)
LockTimeUpdated
event LockTimeUpdated(address indexed user, address indexed asset, uint256 lockWeeks)
MigrationTargetSet
event MigrationTargetSet(address indexed newTargetContract)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Withdrawn
event Withdrawn(address indexed user, address indexed asset, uint256 amount)
errors
AmountMustBeGreaterThanZero
error AmountMustBeGreaterThanZero()
AssetAlreadyWhitelisted
error AssetAlreadyWhitelisted(address asset)
AssetListCannotBeEmpty
error AssetListCannotBeEmpty()
AssetLocked
error AssetLocked(address user, address asset, uint256 unlockTime, uint256 currentTime)
AssetNotWhitelisted
error AssetNotWhitelisted(address asset)
CannotRemoveAssetWithStakedBalance
error CannotRemoveAssetWithStakedBalance(address asset, uint256 totalStaked)
CannotWhitelistZeroAddress
error CannotWhitelistZeroAddress()
EtherTransferFailed
error EtherTransferFailed()
InsufficientBalance
error InsufficientBalance(address user, address asset, uint256 balance, uint256 amountToWithdraw)
InvalidInitialization
error InvalidInitialization()
LockPeriodTooLong
error LockPeriodTooLong(uint256 lockWeeks, uint256 maxLockWeeks)
LockPeriodTooShort
error LockPeriodTooShort(uint256 currentUnlockTime, uint256 newUnlockTime)
MigrationTargetNotSet
error MigrationTargetNotSet()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
RenounceOwnershipDisabled
error RenounceOwnershipDisabled()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UserHasNoBalanceOfAsset
error UserHasNoBalanceOfAsset(address user, address asset)
creation bytecode
0x6080604052348015600e575f5ffd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611ec3806100d65f395ff3fe608060405234801561000f575f5ffd5b5060043610610153575f3560e01c8063b48b99bb116100bf578063e30c397811610079578063e30c3978146102b7578063e43252d7146102bf578063ebba5644146102d2578063f2fde38b146102e5578063f3fef3a3146102f8578063fae8a5d11461030b575f5ffd5b8063b48b99bb1461024d578063bafacab91461026e578063bda204bb14610276578063c231bace1461027e578063d4fac45d14610291578063dd2a8b11146102a4575f5ffd5b806379ba50971161011057806379ba5097146101d55780638129fc1c146101dd5780638401f8d1146101e55780638da5cb5b146101f8578063a22484d914610218578063abd3f6121461022d575f5ffd5b806302fb2dd1146101575780630efe6a8b1461016c5780631950c2181461017f5780631f39d35a146101a75780632797c7a4146101ba578063715018a6146101cd575b5f5ffd5b61016a610165366004611b46565b610320565b005b61016a61017a366004611b6e565b610340565b61019261018d366004611b9e565b61058e565b60405190151581526020015b60405180910390f35b61016a6101b5366004611bbe565b6105b8565b61016a6101c8366004611bd5565b610626565b61016a61083e565b61016a610862565b61016a6108aa565b61016a6101f3366004611c0e565b6109c7565b610200610a43565b6040516001600160a01b03909116815260200161019e565b610220610a77565b60405161019e9190611c7f565b61024061023b366004611b9e565b610ae0565b60405161019e9190611cca565b61026061025b366004611d23565b610c8c565b60405190815260200161019e565b610260601881565b61016a610cc8565b61016a61028c366004611b9e565b610f31565b61026061029f366004611d23565b610f92565b6102606102b2366004611b9e565b610fca565b610200610ff4565b61016a6102cd366004611b9e565b61101c565b61016a6102e0366004611b46565b611039565b61016a6102f3366004611b9e565b611206565b61016a610306366004611b46565b61128b565b6103136114c0565b60405161019e9190611d54565b6103286115f9565b61033c6001600160a01b038316338361162b565b5050565b61034861168a565b826103516116c1565b6001600160a01b0382165f908152602091909152604090205460ff1661039a5760405163067c259360e41b81526001600160a01b03821660048201526024015b60405180910390fd5b825f036103ba57604051635e85ae7360e01b815260040160405180910390fd5b60188211156103e6576040516304cc36eb60e51b81526004810183905260186024820152604401610391565b5f6103ef6116c1565b905082156104ae575f6104058462093a80611db4565b61040f9042611dcb565b335f90815260038401602090815260408083206001600160a01b038b16845290915290205490915081101561048857335f90815260038301602090815260408083206001600160a01b038a1684529091529081902054905163759aa8dd60e01b8152600481019190915260248101829052604401610391565b335f90815260038301602090815260408083206001600160a01b038a1684529091529020555b335f90815260028201602090815260408083206001600160a01b0389168452909152812080548692906104e2908490611dcb565b90915550506001600160a01b0385165f90815260048201602052604081208054869290610510908490611dcb565b9091555061052b90506001600160a01b0386163330876116e5565b60408051858152602081018590526001600160a01b0387169133917ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5910160405180910390a3505061058960015f516020611e6e5f395f51905f5255565b505050565b5f6105976116c1565b6001600160a01b039092165f90815260209290925250604090205460ff1690565b6105c06115f9565b6040515f90339083908381818185875af1925050503d805f81146105ff576040519150601f19603f3d011682016040523d82523d5f602084013e610604565b606091505b505090508061033c57604051630ce8f45160e31b815260040160405180910390fd5b61062e6115f9565b816106376116c1565b6001600160a01b0382165f908152602091909152604090205460ff1661067b5760405163067c259360e41b81526001600160a01b0382166004820152602401610391565b5f6106846116c1565b9050826106e6576001600160a01b0384165f908152600482016020526040902054156106e6576001600160a01b0384165f818152600483810160205260409182902054915162a962c760e41b8152908101929092526024820152604401610391565b6001600160a01b0384165f908152602082905260408120805460ff191690555b600182015481101561080457846001600160a01b031682600101828154811061073157610731611dde565b5f918252602090912001546001600160a01b0316036107fc5760018083018054909161075c91611df2565b8154811061076c5761076c611dde565b5f918252602090912001546001830180546001600160a01b03909216918390811061079957610799611dde565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001018054806107d7576107d7611e05565b5f8281526020902081015f1990810180546001600160a01b0319169055019055610804565b600101610706565b506040516001600160a01b038516907f9d64110ab84413b321236d9ae67b494d51691ffa38bc59d9d858143f270d3432905f90a250505050565b6108466115f9565b6040516001623f026d60e01b0319815260040160405180910390fd5b338061086c610ff4565b6001600160a01b03161461089e5760405163118cdaa760e01b81526001600160a01b0382166004820152602401610391565b6108a781611731565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156108ef5750825b90505f8267ffffffffffffffff16600114801561090b5750303b155b905081158015610919575080155b156109375760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561096157845460ff60401b1916600160401b1785555b61096a33611769565b61097261177a565b61097a611782565b83156109c057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6109cf6115f9565b5f6109d86116c1565b90505f8290036109fb57604051632fe961fd60e11b815260040160405180910390fd5b5f5b82811015610a3d57610a3582858584818110610a1b57610a1b611dde565b9050602002016020810190610a309190611b9e565b611792565b6001016109fd565b50505050565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6060610a816116c1565b600101805480602002602001604051908101604052809291908181526020018280548015610ad657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610ab8575b5050505050905090565b60605f610aeb6116c1565b60018101549091505f9067ffffffffffffffff811115610b0d57610b0d611e19565b604051908082528060200260200182016040528015610b6857816020015b610b5560405180606001604052805f6001600160a01b031681526020015f81526020015f81525090565b815260200190600190039081610b2b5790505b5090505f5b6001830154811015610c84576040518060600160405280846001018381548110610b9957610b99611dde565b5f9182526020808320909101546001600160a01b039081168452891682526002870181526040822060018801805494909201939092919086908110610be057610be0611dde565b5f9182526020808320909101546001600160a01b0390811684528382019490945260409283018220548552928a168152600388018352908120600188018054949093019390929086908110610c3757610c37611dde565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205490528251839083908110610c7157610c71611dde565b6020908102919091010152600101610b6d565b509392505050565b5f610c956116c1565b6001600160a01b038085165f90815260039290920160209081526040808420928616845291905290205490505b92915050565b610cd061168a565b5f610cd96116c1565b6005810154600182015491925033916001600160a01b039091169081610d12576040516391a8fd0d60e01b815260040160405180910390fd5b815f5b82811015610f13575f866001018281548110610d3357610d33611dde565b5f9182526020808320909101546001600160a01b03898116845260028b018352604080852091909216808552925282205490925090819003610d76575050610f0b565b6001600160a01b038088165f90815260038a016020908152604080832093861683529290522054421015610dec576001600160a01b038088165f90815260038a01602090815260408083209386168352929052819020549051639b00fd4760e01b81526103919189918591904290600401611e2d565b6001600160a01b038088165f90815260028a0160209081526040808320938616835292815282822082905560048b0190529081208054839290610e30908490611df2565b90915550829050610e4b6001600160a01b038216888461186e565b60405163b3db428b60e01b81526001600160a01b03898116600483015284811660248301526044820184905286169063b3db428b906064015f604051808303815f87803b158015610e9a575f5ffd5b505af1158015610eac573d5f5f3e3d5ffd5b50505050866001600160a01b0316836001600160a01b0316896001600160a01b03167f332ab4a22530690e8a92b8cb0cfec1f2d836f745737262105422a3b7febcfb4d85604051610eff91815260200190565b60405180910390a45050505b600101610d15565b505050505050610f2f60015f516020611e6e5f395f51905f5255565b565b610f396115f9565b5f610f426116c1565b6005810180546001600160a01b0319166001600160a01b038516908117909155604051919250907fd38d51fa8d687cb8772fcb1c2f7f8548161b7f518a28e5685c2e1236e349fff3905f90a25050565b5f610f9b6116c1565b6001600160a01b039384165f908152600291909101602090815260408083209490951682529290925250205490565b5f610fd36116c1565b6001600160a01b039092165f90815260049290920160205250604090205490565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610a67565b6110246115f9565b5f61102d6116c1565b905061033c8183611792565b816110426116c1565b6001600160a01b0382165f908152602091909152604090205460ff166110865760405163067c259360e41b81526001600160a01b0382166004820152602401610391565b60188211156110b2576040516304cc36eb60e51b81526004810183905260186024820152604401610391565b5f6110bb6116c1565b335f90815260028201602090815260408083206001600160a01b038916845290915281205491925003611112576040516303762df760e11b81523360048201526001600160a01b0385166024820152604401610391565b5f6111208462093a80611db4565b61112a9042611dcb565b335f90815260038401602090815260408083206001600160a01b038a1684529091529020549091508110156111a357335f90815260038301602090815260408083206001600160a01b03891684529091529081902054905163759aa8dd60e01b8152600481019190915260248101829052604401610391565b335f81815260038401602090815260408083206001600160a01b038a1680855290835292819020859055518781529192917f9a13aad40bed7ef8ffd2799ed93a3c5a3b87d5ba22a34d55080e93caceda345b910160405180910390a35050505050565b61120e6115f9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b0383169081178255611252610a43565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b61129361168a565b8161129c6116c1565b6001600160a01b0382165f908152602091909152604090205460ff166112e05760405163067c259360e41b81526001600160a01b0382166004820152602401610391565b815f0361130057604051635e85ae7360e01b815260040160405180910390fd5b5f6113096116c1565b335f90815260028201602090815260408083206001600160a01b038916845290915290205490915083111561137c57335f81815260028301602090815260408083206001600160a01b03891684529091529081902054905163861da4bd60e01b8152610391929187918790600401611e2d565b335f90815260038201602090815260408083206001600160a01b03881684529091529020544210156113ec57335f81815260038301602090815260408083206001600160a01b038916845290915290819020549051639b00fd4760e01b8152610391929187914290600401611e2d565b335f90815260028201602090815260408083206001600160a01b038816845290915281208054859290611420908490611df2565b90915550506001600160a01b0384165f9081526004820160205260408120805485929061144e908490611df2565b9091555061146890506001600160a01b038516338561162b565b6040518381526001600160a01b0385169033907fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb9060200160405180910390a3505061033c60015f516020611e6e5f395f51905f5255565b60605f6114cb6116c1565b60018101549091505f9067ffffffffffffffff8111156114ed576114ed611e19565b60405190808252806020026020018201604052801561153157816020015b604080518082019091525f808252602082015281526020019060019003908161150b5790505b5090505f5b60018301548110156115f257604051806040016040528084600101838154811061156257611562611dde565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03168152602001846004015f8660010185815481106115a5576115a5611dde565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054905282518390839081106115df576115df611dde565b6020908102919091010152600101611536565b5092915050565b33611602610a43565b6001600160a01b031614610f2f5760405163118cdaa760e01b8152336004820152602401610391565b6040516001600160a01b0383811660248301526044820183905261058991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506118f5565b5f516020611e6e5f395f51905f528054600119016116bb57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b7fae398dd013c0ddbfa88aa8848030ea09095acd861cb18d1f6b040124d4ce4d0090565b6040516001600160a01b038481166024830152838116604483015260648201839052610a3d9186918216906323b872dd90608401611658565b60015f516020611e6e5f395f51905f5255565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561033c82611961565b6117716119d1565b6108a781611a1a565b610f2f6119d1565b61178a6119d1565b610f2f611a4b565b6001600160a01b0381166117b957604051633756244d60e01b815260040160405180910390fd5b6001600160a01b0381165f9081526020839052604090205460ff16156117fd576040516366e1a9e160e11b81526001600160a01b0382166004820152602401610391565b6001600160a01b0381165f81815260208481526040808320805460ff1916600190811790915586810180549182018155845291832090910180546001600160a01b03191684179055517f4ee7cf18e72b826aae16fb8d61297801c2e75ddd5d0ab6da3ee524230cf258d09190a25050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156118bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118df9190611e56565b9050610a3d84846118f08585611dcb565b611a53565b5f5f60205f8451602086015f885af180611914576040513d5f823e3d81fd5b50505f513d9150811561192b578060011415611938565b6001600160a01b0384163b155b15610a3d57604051635274afe760e01b81526001600160a01b0385166004820152602401610391565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610f2f57604051631afcd79f60e31b815260040160405180910390fd5b611a226119d1565b6001600160a01b03811661089e57604051631e4fbdf760e01b81525f6004820152602401610391565b61171e6119d1565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052611aa48482611ae2565b610a3d576040516001600160a01b0384811660248301525f6044830152611ad891869182169063095ea7b390606401611658565b610a3d84826118f5565b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015611b2157508115611b135780600114611b21565b5f866001600160a01b03163b115b9695505050505050565b80356001600160a01b0381168114611b41575f5ffd5b919050565b5f5f60408385031215611b57575f5ffd5b611b6083611b2b565b946020939093013593505050565b5f5f5f60608486031215611b80575f5ffd5b611b8984611b2b565b95602085013595506040909401359392505050565b5f60208284031215611bae575f5ffd5b611bb782611b2b565b9392505050565b5f60208284031215611bce575f5ffd5b5035919050565b5f5f60408385031215611be6575f5ffd5b611bef83611b2b565b915060208301358015158114611c03575f5ffd5b809150509250929050565b5f5f60208385031215611c1f575f5ffd5b823567ffffffffffffffff811115611c35575f5ffd5b8301601f81018513611c45575f5ffd5b803567ffffffffffffffff811115611c5b575f5ffd5b8560208260051b8401011115611c6f575f5ffd5b6020919091019590945092505050565b602080825282518282018190525f918401906040840190835b81811015611cbf5783516001600160a01b0316835260209384019390920191600101611c98565b509095945050505050565b602080825282518282018190525f918401906040840190835b81811015611cbf57835180516001600160a01b03168452602080820151818601526040918201519185019190915290930192606090920191600101611ce3565b5f5f60408385031215611d34575f5ffd5b611d3d83611b2b565b9150611d4b60208401611b2b565b90509250929050565b602080825282518282018190525f918401906040840190835b81811015611cbf57835180516001600160a01b031684526020908101518185015290930192604090920191600101611d6d565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610cc257610cc2611da0565b80820180821115610cc257610cc2611da0565b634e487b7160e01b5f52603260045260245ffd5b81810381811115610cc257610cc2611da0565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b5f60208284031215611e66575f5ffd5b505191905056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220cf0abfc09a8342c4d1ab32a5f23ceff7e654a6b7ae17052c653678437b93fe9464736f6c634300081e0033