The NFT Renter is a decentralized application that allows users to lent and rent NFTs from other users with both collateralized and non-collateralized options being available. It was initially developed as the final project of the "Ethereum Developer Bootcamp" from Alchemy University but it has since been further improved.
On collateralized loans, the owner defines the daily rate and collateral value, deploys a Rent Escrow Smart Contract and transfers his NFT to the Smart Contract. The renter must then pay the rental value and transfer the collateral to the escrow smart contract in order to receive the original NFT on his wallet. Once the rental is over, the renter must return the NFT in order to receive the collateral. With collateralized loans the lender must be aware that he runs the risk of losing the NFT however in this case he can claim the collateral.
On non-collateralized loans, the owner follows the same steps as in the collateralized option but doesn't define a collateral value. The renter will then pay the rental value and receive a wrapped NFT with the same metadata as the original one. Once the rental period is over, the wrapped token becomes invalid and the lender can withdraw the NFT.
The information about the available NFTs is tracked using a Marketplace Tracker smart contract meaning that the platform is fully decentralized.
The project is currently deployed on the Sepolia testnet and can be accessed at https://nft-renter.vercel.app/
The project's frontend was built using:
- Next.js
- TypeScript
- TailwindCSS
- RadixUI
- wagmi
- viem
The project's smart contracts were developed using:
- Solidity
- Hardhat
- ethers.js
Follow the next steps to run the project
You must have node, npm and yarn installed on your machine
- Clone the repo
git clone https://github.com/rodrigof1307/nft-renter
- Install the packages
yarn install
- Create a .env file where you fill the environemnt variables on the .env.example file
- Run the project
yarn dev
- Access the project on http://localhost:3000/
To rent NFTs the following steps must be followed:
- Connect your wallet
- Go to the Marketplace page
- Select the NFT you want to rent
- Choose the number of hours you want to rent it for
- Click on the "Rent" button
- Confirm the transaction on your wallet
If it's a collateralized loan you will be transfering the collateral and the rental value while if it's a non-collateralized loan you will only transfer the rental value.
On collateralized rentals you receive the NFT while in non-collateralized rentals you receive a wrapped NFT with the same metadata as the original one.
Once the non-collateralized rental is over you can burn the wrapped NFT on the My Collection page by selecting the wrapped NFT. If it is a collateralized rental you must return it before the rental period is over in order to receive the collateral. If you don't return the NFT, the owner can claim the collateral.
Here's a video showing the process of renting an NFT:
Renter.Tutorial.HQ.mov
To lent NFTs the following steps must be followed:
- Connect your wallet
- Go to the My Collection page
- Select the NFT you want to lent
- Choose the either do a collateralized or non-collateralized rental
- If it's a collateralized rental, choose the collateral value and the rental value and if it's a non-collateralized rental choose only the rental value
- Click on the "Lent" button
- Confirm the following three transactions:
- Deployment of the Rent Escrow Smart Contract
- Approval of the transfer of the NFT to the Rent Escrow Smart Contract
- Transfer of the NFT and publishing of the rental on the Marketplace Tracker Smart Contract
On the My Collection page you can manage your rentals. You can withdraw the NFT at anytime as long as it isn't rented and if during a collateralized rental the renter hasn't return the NFT after the rental period is over, you can claim the collateral.
Here's a video showing the process of lending an NFT:
Lender.Tutorial.HQ.mp4
Github - rodrigof1307
Linkedin - Rodrigo Fernandes
Twitter - @rodrigof1307
Email - rodrigo.fernandes.1307@gmail.com