Skip to content

fTokenCore ​

Git Source

Inherits:Error, IERC4626, IFToken, Variables, Events, ReentrancyGuard

internal methods for fToken contracts

Functions ​

_getLiquidityExchangePrice ​

Gets current (updated) Liquidity supply exchange price for the underyling asset

solidity
function _getLiquidityExchangePrice() internal view returns (uint256 supplyExchangePrice_);

_getLiquidityBalance ​

Gets current Liquidity supply balance of address(this) for the underyling asset

solidity
function _getLiquidityBalance() internal view returns (uint256 balance_);

_getLiquidityUnderlyingBalance ​

Gets current Liquidity underlying token balance

solidity
function _getLiquidityUnderlyingBalance() internal view virtual returns (uint256);

_getLiquidityWithdrawable ​

Gets current withdrawable amount at Liquidity withdrawalLimit_ (withdrawal limit or balance).

solidity
function _getLiquidityWithdrawable() internal view returns (uint256 withdrawalLimit_);

_calculateNewTokenExchangePrice ​

Calculates new token exchange price based on the current liquidity exchange price newLiquidityExchangePrice_ and rewards rate.

solidity
function _calculateNewTokenExchangePrice(uint256 newLiquidityExchangePrice_)
    internal
    view
    returns (uint256 newTokenExchangePrice_, bool rewardsEnded_);

Parameters

NameTypeDescription
newLiquidityExchangePrice_uint256new (current) liquidity exchange price

_updateRates ​

calculates new exchange prices, updates values in storage and returns new tokenExchangePrice (with reward rates)

solidity
function _updateRates(uint256 liquidityExchangePrice_, bool forceUpdateStorage_)
    internal
    returns (uint256 tokenExchangePrice_);

_splitSignature ​

splits a bytes signature sig into v, r, s. Taken from https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html

solidity
function _splitSignature(bytes memory sig) internal pure returns (uint8 v, bytes32 r, bytes32 s);

_depositToLiquidity ​

Deposit assets_ amount of tokens to Liquidity

solidity
function _depositToLiquidity(uint256 assets_, bytes memory liquidityCallbackData_)
    internal
    virtual
    returns (uint256 exchangePrice_);

Parameters

NameTypeDescription
assets_uint256The amount of tokens to deposit
liquidityCallbackData_bytescallback data passed to Liquidity for liquidityCallback

Returns

NameTypeDescription
exchangePrice_uint256liquidity exchange price for token

_withdrawFromLiquidity ​

Withdraw assets_ amount of tokens from Liquidity directly to receiver_

solidity
function _withdrawFromLiquidity(uint256 assets_, address receiver_) internal virtual returns (uint256 exchangePrice_);

Parameters

NameTypeDescription
assets_uint256The amount of tokens to withdraw
receiver_addressthe receiver address of withdraw amount

Returns

NameTypeDescription
exchangePrice_uint256liquidity exchange price for token

_executeDeposit ​

deposits assets_ into liquidity and mints shares for receiver_. Returns amount of sharesMinted_.

solidity
function _executeDeposit(uint256 assets_, address receiver_, bytes memory liquidityCallbackData_)
    internal
    virtual
    validAddress(receiver_)
    returns (uint256 sharesMinted_);

_executeWithdraw ​

withdraws assets_ from liquidity to receiver_ and burns shares from owner_. Returns amount of sharesBurned_. requires nonReentrant! modifier on calling method otherwise ERC777s could reenter!

solidity
function _executeWithdraw(uint256 assets_, address receiver_, address owner_)
    internal
    virtual
    validAddress(receiver_)
    returns (uint256 sharesBurned_);