## NFT&nbsp;Fractionalization <div style="text-align: center;"> <figure> <img src="https://i.imgur.com/iRSAeKD.png" alt="Depiction of NFT Fractionalization" width="300"/> </figure> </div> <code>2022-02-16, dan</code> [GMT+1 Consensys Blockchain Developer Bootcamp Alumni Group](https://www.meetup.com/gmt-1-consensys-blockchain-developers-bootcamp-alumni-group/events/283951575/) --- ## What is Fractionalization? ```plantuml left to right direction skinparam packageStyle rectangle actor "NFT owner" as owner rectangle "smart contract" { owner --> (NFT Vault) : ERC721 (NFT Vault) --> owner : ERC20 } ``` <div style="text-align: left;"> A fractionalization protocol allows a user to lock up an NFT in return for ERC20 or ERC1155 tokens: * Allowing shared ownership of a single (or collection) of NFTs. * Improving liquidity for participants of NFT markets. </div> <p class="fragment"><b>(JPGs are just the beginning!)</b></p> --- ## The Liquidity Perspective <div style="text-align: left;"> <p>Some fractionalisation platforms focus on providing more liquid markets for otherwise relatively illiquid NFTs: </p> <ul> <li><a href="https://nftx.io">NFTX</a></li> <li><a href="https://nft20.io">NFT20</a></li> </ul> <p> They allow users to add NFTs to a new or existing "NFT liquidity pool" (based upon NFT collection) in return for ERC20 tokens. </p> </div> --- ## The Shared Ownership Perspective <div style="text-align: left;"> <p> Other platforms aim on allowing shared ownership of NFTs: </p> <ul> <li><a href="https://fractional.art/">fractional.art</a> (protocol)</li> <li><a href="https://whale.me/">Whale</a> (collection)</li> <li><a href="https://b20.whalestreet.xyz/about">B.20</a> (from <a href="https://www.metapurse.fund/">metapurse.fund</a>, collection)</li> </ul> </div> <!-- https://b20.whalestreet.xyz https://www.coingecko.com/de/munze/b20 https://twitter.com/niftex?lang=de https://cloudflare-ipfs.com/ipfs/QmVWSGkrDC8cDFVfDTRu9cQEHPBsJxaTkv89BkvKQ99yf6/#/announcement --> --- ## More platforms on the way... <div style="text-align: left;"> <p> Upcoming, announced platforms: </p> <ul> <li><a href="https://spectre.xyz/">Spectre</a></li> <li><a href="https://ixswap.io/">ixswap</a></li> </ul> <p> In the following we'll focus on fractional.art and its fractionalisation protocol. </p> </div> <!-- https://twitter.com/niftex was acquired --> --- ## fractional.art <div style="text-align: left;"> The well known-platform <a href="https://fractional.art">fractional.art</a> provides a protocol to fractionalize NFTs: <ul> <li>Targets fractional ownership of high-value NFTs.</li> <li>Was popularized by the <a href="https://fractional.art/vaults/the-doge-nft">fractionalization</a> of the <a href="https://opensea.io/assets/0xabefbc9fd2f806065b4f3c237d4b59d9a97bcac7/3366">original DOGE NFTs</a> by PleasrDAO and Cryptopathic.</li> </ul> </div> --- ## Fractional Vaults ![fractional.art vault stats from Dune Analytics](https://i.imgur.com/p2F5ong.png) <font size=3>(source <a href="https://dune.xyz/gd/Fractional.art-Vaults">Fractional.art Vault dashboard</a> from Dune Analytics)</font> --- ## Fractional: Locked NFT Projects ![fractional.art vault stats from Dune Analytics](https://i.imgur.com/oG8D1VU.png) <font size=3>(source <a href="https://dune.xyz/gd/Fractional.art-Vaults">Fractional.art Vault dashboard</a> from Dune Analytics)</font> <!-- https://dune.xyz/queries/274133/516678 --> --- ## Fractional: Which Contracts? Today we'll only look at ERC20 fractionalization. The newer ERC1155 fractionalization code has not been published on Etherscan (<a href="https://fractional.art/vaults/fractional-view-6267">example vault</a>, <a href="https://etherscan.io/address/0x39c8cc0d89c0d8c02f3e01ad2904364c551aa629#code">contract on etherscan</a>) or on Github. The UI states than an audit is pending for this newer feature (ERC1155). --- <section class="stretch"> ## fractional.art contract overview ```plantuml node "Fractional Art Contracts" { package "NFT Vaults" #Orange { [ERC721VaultFactory] } } node "Fractional Art Contracts" { package "NFT Vault" #Orange { [ERC721TokenVault (logic)] [InitializedProxy (the vault contract)] [Settings (governance)] } } node "Fractional Art Contracts" { [ERC721VaultFactory] .[#Green]-> [InitializedProxy (the vault contract)] } ``` </section> --- ## Fractional: ERC721VaultFactory Contract ERC721VaultFactory.mint, (<a href="https://docs.fractional.art/fractional/smart-contract-breakdown/vault-factory">fractional docs</a>) <section class="stretch"> <figure> <img src="https://i.imgur.com/NtFMNeJ.png" alt="Depiction of NFT Fractionalization" width="600"/> </figure> </section> --- ## Fractional: Settings Contract (governance config) * Allows the fractional Team (DAO?) to control vault settings, such as maximum auction length ([fractional docs](https://docs.fractional.art/fractional/smart-contract-breakdown/settings)). * Inherits from OpenZeppelin's `Ownable`. * Initially owned by EOAs (<a href="https://etherscan.io/address/0xE0FC79183a22106229B84ECDd55cA017A07eddCa#code">Etherscan</a>). * Subsequently, ownership was <a href="https://etherscan.io/tx/0xcd078b4ee6d0f6f2a73013ab0d34a41c3195f472b05b655663125ad2bdbeaa6f">transferred</a> to a multisig <a href="https://etherscan.io/address/0x2ddd7ecc39e3c1c149341e805ff228cca541ad4b#code">contract</a> (a <a href="https://gnosis-safe.io/">Gnosis Safe</a>). --- ## Fractional: InitializedProxy&nbsp;1 * When a user creates a new vault only the InitializedProxy contract is deployed. * It uses the logic from the previously deployed `ERC721TokenVault`. * Etherscan nicely picks up that it's a <a href="https://etherscan.io/address/0xbaac2b4491727d78d2b78815144570b9f2fe8899#code">proxy</a>. --- ## Fractional: InitializedProxy&nbsp;2 <div style="text-align: left;"> <font size="5"> <blockquote> A very important thing to note is that the code makes use of the EVM’s delegatecall opcode which executes the callee’s code in the context of the caller’s state. That is, the logic contract controls the proxy’s state and the logic contract’s state is meaningless. Thus, the proxy doesn’t only forward transactions to and from the logic contract, but also represents the pair’s state. The state is in the proxy and the logic is in the particular implementation that the proxy points to. </blockquote> </font> </div> Source: <a href="https://docs.openzeppelin.com/upgrades-plugins/1.x/proxies#unstructured-storage-proxies">OpenZeppelin Doc</a>. --- ## Fractional: ERC721TokenVault (logic) <div style="text-align: left;"> Implements all Vault logic ([fractional docs](https://docs.fractional.art/fractional/smart-contract-breakdown/token-vault)). Interesting features: * Uses upgradeable logic(?) * Curator (=^Vault Owner) fees (`_claimFees()`). * Enables buyout through an auction. </div> --- ## NFT Fractionalization: Future Developments <div style="text-align: left;"> * A reference implementation for NFT fractionalization has been proposed as [a new EIP](https://github.com/ethereum/EIPs/pull/4675). * The upcoming [Spectre platform](https://spectre.xyz/) takes a different approach to solve the liquidity issues faced by fractional.art Vault ERC20s. </div> --- ## Resources * [fractional.art Documentation](https://docs.fractional.art/fractional/) * [fractional.art Contracts](https://github.com/fractional-company/contracts) * [A guide to fractionalized NFTS](https://editorial.mintable.app/2021/10/12/a-guide-to-fractionalized-nfts/) (mintable.app) * [What are fractionalized NFTs?](https://www.argent.xyz/learn/fractionalized-nfts/) (argent.xyz) * [Dissecting the Fractional Protocol](https://0xkowloon.substack.com/p/dissecting-the-fractional-protocol) --- Thanks!
{"metaMigratedAt":"2023-06-16T19:03:28.485Z","metaMigratedFrom":"YAML","title":"Untitled","breaks":true,"slideOptions":"{\"transition\":\"fade\",\"spotlight\":{\"enabled\":false},\"allottedMinutes\":45}","contributors":"[{\"id\":\"45f16d84-40dc-416b-a841-9541c9983d0e\",\"add\":24439,\"del\":16298}]"}
    617 views