Fungify: Merging NFTs with DeFi

Fungify

Fungify βeta

About
Fungify is a non-custodial NFT index and algorithmic lending protocol, allowing for instant NFT sales, immediate NFT-backed loans, and a yield-bearing NFT index token.
Token name
FUNG
Protocol Oracle Index

Fungify is revolutionizing the intersection of non-fungible tokens (NFTs) and decentralized finance (DeFi) through its two core components: the Index and Pools. These elements are crafted to enhance the integration of NFTs within the DeFi ecosystem, offering innovative solutions for liquidity and investment.

Fungify NFT index

NFT Index

The protocol is a permissionless exchange-traded fund (ETF) mechanism for non-fungible tokens (NFTs). It operates through a vault system where NFTs are deposited and a corresponding $NFT token representing the value of the NFTs in the vault is minted. The $NFT token can be traded on the open market, and its value is tied to collective floor prices for NFTs in the vault, determined by an external oracle.

The index is a market-value-weighted index of NFTs, allowing for instantaneous trading of NFTs and yielding an NFT index token. With a small set of primitives, Fungify solves the most complex problems at the intersection of NFT and DeFi.

In November 2024, Fungify deployed its protocols on Berachain and introduced a cross-chain strategy. This strategy can be replicated on all chains, directing demand from across the blockchain space to the Ethereum Index and providing a base on which other chains' indexes can grow

The Index token, $NFT, can be wrapped and connected to other chains. There, it can provide access to NFTs for communities that cannot afford the transaction fees or the cost of Ethereum NFTs. When a blockchain builds its own NFT ecosystem, an index can be created for that blockchain, taking the Ethereum NFT index as a base. This will allow activity on other chains to return liquidity to the Ethereum index. Furthermore, the other chain's index can be connected back to Ethereum so that users of the Ethereum mainnet can access that ecosystem's NFT. In doing so, since the $NFT token is the backbone of each index, it still drives demand for the underlying Ethereum index, allowing it to grow further.

Market Vault

MarketVault is where NFTs sold to the protocol are stored. NFTs sold to MarketVault can be purchased by collectors through a redemption mechanism. MarketVault also manages the minting and burning of the NFT index token, allowing it to track its reserve value through arbitrage.

Interacting with the MarketVault is permissionless. It's not only a guaranteed counterparty for the protocol, but also for every market participant. Because it is capable of accepting multiple types of NFTs and issuing a single fungible token, each new collection whitelisted by MarketVault relies on the liquidity of previous collections, allowing it to build upon its own. Instead of multiple, disparate vaults with low liquidity, MarketVault provides a single, global source of liquidity for trading NFTs.

NFTs enter the vault when a seller directly deposits their NFTs into MarketVault in exchange for an NFT Index Token. NFTs in MarketVault can only exit through the Redemption Mechanism.

Collections Whitelist

The protocol will only accept whitelisted NFT collections.

NFT collections can be added to the whitelist through Governance. To be added, a collection must have a reservoir price feed. Collections with a total market capital of less than 50 million were not included in the original list.

Redemption 

The NFT Index Token is fully collateralized by the NFTs in the MarketVault; it can be burned in exchange for the NFTs it contains. This allows for bilateral binding arbitrage, as the NFT Index Token can also be minted by the seller depositing the NFT in the MarketVault.

Each collection contained in the vault has a floor price associated with it, which is updated frequently by Oracle. To redeem, the redeemer must pay a quantity of NFT Index Token equal to the highest floor price of any given NFT collection in the MarketVault. At the end of the redemption process, the redeemer receives the difference between the value of the NFTs received and the amount paid.

Multiple redemptions can be made within a single batch call if a sufficient number of NFT Index Token are provided.

When redeeming, the protocol deposits the index token of the redeemer's NFT and makes a Chainlink VRF contract call to provide randomness. This randomness is used to determine which NFT is redeemed from the repository. In a separate transaction, Chainlink VRF provides a random number and passes a random NFT to the redeemer.

Chainlink VRF is a provably honest and reliable random number generator. 

Avoiding value leakage

Random redemption avoids the problem of giving arbitrage players free rein. If participants redeeming an NFT Index Token were allowed to choose any NFT to redeem, they could preferentially choose those that have increased in value, avoiding those that have decreased relative to $NFT, siphoning value from the MarketVault.

The redemption price of a particular NFT is the average floor price of NFTs of the same collection at the time they entered the MarketVault plus a spread. The number of NFT Index Token required for redemption is the highest of all such average collection prices with a 2.5% spread and a 2% buffer applied on top. The buffer is designed to mitigate the shortfall resulting from price increases in new NFTs coming into MarketVault before the Chainlink VRF processes the request.

