TokenValidator

Validates tokens by flash borrowing from the token/ pool on V1.

Returns Status.FOT if we detected a fee is taken on transfer. Status.STF if transfer failed for the token. Status.UNKN if we did not detect any issues with the token.

A return value of Status.UNKN does not mean the token is definitely not a fee on transfer token or definitely has no problems with its transfer. It just means we cant say for sure that it has any issues.

We can not guarantee the result of this lens is correct for a few reasons:

1/ Some tokens take fees or allow transfers under specific conditions, for example some have an allowlist

of addresses that do/dont require fees. Therefore the result is not guaranteed to be correct

in all circumstances.

2/ It is possible that the token does not have any pools on V1 therefore we are not able to perform

a flashloan to test the token.

State Variables

FOT_REVERT_STRING

string internal constant FOT_REVERT_STRING = "FOT";

STF_REVERT_STRING_SUFFIX

string internal constant STF_REVERT_STRING_SUFFIX = "TRANSFER_FAILED";

Functions

constructor

constructor(address _factoryV1, address _positionManager) ImmutableState(_factoryV1, _positionManager);

batchValidate

function batchValidate(address[] calldata tokens, address[] calldata baseTokens, uint256 amountToBorrow)
    public
    override
    returns (Status[] memory isFotResults);

validate

function validate(address token, address[] calldata baseTokens, uint256 amountToBorrow)
    public
    override
    returns (Status);

_validate

function _validate(address token, address baseToken, uint256 amountToBorrow) internal returns (Status);

isFotFailed

function isFotFailed(string memory reason) internal pure returns (bool);

isTransferFailed

function isTransferFailed(string memory reason) internal pure returns (bool);

dragonswapCall

function dragonswapCall(address, uint256 amount0, uint256, bytes calldata data) external view override;

Last updated