In DeFi's vast forest we all wonder onto different farms, citadels and even some slums... so why not earn NFT-based proof of our journeys through the ecosystem? Proof of DeFi! Show off your involvement in decentralized finance with immutable, non-fungible swag tokens! Unlock neat (and some unpleasant) achievements for interacting with top DeFi protocols, including Aave, Compound, Uniswap and more. Depending on different wallet interactions, the users will have the opportunity to unlock an entire catalogue of achievements, neatly represented by NFTs(TBD) and non-transferable NFTs. Why NTNFT? So NTNFT would be tied to your wallet forever and verify your interactions with, and accomplishments in the DeFi space. In the future, this can easily be used as social proof, id, or gravatar of an ethereum user. NTNFT is a modification of the ERC-721 standard, which blocks the transfer functionality for wallet holders. This gives the assets a different approach, where the tokens indicate what the user has done and achieved and could serve as a proof-of-concept for a decentralized achievement system. Templaters can define new badge templates for DeFi communities with specific achievements to complete in order to be eligible for the NTNFT. go to eththemall.eth and try it out!

How it's made

How it is built? Programming languages: TypeScript, JavaScript, Solidity Libraries: ethers.js, react, builder, express, graphQl This project is built with three distinct components: - Back-end: an API built in TypeScript with express, making graphQl queries to theGraph, to retrieve smart-contract data, to verify the eligibility of Ethereum addresses for achievements and mints badges. - Front-end: a web interface built in JavaScript with the React framework to interact with the Back-end and allowing users to view and mint badges. - Smart-contract: built in solidity, it manages the badge templates and the user balances of the NTNFTs. .Smart-contract: The smart-contract architecture has been inspired by projects like open-proofs and maker-badges, where each community can manage its own badge templates. This is for us a very important aspect of the project and the door for more R&D in this use-case. For this MVP, only the owner of the contract can mint badges, however, he can delegate new users for adding and updating badge templates for their own community. When a new badge is minted, it is required to post an IPFS hash inside the NTNFT which will store the data retrieved from theGraph, so that it can be accessed and reviewed by anyone. .Back-end: The back-end is built an API for the front-end, to leverage the latter from complex tasks. Mostly querying and verifying graphQl data sets for user badge minting eligibility. The project calls Uniswap, Aave, and Compound subgraphs of theGraph to retrieve the data. It is then parsed and crossed against multiple datasets depending on the achievement scenario. The front-end simply must call endpoints for each badge that can be minted. The back-end also processes and returns the user NTNFT balance; this is incredibly useful for the front-end, which can then very easily display and arrange the UI with the NTNFTs owned by the user. .Front-end: The front-end is built with the React framework and allows the user to connect his Ethereum wallet address and to view and mint new NTNFT badges. The images and data are retrieved from the IPFS and interact with the back-end directly for Blockchain tasks, making the app very light.

Technologies used

EthereumIPFSSolidityCTokensThe GraphENS