A fully decentralized marketplace for renting out NFTs with multiple forms of renting.


This project is the development of a fully decentralized marketplace to allow NFT owners to rent out their NFTs with varying levels of ownership.The marketplace allows anyone to rent an ERC721 token regardless if the token supports renting, opening up use cases for many types of NFTs. One model for this is for the NFT to be stored in a smart contract with the renter listed as the de facto owner of the NFT. This model provides the most security for the owner of the NFT as the NFT never leaves the smart contract and and the owner can remove the renter from the de facto owner slot if the rent payments are missed or after the rent period is over. Another model is to require the renter to deposit a certain amount of another asset (such as ETH) that is decided on by the NFT owner. In this case, the NFT is actually transferred to the user, and the original owner can slash the renter's collateral if a payment is missed or liquidate the collateral if the total rent period passes and the NFT has not been returned. The renter receives their collateral back upon returning the NFT. This model is riskier for the NFT owner, as there is the risk that the renter may never return the NFT, however the collateral required can be significantly more than the NFT's worth to discourage this. This provides the renter with being able to actually own the NFT on their account with the caveat of having something of theirs on the line as well. Later versions of these renting models could be run using SuperFluid, allowing more control over the rent payments as well as many other optimizations that would increase the usability of this product.

DeFacto showcase

How it's made

We used React JS for the frontend of the app and Hardhat to develop the smart contracts. We also used OpenZeppelin for their ERC721 implementation and Infura to deploy to Kovan test net. Ideally this project would also be hosted on IPFS for more decentralization as all information can pulled from the blockchain.

Technologies used