# NFT Fractionalizer

## Overview

An NFT Fractionalizer allows users to transform a non-fungible token into fractional tokens. Fractionalizing has been used to allow fractional ownership of popular NFTs, among other things. On Shell, you can use an NFT Fractionalizer to simply swap one NFT for any other NFT in the pool. A Fractionalizer is also a necessary component of an NFT AMM.

The [Proteus AMM Engine](/how-shell-works/proteus-amm-engine.md) only works with assets that are considered interchangeable, or fungible. In order to use Proteus, we need to temporarily “fungibilize” the NFTs. This is something you’d only do to an NFT if you consider its value equivalent to any other NFT in the set.

In other words: **DO NOT put rare NFTs into a Fractionalizer**! It only makes sense to use common NFTs, aka “floor” NFTs, since these all have similar value.

## Fractionalizer Factory

`Address:` [`0x4093ee6cc764e11ce95451f47ddee9d6cc89eed4`](https://arbiscan.io/address/0x4093ee6cc764e11ce95451f47ddee9d6cc89eed4)

The **FractionalizerFactory** contract includes a mapping that associates each NFT collection with a fractionalizer contract address. This mapping is used to ensure that there are no duplicate deployments of Fractionalizers for the same NFT collection.

Users can invoke the `deploy` function to deploy a new Fractionalizer by providing the address of the Ocean contract, the address of the NFT collection, the exchange rate (the number of fungible tokens exchanged for one NFT), and a boolean value indicating whether the NFT collection is an ERC-721 or ERC-1155 contract.

The `getFractionalizer` function can be used to retrieve the address of the Fractionalizer contract associated with a specific NFT collection.

## Fractionalizers

The **Fractionalizer** primitive is responsible for facilitating the exchange between NFTs and its fractional tokens. It can be queried for all the relevant information, including the NFT collection address, the exchange rate, the Ocean ID of the fungible token, and the supply of fungible tokens.

For example, the Toucan Fractionalizer is a pool that holds shToucans. If you give it a shToucan, it will mint you 100 Toucoin. If you give it 100 Toucoin, you can withdraw any Toucan in the pool. The fractionalizer does not care which Toucan you give or take. Regardless of whether your Toucans are common or extremely rare, all Toucans are exchangeable for the same 100 Toucoin.


---

# 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://wiki.shellprotocol.io/getting-started/integrations/shell-native-primitives/nft-fractionalizer.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.
