# Introduction

Fungify is composed of two parts: Index and [Pools](/protocol/pools).&#x20;

### Index

The $NFT Protocol facilitates 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 is minted, representing the value of the NFTs within the vault. The $NFT token can be traded in the open market, and its value is pegged to the collective floor prices of the NFTs in the vault, as determined by an external oracle.

The Index is a non-custodial marketcap weighted NFT index allowing for instant NFT sales and a yield-bearing NFT index token. With a small set of elegant primitives, Fungify solves the most challenging problems at the intersection of NFTs and DeFi.

The 🔒[MarketVault](https://docs.fungify.it/protocol/marketvault) primitive allows for automated provisioning of liquidity to NFT holders who are seeking to sell outright. The MarketVault is capable of permissionless ingestion of NFTs, enabling a peer-to-contract marketplace.

The MarketVault enables the first decentralized 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token), $NFT, which allows investors to gain exposure to a broad set of community curated NFTs at any level of investment without needing to worry about the illiquidity of any individual NFTs. $NFT is fully backed by and redeemable for NFTs held inside the MarketVault, pegging its value to the broader NFT market via arbitrage.

<figure><img src="/files/WRpptch1sXb8vMfDPbyN" alt=""><figcaption></figcaption></figure>

### Pools

Pools is a cross-margin money market protocol that combines the elegance of legacy DeFi with the ability to handle your NFT assets – both as collateral and a source of yield. It is the first platform of its kind to allow both borrowing and lending of NFTs, along with borrowing and lending of any other asset type. Pools synergizes with the Index by facilitating a lending market for the $NFT token.


# MarketVault

