# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fungify.it/protocol/redemption-mechanic.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
