SDL Pool Secondary
The SDLPoolSecondary
performs the same functions as the SDLPoolSecondary
with a few restrictions. Performing any state changes on reSDL positions including minting, burning, and updating requires the action to be queued at which point the NFT will be non-transferrable until an update is sent to the primary chain (updates are sent periodically). If there are no queued actions for an reSDL NFT, it can be transferred as normal.
This contract is deployed on all supported chains besides the primary chain.
ERC721 Functions
All standard IERC721 and IERC721Metadata functions are implemented for SDLPoolSecondary
View Functions
tokenPools
Returns the rewards pool for a token
Parameters
Name | Type | Description |
---|---|---|
_token | address | address of token |
Return Values
Name | Type | Description |
---|---|---|
rewardsPool | address | address of rewards pool |
supportedTokens
Returns a list of supported tokens
Return Values
Name | Type | Description |
---|---|---|
tokens | address[] | list of token addresses |
isTokenSupported
Returns true/false to whether a given token is supported
Parameters
Name | Type | Description |
---|---|---|
_token | address | address of token |
Return Values
Name | Type | Description |
---|---|---|
isSupported | bool | is token supported |
tokenBalances
Returns balances of supported tokens within the controller
Return Values
Name | Type | Description |
---|---|---|
tokens | address[] | list of supported tokens |
balances | uint256[] | list of token balances |
staked
Returns an account's staked amount for use by reward pools controlled by this contract
Parameters
Name | Type | Description |
---|---|---|
_account | address | address of account |
Return Values
Name | Type | Description |
---|---|---|
staked | uint256 | account's staked amount |
totalStaked
Returns the total staked amount for use by reward pools controlled by this contract
Return Values
Name | Type | Description |
---|---|---|
totalStaked | uint256 | total staked amount |
withdrawableRewards
Returns a list of withdrawable rewards for an account
Parameters
Name | Type | Description |
---|---|---|
_account | address | address of account |
Return Values
Name | Type | Description |
---|---|---|
withdrawableRewards | uint256[] | list of withdrawable reward amounts for each token |
sdlToken
Returns the address of the SDL token
Return Values
Name | Type | Description |
---|---|---|
sdlToken | address | address of SDL token |
boostController
Returns the address of the boost controller
Return Values
Name | Type | Description |
---|---|---|
boostController | address | address of boost controller |
lastLockId
Returns the id of the most recently minted lock
Return Values
Name | Type | Description |
---|---|---|
lastLockId | uint256 | latest lock id |
ccipController
Returns the address of the CCIP controller for this contract
Return Values
Name | Type | Description |
---|---|---|
ccipController | address | address of CCIP controller |
effectiveBalanceOf
Returns the effective stake balance of an account (the effective stake balance includes the actual amount of tokens an account has staked across all locks plus any applicable boost gained by locking)
Parameters
Name | Type | Description |
---|---|---|
_account | address | address of account |
Return Values
Name | Type | Description |
---|---|---|
effectiveBalance | uint256 | effective stake balance |
totalEffectiveBalance
Returns the sum of effective balances across all accounts
Return Values
Name | Type | Description |
---|---|---|
totalEffectiveBalance | uint256 | total effective balance |
getLocks
Returns the list of locks that corresponds to _lockIds
Parameters
Name | Type | Description |
---|---|---|
_lockIds | uint256[] | list of lock ids |
Return Values
Name | Type | Description |
---|---|---|
locks | struct SDLPool.Lock[] | list of locks |
getLockIdsByOwner
Returns a list of lockIds owned by an account
Parameters
Name | Type | Description |
---|---|---|
_owner | address | address of account |
Return Values
Name | Type | Description |
---|---|---|
lockIds | uint256[] | list of lockIds |
queuedNewLockLimit
Returns the maximum number of queued new locks an account can have at one time
Return Values
Name | Type | Description |
---|---|---|
queuedNewLockLimit | uint256 | max num of queued new locks |
updateBatchIndex
Returns the index of the current update batch
Return Values
Name | Type | Description |
---|---|---|
updateBatchIndex | uint128 | index of current batch |
queuedRESDLSupplyChange
Returns the current queued reSDL supply change to be sent in the next update
Return Values
Name | Type | Description |
---|---|---|
queuedRESDLSupplyChange | int256 | queued reSDL supply change |
getQueuedNewLocksByOwner
Returns a list of queued new locks for an owner
Parameters
Name | Type | Description |
---|---|---|
_owner | address | owner of locks |
Return Values
Name | Type | Description |
---|---|---|
queuedLocks | Lock[] | list of queued locks |
batchIndexes | uint256[] | corresponding batch indexes |
getQueuedLockUpdates
Returns queued lock updates for a list of lock ids
Parameters
Name | Type | Description |
---|---|---|
_lockIds | uint256[] | list of lock ids |
Return Values
Name | Type | Description |
---|---|---|
lockUpdates | LockUpdate[][] | list of queued lock updates corresponding to each lock id |
shouldUpdate
Returns whether an update should be sent to the primary chain
Return Values
Name | Type | Description |
---|---|---|
shouldUpdate | bool | whether update should be sent |
updateInProgress
Returns whether a cross chain update is in progress
Return Values
Name | Type | Description |
---|---|---|
updateInProgress | bool | whether update is in progress |
Write Functions
distributeTokens
Distributes token balances to their respective rewards pools
Parameters
Name | Type | Description |
---|---|---|
_tokens | address[] | list of token addresses |
distributeToken
Distributes a token to its respective rewards pool
Parameters
Name | Type | Description |
---|---|---|
_token | address | address of token |
withdrawRewards
Withdraws an account's earned rewards for a list of tokens
Parameters
Name | Type | Description |
---|---|---|
_tokens | address[] | list of token addresses to withdraw rewards from |
addToken
Adds a new token
Parameters
Name | Type | Description |
---|---|---|
_token | address | address of token to add |
_rewardsPool | address | address of token rewards pool to add |
removeToken
Removes a supported token
Parameters
Name | Type | Description |
---|---|---|
_token | address | address of token |
setBaseURI
Sets the base URI for all tokens
Parameters
Name | Type | Description |
---|---|---|
_baseURI_ | string | base URI |
setBoostController
Sets the boost controller
Parameters
Name | Type | Description |
---|---|---|
_boostController | address | address of boost controller |
setCCIPController
Sets the CCIP controller
Parameters
Name | Type | Description |
---|---|---|
_ccipController | address | address of CCIP controller |
onTokenTransfer
ERC677 implementation to stake/lock SDL tokens or distribute rewards
Parameters
Name | Type | Description |
---|---|---|
_sender | address | sender of the stake |
_value | uint256 | value of the token transfer |
_calldata | bytes | encoded lockId (uint256) and lockingDuration (uint64) |
extendLockDuration
Extends the locking duration of a lock
Parameters
Name | Type | Description |
---|---|---|
_lockId | uint256 | id of lock |
_lockingDuration | uint64 | new locking duration to set |
initiateUnlock
Initiates the unlock period for a lock
Parameters
Name | Type | Description |
---|---|---|
_lockId | uint256 | id of lock |
withdraw
Withdraws unlocked SDL
Parameters
Name | Type | Description |
---|---|---|
_lockId | uint256 | id of the lock |
_amount | uint256 | amount to withdraw from the lock |
executeQueuedOperations
Executes queued operations for the sender
Parameters
Name | Type | Description |
---|---|---|
_lockIds | uint256[] | ids of locks to execute updates for |
handleOutgoingRESDL
Handles the outgoing transfer of an reSDL lock to another chain
Parameters
Name | Type | Description |
---|---|---|
_sender | address | sender of the transfer |
_lockId | uint256 | id of lock |
_sdlReceiver | address | address to receive underlying SDL on this chain |
Return Values
Name | Type | Description |
---|---|---|
lock | Lock | the lock being transferred |
handleIncomingRESDL
Handles the incoming transfer of an reSDL lock from another chain
Parameters
Name | Type | Description |
---|---|---|
_receiver | address | receiver of the transfer |
_lockId | uint256 | id of lock |
_lock | Lock | lock |
handleOutgoingUpdate
Handles an outgoing update to the primary chain
Return Values
Name | Type | Description |
---|---|---|
numNewLocks | uint256 | the number of new locks to mint |
resdlSupplyChange | int256 | the reSDL supply change since the last update |
handleIncomingUpdate
Handles an incoming update from the primary chain
Parameters
Name | Type | Description |
---|---|---|
_mintStartIndex | uint256 | start index to use for minting new locks in the lastest batch |
Last updated