Lending Pools

Fungify's lending pools, originally conceived as a solution to the problem of creating credit liquidity for NFT Index Token borrowers, function as a fully generic solution for the rest of the NFT DeFi, allowing for NFT shorting, cross-marginal loans secured by NFTs, and NFT yield lending.

Supply

Lending pools accept NFT as well as ETH, USDC, DAI, stETH, wBTC, $NFT, and USDT as supplyable assets. When an asset is supplied, it is automatically used as collateral and adds to the user's borrowing limit. The extent to which any asset contributes to the borrowing limit is determined by the collateralization factor (CF) of the asset. More liquid and less volatile assets have higher collateral ratios and hence contribute more to the borrowing limit.

When an asset is supplied, the user receives a corresponding fToken whose rate always increases against the underlying asset in proportion to the interest accrued. The exception is supplied NFTs, which accrue fUSDC as interest.

Withdrawals

When an NFT is supplied, it allows others to lend it, and the supplier earns interest in the form of USDC. The trade-off is that the protocol doesn't guarantee that an asset with the same NFT ID will be withdrawn after the user is done lending it. Specific example: if a floor of Cryptopunk is suppliedand can be borrowed, and the user withdraws the Cryptopunk, he will receive a random Cryptopunk from the lending pool, not the one he deposited.

Borrowing

Once a user has lent assets, they can borrow against them up to the borrowing limit. If the assets supplied as collateral are NFTs, the USDC must also be provided to facilitate interest payments. If the amount borrowed exceeds the Borrowing Limit, the collateral is auctioned until the user's account becomes solvent. If the USDC falls to zero when borrowing NFT against the NFT collateral, the collateral asset is sold and the loan is closed. To close the loan, the user can repay the principal using any NFT from this collection.

While the asset is being used as collateral, its corresponding fToken cannot be transferred or moved from the wallet that took the loan.

Interest rates

Each asset has its own interest rate market, with rates determined by the use of free liquidity. When demand for the supplied assets increases, borrowers pay proportionately higher interest rates (and vice versa). Interest is charged by each block, which increases the exchange rate of fTokens against the underlying asset. Interest is charged to NFT providers by increasing their fUSDC balance; this is proportional to the decrease in the fUSDC balance of NFT borrowers.

Liquidations

When the borrowed funds in an account exceed the limit, the liquidator may seize the account's collateral at a discount in exchange for repayment of principal. The amount of collateral that can be seized depends on the asset's closing ratio. The amount of the discount is determined by the Liquidation Incentive. In the case of ERC20 assets, this incentive is modest (8%) and is consistent with other lending protocols. In the case of ERC721 assets, the discount is equal to the remaining value of the NFT. This is a consequence of the fact that NFTs are indivisible, unlike ERC20.

Liquidators can liquidate multiple assets at the same time, which may sometimes be necessary when an account is secured by different ERC20 and ERC721 assets.

Risk assessment system

Each asset has a collateralization ratio, a liquidation incentive and a borrowing limit. These ratios depend on the volatility and liquidity of the asset.

Index and Pools Oracle

NFT collections are priced based on data collected in-house and data from external vendors, primarily Reservoir. Determining the price for each NFT collection involves analyzing the sales volume and current order book. This analysis is then used to calculate an approximate bid/ask midpoint. TWAPs are then applied, the duration of which varies and is customized for each collection based on historical trading volume. Finally, these prices are updated on-chain and subjected to a smoothing process using EMAs with a feedback window covering the last three updates.

The oracle is updated under two conditions:

  1. Heartbeat: Oracle updates prices if the last update was more than 12 hours old.
  2. Deviation: Oracle updates prices if the spot midpoint has deviated from the last update by more than 2%.

The price update must not exceed 25% of the last update at the smart contract level.

For all other assets, Fungify uses Chainlink's official price feeds.

In October 2024, Fungify partnered with NFT Price Floor which will be an extra oracle for the NFT Index.

Do you want to join the Envelop NFT 2.0 aggregator?

  • ENVELOP telegram group
  • ENVELOP. NFTs YouTube Channel
  • NIFTSY is token
  • ENVELOP telegram group (Russia)
  • Github of our NFT project
  • ENVELOP TikTok Channel
  • Instagram envelop.project
  • ENVELOP Discord group
  • Blog about Web 3.0
  • Our twitter
  • ENVELOP Facebook
  • NFT 2.0 News