The MarketVault is where NFTs sold to the protocol are kept. NFTs that have been sold to the MarketVault can be purchased by 🧑‍🎨[Collectors](https://docs.fungify.it/users/collector) using the redemption mechanism. The MarketVault also directs the minting and burning of the 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token), which allows the token to track its backed value via arbitrage.

## Motivation

Interacting with the MarketVault is permissionless; it is not just a guaranteed counterparty for the protocol, but for every market participant. Since it is able to receive multiple types of NFT and produce a single fungible token, each new collection whitelisted to the MarketVault builds upon the liquidity of the previous collections, allowing it to accrete upon itself. Rather than a variety of fragmented vaults with shallow liquidity, the MarketVault provides a unified, global source of liquidity for NFT trading.

## MarketVault

NFTs enter the vault when a 👨‍💼[Seller](https://docs.fungify.it/users/seller) directly deposits their NFT into the MarketVault in exchange for 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token). NFTs in the MarketVault can only exit via the 🎰[Redemption Mechanic](https://docs.fungify.it/protocol/redemption-mechanic).

## Collections Whitelist

The protocol will only accept whitelisted NFT collections. The following NFT collections are currently on the whitelist:

* Bored Ape Yacht Club
* Crypto Punks
* Mutant Ape Yacht Club
* Pudgy Penguins
* Azuki
* Doodles

NFT collections can be added to the whitelist through 🏛️[Governance](https://www.notion.so/Governance-2a116621d5f24f228a24a90dbde2faf9). In order to be added, a collection must have a reservoir price feed. No collection with a total marketcap of under 50MM was included in the initial list.


# Oracle

## Index & Pools Oracle

NFT collection prices are derived from a combination of in-house data collection and external data providers, most notably Reservoir. The price determination for each NFT collection involves analyzing its sales volume and current order book. This analysis is then used to calculate the approximate bid/ask midpoint. Subsequently, TWAPs are applied, their durations varying and tailored to each collection based on historical trading volume. Finally, these prices are updated on-chain and undergo a smoothing process via an EMA with a lookback window encompassing the three most recent updates.

The oracle updates under two conditions:

* Heartbeat: The oracle will update prices if the last update has been longer than 12 hour.
* ⁠Deviation: The oracle will update if the spot midpoint has deviated from the last update by more than 2%.

Price updates are restricted from exceeding 25% within the last update at the smart contract level, similar to the Compound v1 Oracle design

For all other assets, Fungify utilizes the [official](https://data.chain.link/) Chainlink price feeds.


# Redemption Mechanic

The 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token) is fully backed by NFTs in the 🔓[MarketVault](https://docs.fungify.it/protocol/marketvault); it can be burned in exchange for the NFTs contained within. This allows for two-way arbitrage of the peg since 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token) can also be minted by a 👨‍💼[Seller](https://docs.fungify.it/users/seller) depositing NFTs into the MarketVault.

## Redemptions

Each collection contained within the vault has an associated floor price which is frequently updated by the Oracle mechanism. To call the redeem() function, a redeemer must pay a number of 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token) equal to the highest value floor of any given NFT collection within the 🔓[MarketVault](https://docs.fungify.it/protocol/marketvault). At the end of the redemption process, the redeemer receives the difference between the value of the NFT obtained and the amount input.

Multiple redemptions can be issued in a single batch call if sufficient 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token) is provided.&#x20;

### Chainlink VRF

The[ Chainlink VRF](https://chain.link/chainlink-vrf) is a provably fair and reliable random number generator. It is funded via LINK tokens provided by the DAO through a subscription account. When redeem() is called, the protocol escrows the 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token) of the redeemer and makes a call to the[ Chainlink VRF](https://chain.link/chainlink-vrf) contract to provide randomness. This randomness is used to determine which NFT is redeemed from the vault. In a separate transaction,[ Chainlink VRF](https://chain.link/chainlink-vrf) executes the callback function fulfill(), providing the random number and transferring a random NFT to the redeemer.

## Avoiding Value Leaks

### Free Optionality

Random redemption avoids the problem of providing free optionality to arbitrageurs. If participants redeeming 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token) were allowed to select any NFT for redemption, they could preferentially select those which have increased in value while avoiding those that have decreased relative to $NFT, siphoning value from the 🔒[MarketVault](https://docs.fungify.it/protocol/marketvault).

### Beta Preservation

The beta of an asset is its correlation to the overall market. The volatility of an optimal NFT index will map to the overall NFT market, i.e., (β$$\_𝑖$$=1). By preventing individuals from preferentially removing specific NFTs, this allows the index fund to maintain a collection representative of the overall market, allowing its volatility to track the broader market. Hence, random redemption preserves the beta of the index.

### Pricing

The price for redeeming a particular NFT is the average floor price of NFTs of the same collection at the time they entered the 🔒[MarketVault](https://docs.fungify.it/protocol/marketvault) plus the spread. The the amount of 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token) required to invoke a redemption is the highest of all such average collection prices with the 2.5% spread and a 2% buffer applied on top. The buffer is meant to mitigate against insufficient funds causing issues as a result of price rises from new NFTs entering the 🔒[MarketVault](https://docs.fungify.it/protocol/marketvault) before [Chainlink VRF](https://chain.link/chainlink-vrf) processes the callback.


# Pools

The Fungify Lending Pools, originally intended as a solution to the problem of creating lending liquidity for 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token) borrowers, function as a fully general solution to the rest of NFT DeFi, allowing NFT shorting, cross-margined NFT collateralized loans, and lending yields on NFTs.

## Supply

The lending pools accept NFTs along with ETH, USDC, DAI, stETH, wBTC, $NFT, and USDT as supplyable assets. When an asset is supplied, it is automatically used as collateral and contributes to a user’s Borrow Limit. The degree to which any given asset contributes to the Borrow Limit is determined by the asset’s Collateral Factor (CF). Assets that are more liquid and less volatile have higher collateral factors and therefore contribute more toward the Borrow Limit. A full accounting of each asset, its collateral factor, and its attendant risk parameters can be found in the Risk Assessment Framework section.

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

## Withdrawals

When an NFT is supplied, it allows others to borrow it while the supplier earns interest in the form of USDC. The trade-off is that the protocol does not guarantee that an asset with the same NFT ID will be withdrawn once a user has finished supplying it. A concrete example: if a floor Cryptopunk is supplied and borrowable, and the user withdraws the Cryptopunk, then they will receive a random Cryptopunk from the lending pool rather than the one they deposited.

## Borrowing

Once a user has supplied assets, they may borrow against them up until the Borrow Limit. If the assets supplied as collateral are NFTs, then USDC must also be supplied in order to facilitate interest payments. If the amount borrowed exceeds the Borrow Limit, the collateral is auctioned off until the user account is solvent. If USDC supplied drops to zero while borrowing NFTs against NFT collateral, the collateral asset is sold and the loan closed. To close the loan, the user may repay the principal using any NFT from that collection.

While an asset is used as collateral, its corresponding fToken cannot be transferred or moved from the wallet taking out the loan.

## Interest Rates

Each asset has its own interest rate market, with rates determined by the utilization of free liquidity. As demand for supplied assets increases, borrowers pay proportionately higher interest rates (and vice versa). Interest is accrued each block, which increases the exchange rate of fTokens relative to the underlying. Interest accrues to NFT suppliers by incrementing upwards their balance of fUSDC; this is proportional to the reduction of the fUSDC balance of NFT borrowers.&#x20;

## Liquidations

When an account’s borrowing exceeds its borrow limit, a liquidator can seize the account’s collateral at a discount in exchange for repaying the principal. The amount of collateral that can be seized is related to the asset’s Close Factor. The size of the discount is determined by the Liquidation Incentive. In the case of ERC20 assets, this incentive is modest (8%) and in line with other lending protocols. In the case of ERC721s, the discount is equal to the remaining value of the NFT. This is a consequence of NFTs being indivisible, unlike ERC20s.

Liquidators can liquidate multiple assets simultaneously, which may sometimes be necessary when an account is collateralized across a mix of ERC20 and ERC721 assets.

## Risk Assessment Framework

Each asset has a collateral factor, liquidation incentive, and borrow cap. These factors are based on the volatility and liquidity of the asset.

<table data-header-hidden><thead><tr><th width="190">Asset</th><th width="217">Collateral Factor</th><th>Borrow Cap</th></tr></thead><tbody><tr><td><strong>Asset</strong></td><td><strong>Collateral Factor</strong></td><td><strong>Borrow Cap</strong></td></tr><tr><td>DAI</td><td>0.85</td><td>N/A</td></tr><tr><td>ETH</td><td>0.85</td><td>N/A</td></tr><tr><td>sUSDe</td><td>0.85</td><td>N/A</td></tr><tr><td>USDC</td><td>0.85</td><td>N/A</td></tr><tr><td>USDe</td><td>0.85</td><td>N/A</td></tr><tr><td>USDT</td><td>0.85</td><td>N/A</td></tr><tr><td>wBTC</td><td>0.85</td><td>N/A</td></tr><tr><td>wstETH</td><td>0.85</td><td>N/A</td></tr><tr><td><strong>NFTs</strong></td><td></td><td></td></tr><tr><td>Azuki</td><td>0.65</td><td>100</td></tr><tr><td>BAYC</td><td>0.65</td><td>100</td></tr><tr><td>Bit Bears</td><td>0.50</td><td>N/A</td></tr><tr><td>CloneX</td><td>0</td><td>N/A</td></tr><tr><td>Crypto Punks</td><td>0.65</td><td>100</td></tr><tr><td>Doodles</td><td>0.40</td><td>100</td></tr><tr><td>Honey Comb</td><td>0.30</td><td>200</td></tr><tr><td>Lil Pudgys</td><td>0.60</td><td>250</td></tr><tr><td>MAYC</td><td>0.65</td><td>200</td></tr><tr><td>Pudgy Penguin</td><td>0.65</td><td>150</td></tr><tr><td>Sappy Seals</td><td>0.45</td><td>100</td></tr></tbody></table>

### Contract Addresses

| Contract Name  | Contract Address                                                                                                                                        |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Comptroller    | [https://etherscan.io/address/0xf9c70750bF615dE83fE7FF62D30C7faACD8f8Ba0](https://etherscan.io/address/0xf9c70750bF615dE83fE7FF62D30C7faACD8f8Ba0#code) |
| Oracle         | [https://etherscan.io/address/0x9b960808875000AC17dfAE13B72BBDF69DF6e7A7](https://etherscan.io/address/0x9b960808875000AC17dfAE13B72BBDF69DF6e7A7#code) |
| fDAI           | <https://etherscan.io/address/0xDF2585D99d6Eff84eE3A0c56140196b70406FE56>                                                                               |
| fETH           | <https://etherscan.io/address/0x70C4F75ebaF99e24d775C91867b1a844da6eF6FD>                                                                               |
| fsUSDe         | <https://etherscan.io/address/0x2b142208e665525952786c6e77cbA0cB2E694b41>                                                                               |
| fUSDC          | <https://etherscan.io/address/0x5F86F598e4Fa983097fe6693a1b51F047d87b9Cf>                                                                               |
| fUSDe          | <https://etherscan.io/address/0x1c6ecFfAd93117FdF0B11fAF0733A796185673f3>                                                                               |
| fUSDT          | [https://etherscan.io/address/0xf0BB06816f081829726Bd6d3d04c823cE3e96B6](https://etherscan.io/address/0xf0BB06816f081829726Bd6d3d04c823cE3e96B69)       |
| fwBTC          | <https://etherscan.io/address/0x08A02ce47E3809b8A571f9695224b243F4e1A256>                                                                               |
| fwsETH         | <https://etherscan.io/address/0xfb973b5cd8D18EB514aa19a35aFdE689f5BA04e3>                                                                               |
| fAZUKI         | <https://etherscan.io/address/0xcF4825Fc274Fef983a2D8744751Fb41D9125e31b>                                                                               |
| fAZUKI\_NB     | <https://etherscan.io/address/0x842FDFF053E916782B39bffB58dE94F4B47D5Df4>                                                                               |
| fBAYC          | <https://etherscan.io/address/0xa603Cee4fD20C589B5aECbf07356B239cb11Ee5a>                                                                               |
| fBAYC\_NB      | <https://etherscan.io/address/0x8a81BeD57DD024aA097266b19BdeCd098C20375B>                                                                               |
| fBITB\_NB      | <https://etherscan.io/address/0x5778DCe055cf595185264c03497A1FFf07d9Dae0>                                                                               |
| fCLONEX        | <https://etherscan.io/address/0xF60a1c0a25F51b060522806e64364bd021755297>                                                                               |
| fPUNKS         | <https://etherscan.io/address/0xBF1C1370cC5a96AF40499502F8D5Ec9403e0a18A>                                                                               |
| fPUNKS\_NB     | <https://etherscan.io/address/0xA4B52E1347b852331c12a8Dad69EEC56A40aFF7f>                                                                               |
| fDOODLES       | <https://etherscan.io/address/0x72e96354af32CaE18e5B43F16f229bB713b96277>                                                                               |
| fDOODLES\_NB   | <https://etherscan.io/address/0x68aDBe25C979fa47efBd390DcCdC165b966aE293>                                                                               |
| fHONEYCOMB     | <https://etherscan.io/address/0xe0b0a19f749c6054d6412591b799b04107fe69f3>                                                                               |
| fHONEYCOMB\_NB | <https://etherscan.io/address/0xEb058A3Dc3c969359a3fA72aC3B9c181cfCF468c>                                                                               |
| fLILPUDGYS     | <https://etherscan.io/address/0xe07dcb815c0B7a948e41a7d8A104191dE314dCAF>                                                                               |
| fLILPUDGYS\_NB | <https://etherscan.io/address/0xE2B76Da8899f861d10103eaDBEa95685e2450697>                                                                               |
| fMAYC          | <https://etherscan.io/address/0xbE7FA0EA83b412509fc0DDf195559c12C59208db>                                                                               |
| fMAYC\_NB      | [0xF038Cc2eA343997EC976B5ED640B58FEB027e388](https://etherscan.io/address/0xF038Cc2eA343997EC976B5ED640B58FEB027e388)                                   |
| fPPG           | <https://etherscan.io/address/0x0aeb0fBb880e0ab702Dd981ae091D272A966B54B>                                                                               |
| fPPG\_NB       | <https://etherscan.io/address/0x8c03492922f4aeA5Dde51b0b8eCac2D941bd9851>                                                                               |
| fSAPS          | <https://etherscan.io/address/0x3b37c50b237d12aefdc48d14f63dc3009ba35155>                                                                               |
| fSAPS\_NB      | <https://etherscan.io/address/0x6d6368bf559052cF4660aC5eB934874D80c18EbF>                                                                               |


# NFT Index Token

The $NFT Token is an NFT index that is backed by and redeemable for NFTs contained within the 🔒[MarketVault](https://www.notion.so/MarketVault-dbb0bb050b234ec78e66f8b0ade7b1b9). Pricing is denominated in NFT Token based on the floor value of the collections according to the 👁️[Oracle](https://docs.fungify.it/protocol/oracle); through arbitrage, this means that the price of $NFT is pegged to the floor values of those NFTs.

## Keeping Peg

### **NFT Token Minting / Creation 🍄**

NFT Index Tokens are minted when an NFT is sold to the 🔒[MarketVault](https://www.notion.so/MarketVault-dbb0bb050b234ec78e66f8b0ade7b1b9). When the price of $NFT on the open market is higher than the redemption value, this presents an arbitrage opportunity for 👨‍💼[Seller](https://www.notion.so/Seller-3e34e73cc65348beab8840a1b41d29bc)[s](https://docs.fungify.it/users/seller) that will bring the price of $NFT back to the pegged value.

### **NFT Index Token Burning / Destruction 🔥**

NFT Index Tokens are burned when a collector uses the 🎰[Redemption Mechanic](https://www.notion.so/Redemption-Mechanic-8c790fe5c49f46088149d9d68601e039) to redeem their $NFT for a random NFT inside the 🔒[MarketVault](https://www.notion.so/MarketVault-dbb0bb050b234ec78e66f8b0ade7b1b9). When the price of $NFT on the open market is lower than the redemption value, this presents an arbitrage opportunity for redeemers that will bring the price of $NFT back to the pegged value.

### NFT Index Token Price

The $NFT/ETH exchange rate is calculated based on the sum of the floor value of NFTs inside the 🔒[MarketVault](https://www.notion.so/MarketVault-dbb0bb050b234ec78e66f8b0ade7b1b9) divided by the circulating $NFT supply. Using the open market price of $NFT for the minting and burning operations results in an unstable system. To side-step the issues created by self-referential $NFT prices, the exact mint price for $NFT is calculated using the following formula:

$$
\large I\_{p} = \frac{I\_{v}}{ I\_{s}} \\\[.2in]\small I\_{p} = IndexPrice;;;;;;;;;;  ;;;;;;;;;;  I\_{s} = IndexValue;;;;;;;;;;

I\_{s} = IndexSupply
$$

### Index Rebalancing

If the vault accumulated too much of any single NFT, it would diminish the usefulness of the index. To prevent this, a dynamic spread is implemented to target a market capitalization weighted index composition. Whenever an NFT is sold to the protocol an additional fee or incentive is added depending on whether the NFT is underweight or overweight with respect to the index.

### **Calculating the Dynamic Spread**

Each time an NFT enters or leaves the system the index’s target weighting by market capitalization is updated. When applying the dynamic spread, the TWAP is used to determine the degree to which a collection is underweight or overweight. The magnitude of the dynamic spread is determined by the number of units of a collection that would need to be added or subtracted from the index in order to flip it from overweight to underweight (or vice versa), i.e., flip the sign of the weighting. Penalties are applied when the collection is overweight, while bonuses are applied when the collection is underweight. If that number is one, there is no penalty or bonus. For each additional unit required to flip the sign of the weighting, a 5.75% penalty is applied; the bonus caps out at 5%. This scales to a maximum penalty of 23%.

This ensures that small divergences from the target weighting which are likely to happen in the normal course of functioning incur smaller bonuses and penalties than larger divergences.

### **Recycled Penalties**

When an NFT is sold to the MarketVault with a negative dynamic spread (indicating the index is overweight that collection) the $NFT received in excess of the oracle appraised value is stored in the Rebalance Fund. This Rebalance Fund is used to subsidize the positive dynamic spreads that users encounter when the index is underweight a collection.

## sNFT

🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token) can be staked and in exchange receive staked NFT Token (sNFT). This token is a yield bearing token which increases in value as spreads are taken and distributed from 🔒[MarketVault](https://www.notion.so/MarketVault-dbb0bb050b234ec78e66f8b0ade7b1b9) deposits and redemptions. These fees accrued through the MarketVault are split between sNFT holders(80%) and veFung holders(20%). The fees given here are evenly distributed amongst all sNFT holders.

The Total Revenue described in the Earn Page is the amount of $NFT earned since the users last stake or unstake. The APY is an estimated APY based on protocol fees. Initially tokenPrice = 1e18, every time when we run extractAndDistributeFees from protocol tokenPrice will be increased depends on amount and current $sNFT total supply.

This can be calculated as such:

$$tokenPrice+= \frac{rewardAmount}{totalSupply}$$&#x20;

sNFT output amount on staking is calculating using formula below:

$$sNFT\_n = \frac{Staked}{tokenPrice}$$&#x20;

User can claim his profit on unstake, the output amount calculated by the formula below:

$$NFT\_n = Unstaked\_n \* tokenPrice$$&#x20;


# FUNG Token

The FUNG Token is primarily a governance token. To access fees and governance power, $FUNG must be staked. As $FUNG is staked,[ veFUNG](https://www.notion.so/veFUNG-c913307af0824a4b8518fff988486294) is accumulated linearly over time up to a maximum of 9 months. The consequent $veFUNG allows for the following uses:

* Fees - earned protocol fees are distributed to $veFUNG holders
* [Governance](https://www.notion.so/Governance-2a116621d5f24f228a24a90dbde2faf9) - $veFUNG holders can vote for governance proposals

## veFUNG

veFUNG stands for “vote escrowed $FUNG.” The governance power and fees accumulated by $veFUNG holders are proportional to the $veFUNG balance of an account.

Any contracts that wish to interact with the $veFUNG contract will first need to be added to a whitelist by the DAO.

## Details

<table data-header-hidden><thead><tr><th width="211.5"></th><th></th></tr></thead><tbody><tr><td>FUNG Token Address</td><td>0x0e4e7F2AecF408AFF4f82f067677050239bdC58A</td></tr><tr><td>DEX</td><td><a href="https://app.uniswap.org/swap?outputCurrency=0x0e4e7F2AecF408AFF4f82f067677050239bdC58A&#x26;chain=ethereum">Uniswap V3 Pool</a></td></tr></tbody></table>


# Token Distribution

:mushroom:[FUNG Token](/tokenomics/fung-token)

Total supply: 1,000,000,000

<figure><img src="/files/2DlSVs1H1tdKdB2pVF3Q" alt=""><figcaption></figcaption></figure>

## Token Distribution

<table><thead><tr><th width="337">Entity</th><th width="91">%</th><th width="149" align="right">Amount</th></tr></thead><tbody><tr><td>Treasury</td><td>45.0%</td><td align="right">450,000,000</td></tr><tr><td>Establishing Contributors</td><td>25.0%</td><td align="right">250,000,000</td></tr><tr><td>Seed Funding</td><td>15.0%</td><td align="right">150,000,000</td></tr><tr><td>Liquidity Mining Budget <code>L</code></td><td>7.5%</td><td align="right">75,000,000</td></tr><tr><td>The Great Fill</td><td>7.5%</td><td align="right">75,000,000</td></tr><tr><td>   - Phase 1: Protocol Owned Liquidity</td><td>2.2%</td><td align="right">22,222,222</td></tr><tr><td>   - Phase 2: Public Sale</td><td>5.3%</td><td align="right">52,777,778</td></tr></tbody></table>

**Seed Funders**: 2-year linear vesting

**Establishing Contributors:** 2-year linear vesting with 6 month cliff

## Liquidity Mining Schedule

Liquidity mining will take place over four quarters with the following emission schedule.

$$f(t) = ke^{-t}, t\in\[0,4]$$

$$F(t)\vert\_0^4 = F(4) - F(0)  = L$$

$$k(-e^{-4} + e^{0}) = L$$

$$L = LiquidityMiningBudget$$

$$t=TimeInQuarters$$

<figure><img src="/files/POOa0nghVEkJFZ1aoSBg" alt=""><figcaption></figcaption></figure>


# Security

Fungify places a high priority on security, investing substantial amounts in comprehensive audits conducted by leading cybersecurity firms. Our commitment to security is an ongoing

## Audit Reports

Below, you will find links to the audit reports from the cybersecurity firms Fungify has engaged with.

| **Auditor**                                                                         | **Date**       | **Description** | **Report**                                                                                                                                  |
| ----------------------------------------------------------------------------------- | -------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| [Hexens](https://hexens.io/audits)                                                  | Oct 23rd, 2023 | Fungify Pools   | [Github Link](https://github.com/Hexens/Smart-Contract-Review-Public-Reports/blob/main/Fungify_Oct23_\(Public\).pdf)                        |
| [Hexens](https://hexens.io/audits)                                                  | Nov 23rd, 2023 | Fungify Pools   | [Github Link](https://github.com/Hexens/Smart-Contract-Review-Public-Reports/blob/main/Fungify_Nov23_\(Public\).pdf)                        |
| [Zach Obront](https://twitter.com/zachobront)                                       | Dec 5th, 2023  | Fungify Pools   | [Github Link](https://gist.github.com/zobront/2bad23f555cb9e4f85638ad7fc3d397b)                                                             |
| [Least Authority](https://leastauthority.com/security-consulting/published-audits/) | Jan 10th, 2024 | Fungify Pools   | [Github Link](https://leastauthority.com/wp-content/uploads/2024/01/Fungify_Smart_Contracts_Updated_Final-Audit_Report_Least_Authority.pdf) |
| [Gaslite](https://www.gaslite.org/)                                                 | Feb 27, 2024   | Fungify Pools   | [Link](https://s3.eu-central-1.amazonaws.com/assets.fungify.it/audits/Gaslite_FungifyAuditReport_v2.pdf)                                    |
| [Hexens](https://hexens.io/audits)                                                  | Jun 24, 2024   | Fungify Index   | [Link](https://s3.eu-central-1.amazonaws.com/assets.fungify.it/audits/Fungify_Audit_Hexens_Jun24\(Public\).pdf)                             |

## Real-Time Monitoring

Fungify has contracted with BlockSec to enhance the platform's security with automatic attack detection. The BlockSec Iron Dome works by scanning the mempool for malicious transactions, synthesizing a rescue transaction, and front-running the attack.

You can read about the specifications of the BlockSec iron Dome[ here](https://blocksecteam.medium.com/securing-web3-through-proactive-threat-prevention-e9c6e0319531) along with representative success stories.

## Bounty Program

As part of our commitment to security, we have implemented a bounty program to encourage the identification and reporting of vulnerabilities. The scope of this bounty program applies specifically to the on-chain contracts deployed to the Ethereum mainnet. For bugs that would result in loss of protocol funds, the reward is up to 10% of the assets at risk. For bugs that would result in griefing of the protocol, the security team will make a recommendation based on the exploitability and severity of such an attack.

To report a bug, please send detailed information to <security@fungify.org>. The report should contain enough detail that the bug can be reproduced and remedied by the Fungify security team.

We ask that you do not publicly disclose the bug in any fashion, which includes publishing proof of concepts of mainnet. Please act in a respectful manner by not attempting to threaten or extort. All bounties and their payout will ultimately be decided by FUNG token holders and voted on via Snapshot.

<br>

<br>


# Governance

The DAO is controlled by the [OpenZeppelin implementation](https://docs.openzeppelin.com/contracts/4.x/api/governance) of the Compound Bravo governance contract.

## DAO Governance Process

### 1. Forum Discussion

Proposals should be initiated in the Fungify Forum for community input and general buy-in. Proposals should be discussed until consensus and general buy-in is reached. Once completed, a Fungify Improvement Proposal (FIP) is formally submitted and it undergoes a discussion period of three (3) days.

To proceed to the next phase the following conditions must be met:

* Prior discussion in the forum for (3) days
* Proposer must control zero point five percent (0.5%) of circulating :mushroom:[FUNG Token](/tokenomics/fung-token).

### 2. Snapshot Vote

After discussion period is over, the FIP moves to a Snapshot Vote. Staked :mushroom:[FUNG Token](/tokenomics/fung-token) holders will vote on the proposal. The vote will result in one of the following outcomes:

* Rejected
* Needs Additional Refinement/Clarity
* Official Vote

To proceed to the next phase the following conditions must be met:

* Greater than fifty percent (50%) of votes in favor
* Proposer must control zero point nine percent (0.9%) of circulating :mushroom:[FUNG Token](/tokenomics/fung-token)

### 3. On-Chain Vote

After the Snapshot Vote passes, then the FIP proceeds to an On-Chain Vote. There is first a two (2) day preparation period where DAO members can take to understand the proposal.

This is followed by a three (3) day voting period that will take place on Etherscan. A fork of the Compound Bravo Governance Module will be utilized to manage this process. If, in the future, a FIP is passed to change governance module, it will replace the existing fork of the Compound Bravo Governance Module.

The On-Chain Vote will result in either an approval or rejection. If approved, then the proposal will be queued in the Timelock for two (2) days. After the Timelock the proposal will be implemented or, if resources aren’t immediately available to implemented, queued for implementation.

For an On-Chain Vote to reach consensus it must:

* last three (3) days for the voting period
* have at least four percent (4%) of circulating :mushroom:[FUNG Token](/tokenomics/fung-token) cast for the proposal


# Collector

A Collector purchases NFTs from the 🔒[MarketVault](https://docs.fungify.it/protocol/marketvault) with 🖼️[NFT Index Token](https://docs.fungify.it/tokenomics/nft-index-token) using the 🎰[Redemption Mechanic](https://docs.fungify.it/protocol/redemption-mechanic).


# Seller

A Seller can sell their NFT to 🔒[MarketVault](https://docs.fungify.it/protocol/marketvault) at the floor valuation given through the[ ](https://chain.link/)Reservoir price feed.


# Staker

Stakers can stake their 🖼️[NFT Index Tokens](https://docs.fungify.it/tokenomics/nft-index-token) to earn a portion of the spread whenever it is applied.


# DAO Member

A DAO Member is someone that holds staked :mushroom:[FUNG Token](/tokenomics/fung-token). These members can use $veFUNG to do the following:

* Fees - earned protocol fees are distributed to $veFUNG holders
* :classical\_building:[Governance](/governance/governance) - $veFUNG holders can vote for governance proposals


# Index


# Buying Fungify NFT Index

Buying the Fungify NFT Index is a simple process. We've integrated into our protocol a way to directly purchase from the Uniswap pool in our protocol.

## Buying

From the Overview page you navigate to the Buy & Sell page and you're able to utilize the CowSwap widget to swap for Fungify NFT Index Tokens. In it you can enter in how much ETH you want to swap for Fungify NFT Index Token and perform the purchase.

<figure><img src="/files/WvHXb4WJEhnf7BVcUzjW" alt=""><figcaption><p>Navigate to the Buy &#x26; Sell page</p></figcaption></figure>

<figure><img src="/files/sMWljyChaOAaMOIGPylj" alt=""><figcaption><p>Use CowSwap widget to swap tokens</p></figcaption></figure>

<figure><img src="/files/VzP2XyolrdFUj3q9GAPu" alt=""><figcaption><p>Confirm swap</p></figcaption></figure>


# Depositing NFT

To leverage arbitrage opportunities or to diversify your exposure to NFTs by trading in your NFTs for Fungify NFT Index Tokens you can use the Deposit functionality on the protocol.

## Depositing

Navigating from the Overview page to the Deposit page you are able to select the NFT collection in the drop-down.

<figure><img src="/files/tKdrkOsGmwydXN7f4q2l" alt=""><figcaption><p>Navigate to the Deposit page</p></figcaption></figure>

From there you can enter in the amount of NFTs you want to deposit. The protocol will pick from the NFTs in your wallet at random. If you wish to select specific NFTs then you can click "Manually Select NFTs" and select the specific ones you want.

<figure><img src="/files/w7BCE8E9qVaPwKRX9ESb" alt=""><figcaption><p>Enter the amount of NFTs you want to deposit</p></figcaption></figure>

<figure><img src="/files/I34E7v4AurKAKiS9HrbA" alt=""><figcaption><p>You can manually select the NFTs you want to deposit</p></figcaption></figure>

Afterwards you're able to see how many Fungify NFT Index Tokens you'll receive and you can proceed with the swap.

<figure><img src="/files/2Hx9ujtIxFvU0aPfLHaZ" alt=""><figcaption><p>Once ready you can swap</p></figcaption></figure>

## Bonuses and Fees

Fungify will incentivize users to balance the Index by giving more or less Fungify NFT Index Tokens depending on how out of balance the Index is. This is reflected in the Bonus. You can see the current Bonus for the collection in the details. This number, however, is only for the next NFT deposited. If you are depositing multiple NFTs this can change the amount of total Bonus you will receive. You can see the total Bonus or Fees in the Details section to help inform your decision on how many NFTs you want to deposit.


# Redeeming NFT

To leverage arbitrage opportunities you can use the Redeem functionality on the protocol.

## Redeeming

Navigating from the Overview page to the Redeem page you can see more information about Redemptions.

<figure><img src="/files/ETevWHNHg32v2yo5ekDh" alt=""><figcaption></figcaption></figure>

Selecting the Redeem button opens a modal where you can enter the amount of NFTs to redeem. The protocol will tell you how many you can redeem based on the amount of Fungify NFT Index Tokens in your wallet.

<figure><img src="/files/Fhk8mWX8EsgnMfUId7UQ" alt=""><figcaption><p>Select the Redeem button</p></figcaption></figure>

<figure><img src="/files/tqmW9621XlkzIHfWutD0" alt=""><figcaption><p>Enter the amount you want to Redeem</p></figcaption></figure>

<figure><img src="/files/fgcEzSaERzJVpOlnyLQb" alt=""><figcaption><p>When ready you can Redeem.</p></figcaption></figure>

Redeeming will return to you a random NFT as well as any change you are entitled to.

## Seeing Which NFT You Redeemed

After redeeming you can wait for the transaction to process to see which NFT you receive. It will show you the NFTs and the change you receive back.

When the transaction finishes it will also show up in your Transaction History.

<figure><img src="/files/twbRsJdTV3DlRDLp0jMP" alt=""><figcaption><p>You can also see redemptions notifications in the Transaction History notifications</p></figcaption></figure>

<figure><img src="/files/jHxMfJ6lVerAkDepabPs" alt=""><figcaption><p>Navigating to the Transaction History provides you with details of your redemption</p></figcaption></figure>

## Change

Redeeming will require you to send an amount of NFT equivalent to the collection with the highest Redemption Price in the Index. If a different collection is selected then after redeeming you will also receive back the difference between the amount you sent and the collection's Redemption Price.


# Earning Interest

Once you have Fungify NFT Index Tokens it's useful to stake them. This entitles you to shares of the fees from Deposits and Redemptions in the protocol. It will also entitle you to any claims the protocol is able to obtain from holding the NFTs.

## Staking

From the Overview page you navigate to the Earn page and you're able to enter the amount of tokens you want to Stake. Once done you just complete the Stake and it will return to you Staked Fungify NFT Tokens.

<figure><img src="/files/RCGSyFyGQkH57Phqex6q" alt=""><figcaption><p>Navigate to the Earn page</p></figcaption></figure>

<figure><img src="/files/QfixlVNLlKvOl7inwK8K" alt=""><figcaption><p>Enter the amount you want to Stake</p></figcaption></figure>

<figure><img src="/files/WqPpMbR23Gc7fJiaTng1" alt=""><figcaption><p>Once ready you can proceed with staking</p></figcaption></figure>

## Unstaking

If you wish to Unstake, then on the Earn page you're able to select the Unstake tab. Here you can enter the amount of Staked Fungify NFT Tokens you want to unstake. Once done you just complete the Unstake and it will return to you the appropriate amount of Fungify NFT Index Tokens.

<figure><img src="/files/R6uPFcFTVXpN2UtqY07w" alt=""><figcaption><p>Navigate to the Unstake page</p></figcaption></figure>

<figure><img src="/files/SgXuBhbcYi30ffUv2nBQ" alt=""><figcaption><p>Enter the amount you want to Unstake</p></figcaption></figure>

<figure><img src="/files/vtth6CaCUW5nSFGlBKQf" alt=""><figcaption><p>Once read you can proceed with unstaking</p></figcaption></figure>


