Description

EtherScore is a protocol based on Ethereum enabling Dapps to better identify their reliable users by distributing them NFTs based on their previous actions. These NFTs can then be used as conditions to access specific smart contracts, airdrops, or even more DAO voting power and many other incentives. EtherScore uses data indexers The Graph Protocol and Covalent to execute all processes on-chain. As use cases we have already defined several badges based on Aave, Compound and Uniswap protocol history as it can be found directly into the blockchain. Those badges are a first step in order to facilitate those platforms to curate their valuable and notable users. EtherScore come with a badge factory allowing to: - define meta-badges be settings some attributs and conditions that will be stored as NFTs (ERC-721); - claim badges (also stored NFTs) related to those meta-badges (just like they where instances of the meta-badges) by checking if the user trying to claim the badges are currently fulfilling their attribution conditions. To accomplish the minting of the badges the query are send using an oracle (requesting The Graph Protocol and Covalent ultimately) that stored the query and its result as well into the blockchain. This storage of the condition fulfillment attempt can be use for further badge certification. As previously mentioned the main goal of the badges is to be real proofs of experience/activity/achievement to grant to their valuable holders exclusif access or reward according to the platform policies towards them.

EtherScore showcase

How it's made

The frontend is running Javascript served by a Node.js. The backend is running Python 3 with FastAPI in order to provide endpoints to interact with the frontend. This backend also call The Graph & Covalent APIs through HTTP request. Both are released as docker containers to be easily and quickly deployed. The Smart contracts have been developed using Truffle & Ganache. The backend interact with them using web3 (for Python). An interesting fact is we managed to build NFTs based on other NFTs. Indeed this second kind of NFTs is use be some of our contract as meta-NFT that describe the minting conditions of the other ones. Those conditions have to be checked (using an oracle) by sending queries to the two blockchain indexers The Graph and Covalent.

Technologies used

AaveCompoundCovalentMetaMaskSolidityThe GraphTruffleUniswap