Depositing
Exploring how the deposit function works
Deposits
function getListSupportedTokens() public view returns (address[] memory) {
return supportedTokens.values();
}
function deposit(address _token, uint256 _amount) external {
if (supportedTokens.contains(_token) == false) {
///Case 2, read below
IERC20Upgradeable(_token).safeTransferFrom(_msgSender(), address(this), _amount);
(, address primaryToken) = ILiquidityHandler(liquidityHandler).getAdapterCoreTokensFromIbAlluo(address(this));
IERC20Upgradeable(_token).safeIncreaseAllowance(exchangeAddress, _amount);
_amount = IExchange(exchangeAddress).exchange(_token, primaryToken, _amount, 0);
_token = primaryToken;
IERC20Upgradeable(primaryToken).safeTransfer(address(liquidityHandler), _amount);
} else {
/// Case 1, read below
IERC20Upgradeable(_token).safeTransferFrom(_msgSender(),address(liquidityHandler),_amount);
}
updateRatio();
ILiquidityHandler(liquidityHandler).deposit(_token, _amount);
uint256 amountIn18 = _amount * 10**(18 - AlluoERC20Upgradable(_token).decimals());
uint256 adjustedAmount = (amountIn18 * multiplier) / growingRatio;
_mint(_msgSender(), adjustedAmount);
emit TransferAssetValue(address(0), _msgSender(), adjustedAmount, amountIn18, growingRatio);
emit Deposited(_msgSender(), _token, _amount);
}Case 1: If you deposit a token that is a 'supported' token:
Case 2: If you deposit a token that is NOT a 'supported' token:
Last updated