project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

Impact Self

Generating an environmental impact score on-chain aka the Impact Self. The score provides a quantifiable way for individuals to communicate their climate-positive actions and contributes to their sovereign web3 identity.

Impact Self

Created At

ETHOnline 2022

Winner of

🥉 Unlock — Best Use

Project Description

We believe that individual environmental impact must become part of our on-chain, user-controlled identities.

Think of it this way: each action that an individual takes to either refrain from harming the planet or to improve regeneration has value. Today, however, we are not able to transparently record that value - nor is it used as an asset in our consumer economies.

In order for this model to be reversed, our individual impact must become part of our on-chain identities - which we have dubbed our “Impact Selves”.

For now, we have built an API that aggregates on-chain data sources such as Toucan and Klima DAO token retirements. We use this data to calculate an individual impact score against average tCO2 emissions per year. From their browser, all users with a positive impact Score can claim their Impact Self (NFT) from our dashboard and share it on Twitter or Lens.

Depending on how many tokens users have retired, they can be Level 1 or Level 2 Impact Selves (for now). As users retire more tokens (or as we add more datasources in the future), their score will change in the dashboard and their Impact Selves will update to reflect these score and level modifications.

But what if users don’t want to make their score public? Sometimes you want to know where you stand and how you can improve before showing your impact to the world. For this, we’ve built privacy settings for users to choose from: Private (your Impact Self displays an image, and nothing else) or Public (your Impact Self displays an image as well as your score and level). These settings can be modified at any time and re-published on-chain. We’ve also built-in a restricted access feature for users to share their score with a particular wallet address off-chain (say, in order to be whitelisted for a project or added to a Discord server).

Of course, we believe that the more we make our climate-positive actions part of who we are, and make it part of the conversation, the more people will join the movement and take action. So sharing an Impact Self helps amplify the message and ultimately our efforts will help decelerate the climate crisis.

Today our project is a hub for users to calculate their impact score, claim their Impact Self, choose privacy settings and share it widely. But our ultimate success will be measured in the improvement of the impact score (if individuals reduce their negative impact) incentivized by ever-increasing use cases. 🌿

How it's Made

Users start their journey of claiming their Impact Selves by connecting their wallet. We’ve used Spruce / SIWE for this, and Metamask for the demo.

We’ve built an API which endpoints aggregate Toucan and Klima subgraph data on $NCT and $BCT token retirements. We wrote a formula that allows us to calculate an individual impact score, based on the users’s token retirements against average individual tC02 emissions per year.

If the user has retired $NCT or $BCT tokens, they are then allowed to Claim (mint) an Impact Self NFT using Unlock Smart contracts. We’ve used Chainlink to securely bring data from the API to the contracts. All Impact Self NFTs display the user’ score, level and tokenID (Impact Self number). If the user retires more tokens, then the score will be recalculated and will update in the dashboard. If by doing so the user upgrades from Impact Self Level 1 to Level 2, the image displayed on their NFT will change (built with IPFS).

But what if users do not want to make their scores public? We’ve built a Privacy Dashboard for this, with a Public/Private toggle (we have added custom hooks to Unlock’s base NFT contract to implement privacy) which is then published on-chain.

When someone calls the Unlock token URI function for any Impact Self NFT, our API checks the individual privacy settings and sends back data if it is in Public mode. If the Privacy settings are in Private mode, the custom hooks allow us to reject any calls made (to a private NFT) and our API doesn’t return any data.

Now that they have claimed their Impact Self, we want users to be able to share it as widely as possible, in order to amplify the message that our climate actions should be part of our online identity. The user can publish directly on Twitter and we’ve also built fast publishing on Lens using Lens API for Authentication. It’s currently integrated on Lens Mumbai Testnet. The post is created and (together with the Impact Self NFT image) published on the Lens Graph.

In the future, we believe this can be used in many ways, one of which could be to get whitelisted for new projects or get discounts from companies. We’ve built it in a way that both the contracts and our API support a restricted access feature to share your score with a particular wallet address off chain using SIWE.

The project is deployed on Polygon (Mumbai Testnet for now). The front-end was built with ethers.js, Metamask, WAGMI (hooks), Rainbow Kit, SIWE and back-end with Alchemy, Hardhat, The Graph.

We made heavy use of Miro to design the user journey (and create architecture schemas) as well as Figma and Canva. We also used Notion and Slack a lot to communicate information between our international team (across 5 different timezones)!

background image mobile

Join the mailing list

Get the latest news and updates