So our Project has 3 Parts
• Backend:
The whole backend is coded in Solidity. And it is immune to “Reentrancy Attacks” and “Oracle Attacks” which are most common vulnerabilities found in the smart Contract.
Here, Our NFT Marketplace has different functions.
• listItem func: people can still hold their NFT when listing. They will just allow the marketplace to sell their NFT.
• buyItem func: here people can buy items from the Marketplace.
• cancelListing func: here OWNER can remove their NFT from the Listing.
•updateListing func: here OWNER can Update the price of their NFT.
withdrawProceeds func: here CUSTOMER is allowed to WITHDRAW their assets.
All the Function mentioned above is demonstrated in VIDEO.
• Frontend: This is made using various tools like, “web3uikit”, “moralis”, “TheGraph plugins (apollo)”, “ether.js”.
It's a dynamic, simple and user friendly frontend which can be used once you have connected your Metamask account.
Since we have used TheGraph for indexing our NFT in a decentralized way, we have to make some calls which you can find in the pages > app.js/index.js.
•TheGraph: it is an indexing protocol for querying networks like Ethereum and IPFS(InterPlanetary File System, is a decentralized and distributed system for storing and sharing files on the internet.). It is completely decentralized
Blockchains like Ethereum store a lot of data, but finding and organizing that data can be difficult and time-consuming. TheGraph provides a way to index and query data on the blockchain in a more efficient and user-friendly manner.
Anyone can build and publish open APIs called subgraphs, this will help in making data easily accessible.
• Challenge: IPFS Storage and Retrieval :
Storing and retrieving generated images on IPFS while ensuring persistence and data integrity posed another hurdle. NFT.Storage provided an excellent solution for storing NFT assets on IPFS, but we faced challenges in handling multiple image uploads, preventing data loss, and efficiently associating IPFS hashes with the corresponding NFT metadata. To address these challenges, we implemented a well-designed data storage system and integrated it with the smart contract to facilitate easy retrieval of NFT assets.
• Challenge: Smart Contract Development:
Developing the Solidity smart contract to mint NFTs and handle the image-to-NFT conversion was a complex endeavor. We meticulously designed the contract to ensure security, transparency, and immutability. Careful consideration was given to preventing potential vulnerabilities, such as reentrancy attacks and front-running attempts. Our team conducted rigorous testing and auditing to guarantee the smart contract's integrity and functionality, providing users with a reliable and trustworthy NFT minting process.
• Challenge: Blockchain Interaction with Ethers.js :
Interacting with the Ethereum blockchain using Ethers.js required a thorough understanding and integration with the smart contract. We faced challenges in handling transactions, managing gas costs, and ensuring the seamless flow of data between the frontend and the blockchain. Our team implemented an intuitive user interface to guide users through the NFT minting process and executed transactions efficiently, thereby enhancing the overall user experience.
• Challenge: User Experience and Frontend Design :
Designing an intuitive and aesthetically pleasing frontend was essential to ensure user engagement and satisfaction. We conducted extensive user testing to gather feedback and iteratively enhance the user interface and experience.
Tracks Applied (1)
Technologies used
Discussion