LendingFactoryVariables ​
LIQUIDITY ​
contract IFluidLiquidity LIQUIDITY
address of the Liquidity contract.
_NATIVE_TOKEN_ADDRESS ​
address _NATIVE_TOKEN_ADDRESS
address that is mapped to the chain native token
_auths ​
mapping(address => uint256) _auths
auths can update rewards related config at created fToken contracts. owner can add/remove auths. Owner is auth by default.
_deployers ​
mapping(address => uint256) _deployers
deployers can deploy new fTokens. owner can add/remove deployers. Owner is deployer by default.
_allTokens ​
address[] _allTokens
list of all created tokens. Solidity creates an automatic getter only to fetch at a certain position, so explicitly define a getter that returns all.
_fTokenTypes ​
string[] _fTokenTypes
available fTokenTypes for deployment. At least EIP2612Deposits, Permit2Deposits, NativeUnderlying. Solidity creates an automatic getter only to fetch at a certain position, so explicitly define a getter that returns all.
_fTokenCreationCodePointers ​
mapping(bytes32 => address) _fTokenCreationCodePointers
fToken creation code for each fTokenType, accessed via SSTORE2. maps keccak256(abi.encode(fTokenType)) -> SSTORE2 written creation code for the fToken contract
constructor ​
constructor(contract IFluidLiquidity liquidity_, address owner_) internal
allTokens ​
function allTokens() public view returns (address[])
list of all created tokens
fTokenTypes ​
function fTokenTypes() public view returns (string[])
list of all fToken types that can be deployed
fTokenCreationCode ​
function fTokenCreationCode(string fTokenType_) public view returns (bytes)
returns the creation code for a certain fTokenType_
LendingFactoryAdmin ​
validAddress ​
modifier validAddress(address value_)
validates that an address is not the zero address
onlyAuths ​
modifier onlyAuths()
validates that msg.sender is auth or owner
onlyDeployers ​
modifier onlyDeployers()
validates that msg.sender is deployer or owner
isAuth ​
function isAuth(address auth_) public view returns (bool)
reads if a certain auth_
address is an allowed auth or not. Owner is auth by default.
isDeployer ​
function isDeployer(address deployer_) public view returns (bool)
reads if a certain deployer_
address is an allowed deployer or not. Owner is deployer by default.
setAuth ​
function setAuth(address auth_, bool allowed_) external
Sets an address as allowed auth or not. Only callable by owner.
Parameters ​
Name | Type | Description |
---|---|---|
auth_ | address | address to set auth value for |
allowed_ | bool | bool flag for whether address is allowed as auth or not |
setDeployer ​
function setDeployer(address deployer_, bool allowed_) external
Sets an address as allowed deployer or not. Only callable by owner.
Parameters ​
Name | Type | Description |
---|---|---|
deployer_ | address | address to set deployer value for |
allowed_ | bool | bool flag for whether address is allowed as deployer or not |
setFTokenCreationCode ​
function setFTokenCreationCode(string fTokenType_, bytes creationCode_) external
Sets the creationCode_
bytecode for a certain fTokenType_
. Only callable by auths.
Parameters ​
Name | Type | Description |
---|---|---|
fTokenType_ | string | the fToken Type used to refer the creation code |
creationCode_ | bytes | contract creation code. can be set to bytes(0) to remove a previously available fTokenType_ |
createToken ​
function createToken(address asset_, string fTokenType_, bool isNativeUnderlying_) external returns (address token_)
creates token for asset_
for a lending protocol with interest. Only callable by deployers.
Parameters ​
Name | Type | Description |
---|---|---|
asset_ | address | address of the asset |
fTokenType_ | string | type of fToken: - if it's the native token, it should use NativeUnderlying - otherwise it should use fToken - could be more types available, check fTokenTypes() |
isNativeUnderlying_ | bool | flag to signal fToken type that uses native underlying at Liquidity |
Return Values ​
Name | Type | Description |
---|---|---|
token_ | address | address of the created token |
_getSalt ​
function _getSalt(address asset_, string fTokenType_) internal pure returns (bytes32)
_gets the CREATE3 salt for asset_
andfTokenType*
*
FluidLendingFactory ​
creates Fluid lending protocol fTokens, which are interacting with Fluid Liquidity. fTokens are ERC20 & ERC4626 compatible tokens that allow to deposit to Fluid Liquidity to earn interest. Tokens are created at a deterministic address (see computeToken()
), only executable by allow-listed auths.
Note the deployed token starts out with no config at Liquidity contract. This must be done by Liquidity auths in a separate step, otherwise no deposits will be possible. This contract is not upgradeable. It supports adding new fToken creation codes for future new fToken types.
constructor ​
constructor(contract IFluidLiquidity liquidity_, address owner_) public
initialize liquidity contract address & owner
computeToken ​
function computeToken(address asset_, string fTokenType_) public view returns (address token_)
computes deterministic token address for asset_
for a lending protocol
Parameters ​
Name | Type | Description |
---|---|---|
asset_ | address | address of the asset |
fTokenType_ | string | type of fToken: - if it's the native token, it should use NativeUnderlying - otherwise it should use fToken - could be more types available, check fTokenTypes() |
Return Values ​
Name | Type | Description |
---|---|---|
token_ | address | detemrinistic address of the computed token |