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

MetaCert

Loyalty program that reward certified users for past activity and current knowledge

MetaCert

Created At

ETHGlobal Waterloo

Winner of

🆔 Polygon — Best use of Polygon ID

🏊‍♂️ Polygon — Pool Prize

Project Description

MetaCert is a loyalty program that incentivizes verified users to participate in on-chain and off-chain activities, gain knowledge & unlock rewards.

It has four components:

-Identity Verification - we issue an NFT certificate based on authentication using WorldID and Metamask.

-Prove Activity- users are incentivized to participate in on-chain or off-chain activities (Protocol interactions, Token Holdings, etc.)

-Knowledge Validation- we created a system that leverages AI to generate on-demand tests on any topic and issue an on-chain certificate.

-Gifting Awards- (Carbon credits, Discounts, Airdrops, etc.)

How it's Made

The user-facing front end was built in React, starting from WAGMI scaffolding. (See: github.com/peopledrivemecrazy/certkit-waterloo2023). This was an immediate challenge since our language of choice and greatest expertise is Svelte. Having to work in React slowed things down considerably and limited artistic creativity. It uses login with Worldcoin to prove personhood and then with Metamask to establish an account. With both in place, the system can issue a 6551 MetaCert to own this person's credentials.

The credentials come from various sources, notably from passing AI-generated assessments. The NFT contracts are in github.com/peopledrivemecrazy/metacert-metaid721-contract). This includes the MetaID 721 (certificates), and the token bound 6551 MetaCert, which inspired our name. See github.com/peopledrivemecrazy/metaid-issuer-express for the server that issued IDs and certificates and associated tests with accounts.

See github.com/endymionjkb/waterloo-test-server for the administrative front end that allows creating tests, and monitoring users (logging, etc.) Its main feature is creating new tests, which it does from topic prompts and constraints. For instance, you can ask it to generate a multiple-choice test (with an answer key) on any topic (e.g., particular DeFi protocols), specifying the number of questions and difficulty level. This uses the openAI API.

Another source of certifications is Polygon ID and "proof of on-chain activity/holdings." In our specific case, we issue a credential for carbon credit balance (from multiple on-chain sources), gathered on mainnet: and propagated to L2s (Polygon zkEVM testnet and Avalanche), so that front ends can operate on L2s that have full knowledge of the user's L1 balances.

This was an enormous time sink; we ran into multiple issues with Hyperlane, starting with the fact that it isn't deployed on zkEVM mainnet, and the zkEVM testnet deployment (done at a hackathon) seems to be defective. It eventually worked on Avalanche!

The calculator and receiver contracts are at github.com/endymionjkb/carbon-credit-calculator. CarbonCreditCalculator transaction on Polygon: https://polygonscan.com/address/0xA56fc8d6383E392da2e35e709C58cBf353cfaC2a#events CarbonCreditsReceived on Avalanche: https://snowtrace.io/address/0x0f44820F59d631974b12540D7C03309a0a30D29F#events

The Polygon ID verifier is at github.com/endymionjkb/polygon-id. We ran into many logistical issues there, starting with the version of the node, other system incompatibilities, etc. We were initially planning on running an issuer node, but the final approach was simply shoe-horning the age verification (which has a numeric credential as well), and using the result of the CarbonCreditReceiver. The real issuer would have read this from the L1 or L2 chain (which gives the same results thanks to Hyperlane), and issued the credential. The verifier then had a numeric comparator, ensuring an adequate carbon credit balance.

In the end, we had a front end where a guaranteed person logs in with Worldcoin, authenticates with Metamask, and is issued a token-bound identity account. This then holds "certification" IDs, obtained through passing AI-generated tests or holding VCs from issuers. The idea is a protocol with a bounty, or a college offering a scholarship, or a DAO offering membership, wants to ensure the awardee is: 1) human; 2) has holdings or relevant transactions; and 3) has relevant knowledge, enough to pass a test (like a topical captcha).

background image mobile

Join the mailing list

Get the latest news and updates