What's a Fractional NFT?
A Non-Fungible Token (NFT) is a proof of ownership. To prove that you own an ape from the Bored Ape Yacht Club, you would simply whip out your MetaMask wallet and show that it's right there in your wallet.
But that is if you are the sole owner of the asset.
The prices of NFT have shot through the roof in recent times, so popular NFTs may no longer be affordable to be owned by one person. Thus it may become necessary for an asset to be collectively owned by a group of people.
An NFT that is sliced into several pieces, distributed to a group of people registered as partial owners of the NFT is known as a Factional NFT.
In this series of 3 articles, we will demonstrate how this might work.
In the first part, we will focus on minting the Fractional NFT.
The source codes for this project can be found in my Github Repository.
A Scenario of Property Ownership
Properties are a good candidate to be tokenized as NFTs. Rather than keeping the title deed with the lawyer, the owner may create an NFT to represent it.
He may then find 2 other friends to co-purchase a property and register them as co-owner of the property using the Fractional NFT concept.
To demonstrate the scenario, create 3 accounts in your MetaMaskwallet for the Property Owner and 2 other Fractional Owners as follows:
Creating the Fractional NFT
To generate an NFT to represent his property, the Property Owner creates a Fractional NFT Smart contract on the Ethereum Blockchain.
Visit the Remix IDE. Create a new Solidty Smart Contract. Then copy and paste the fractionalNFT.sol source code.
Compile fractionalNFT.sol.
Tick "Enable optimization" and set the optimization to 200 runs. It is necessary to do this for fractionalNFT.sol as this smart contract has exceeded its 24k limit without optimization.
At the Deploy & Run Transaction module of Remix, select the FractionalNFT contract. Then click [Deploy].
As the Property Owner, before we can mint the NFT, we must store its title deed permanently.
Metadata such as the picture of an NFT-based digital art piece is typically stored in IPFS.
We shall do the same with our property's title deed. Visit Pinata Cloud. Register for an account, and then upload the property's title deed.
Here's a primer if you wish to know how IPFS ensures the permanency of your documents and the way it generates a unique filename for your document based on a fingerprint that it generates from your document's content.
Copy the URL of the title deed. We will need this URL in a moment.
Let's say that the Property Owner has decided that the property shall be co-owned between himself and 2 of his friends in 4 shares where one friend will own 2 shares of the property while another friend and himself will own 1 share each.
Each share will be represented with an ERC20 token called FNT.
The Property Owner instructs the fractionalNFT.sol Smart Contract to mint the NFT to be distributable into 4 portions.
The fractionalNFT.sol Smart Contract mints 1 ERC-721 token known as an FNFT to represent the property and 4 ERC-20 tokens known as FNTs to represent 4 shares of ownership.
At the mint command of fractionalNFT.sol, the Property Owner enters the following:
- _to: the property owner's wallet address
- tokenURI_: the CID link to the title deed that we have copied from Pinata Cloud a moment ago
- _totalFractionalTokens: 4
Here are the samples that I have created:
- The Fractional NFT Contract (in ERC721)
- FNFT - The Fractional NFT Token
- FNT - The Fractional Tokens (in ERC20)
For clarity, the FNFT token is an NFT token that represents the property (with a linkage to its title deed of it on IPFS) while each of the 4 FNT tokens represents partial ownership of the FNFT token.
Fractional Tokens
The fractionalNFT.sol smart contract maintains a mapping that associates the FNFT NFT token with its FNT tokens. To view it, enter the token ID at the FNFT function. Click [Call] to view the address of the FNT tokens.
Copy the address.
Change the contract to FNFToken at Remix. Then paste the address that you have copied in the previous set to "At Address".
To view the total token supply of the FNT tokens,click [totalSupply]. There are 4 tokens, thus, it says 4 x 1018 as the ERC20-based token was created in 18 decimal places.
To view the FNFT token and the associated FNT tokens in Metamask, click [Import tokens] at Metamask. Then paste both the address of the Fractional NFT smart contract as well as the address of the FNT token.
The screen capture below shows that the Property Owner owns 1 FNFT token and 4 FNT tokens. That makes him the sole owner of the property at the moment.
Distributing Partial Ownerships
Let's assume that the Property Owner has sold half the property to one friend and a quarter of the property to another friend.
To represent this, simply transfer 2 FNT tokens to the first friend and 1 FNT token to the second friend.
Execute the transfers in MetaMask as follows:
What's Next?
In this article, we have generated a Fractional NFT Smart Contract, saved a property's title deed permanently in IPFS and minted an NFT as a representation of the property and 4 FNT tokens as representations of the ownership of the NFT in 4 shares. Then we transferred 2 FNT tokens to 1 fractional owner and 1 FNT to another fractional owner.
In the next part, we will demonstrate what it really means to be a partial owner of an NFT, beyond simply holding on to a handful of ERC20-based FNT tokens.
We will examine how fractional owners of the property hold the right to receive a cut of the revenue when the property is sold.
We will also examine how a potential property buyer may perform his due diligence to ensure that he has not inadvertently purchased a property co-owned by fractional owners who had not agreed to sell it.
Stay tuned!
- Fractional NFT for Property Ownership: Minting the Token (this part)
- Fractional NFT for Property Ownership: Transferring the Asset
- Fractional NFT for Property Ownership: Solidity Codes Explained
Stay tuned!
If you enjoyed this tutorial, perhaps you may also wish to read:
- NFT Escrow Service: How NFTs may be bought and sold between parties.
- NFT-Based Luxury Watch Certificate: An Implementation of an NFT-based luxury watch certification system
- Introducing the Ethereum Development Environment: A step-by-step guide to setting up a development environment for building Decentralized Apps in Ethereum.
- Freelancer Smart Contract: A payment system between a freelancer and his client to ensure both delivery and payment.
- Ropsten Ethereum Faucet: I built an Ethereum faucet to give out ETH on the Ropsten network.
- Voting on a Blockchain: An implementation of a Voting DApp on Ethereum.
Photo by Clark Van Der Beken on Unsplash
Man icons created by Good Ware - Flaticon
Coin icons created by Freepik - Flaticon