LiquidityProtectionSingleLimitStrategy

Contract that implements protection strategy using a single limit. Inherits from StrategyBase.
Contract can be found here:

Variables

  • protection

protection

A mapping of addresses and their protection rules.

Functions

  • getLimit
  • setLimitBatched
  • setLimit
  • removeLimits
  • pause
  • isTransferAllowed

getLimit

function getLimit(address token, address protectedAddress) external view returns(Limit memory)
Returns limit info for particular protected address.
Parameters:
Name
Type
Description
token
address
Token for which the protection rules are being checked.
protectedAddress
address
Address for which the limit should be returned.

setLimitBatched

function setLimitBatched(
address token,
address[] calldata protectedAddresses,
uint256 periodInSeconds,
uint256 amountPerPeriod,
uint256 startTimestamp
) external onlyProtectionAdmin(token)
Sets limits for a list of addresses. Can be called only by token protection admin.
Parameters:
Name
Type
Description
token
address
Token for which the protection rules are being applied.
protectedAddresses
address[]
A list of addresses that should get the limit applied.
periodInSeconds
uint256
Limit period.
amountPerPeriod
uint256
Limit amount per period.
startTimestamp
uint256
Limit start time.

setLimit

function setLimit(
address token,
address protectedAddress,
uint256 periodInSeconds,
uint256 amountPerPeriod,
uint256 startTimestamp
) external onlyProtectionAdmin(token)
Sets limit for a single address. Can be called only by token protection admin.
Parameters:
Name
Type
Description
token
address
Token for which the protection rules are being applied.
protectedAddress
address
Address that should get the limit applied.
periodInSeconds
uint256
Limit period.
amountPerPeriod
uint256
Limit amount per period.
startTimestamp
uint256
Limit start time.

removeLimits

function removeLimits(address token, address[] calldata protectedAddresses) external onlyProtectionAdmin(token)
Removes limits for addresses in the list. Can be called only by token protection admin.
Parameters:
Name
Type
Description
token
address
Token for which the protection rules are being applied.
protectedAddresses
address[]
Addresses that should get limits removed.

pause

function pause(address token, address protectedAddress) external onlyProtectionAdmin(token)
Change limit to 0, ie, pause transfers from this address. Can be called only by token protection admin.
Parameters:
Name
Type
Description
token
address
Token for which the protection rules are being applied.
protectedAddress
address
Address that should get it's limit paused.

isTransferAllowed

function isTransferAllowed(address token, address sender, address recipient, uint256 amount) external
Checks if transfer from the sender is allowed. Internally it validates if limit is not reached and updates limit info after transfer is allowed to go through.
Parameters:
Name
Type
Description
token
address
Token for which the protection rules are being checked.
sender
address
Sender's address.
recipient
address
Recipient's address.
amount
uint256
Amount of tokens being transferred.