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

K3ys

K3ys supercharges credential checking for protocols, community organizers and events with optional gamification features. Access k3ys (or “keys”) are airdropped to qualifying users who additionally earn verification score points & increased access as they collect more k3ys.

K3ys

Created At

ETHGlobal Istanbul

Winner of

WalletConnect - Innovation Pool Prize

Prize Pool

Chiliz - Pool Prize

Prize Pool

Worldcoin - Pool Prize

Prize Pool

Project Description

K3ys is a full-featured credentialing DApp that maximizes the ability of protocols, community organizers and events to qualify, verify & meaningfully engage their user base. We provide a framework with zero knowledge capabilities that allows for not only campaign and event organizers to increase the quality of their target engagements, but allows for a fun way for users to build up credibility and trust as they participate in various web3 and IRL ecosystems.

With K3ys, in a few clicks you can set up a campaign that enables you to specify the minimum criteria to accept users into your activation. When a user connects their wallet via the custom page we provide for your campaign, our system automatically scans various on-chain and off-chain data and calculates if the specified criteria has been met. If validated based on that criteria, we airdrop your campaign specific NFT K3y (‘Key’) to that user's wallet. These K3ys can be used as entry for IRL events, virtual campaigns and/or gated access to your specific communities and/or perks. As more K3ys get added to our system, they are assigned a weighted score based on the thoroughness of the criteria required to attain that key. For users over time, these K3ys can be used as valuable indicators for future engagement viability and increased access to activations.

The problem we aim to address with K3ys is twofold. First, curation of a meaningful & engaged decentralized, global community is challenging. Especially maintaining anonymity. With zero knowledge capabilities, K3ys provides a framework for building a network of verifiable, community participation. Second, on-chain verification is presently a complicated process that presents a barrier to entry for many organizations seeking to qualify their users or community. Our K3ys platform provides a “Quick Campaign Launch” feature — to make this process as simple as possible for organizers. After that, they simply have to check that someone possesses that soul bound K3y for their campaign. For users, the process is just as simple. An organizer directs you to a page where you connect your wallet and are either approved or denied. The gamification of weighted points and K3y collections also aims to keep the process simple and fun, with a loan-out K3ys program where you can lend your K3ys to someone in the future if they are short specific criteria related to those K3ys and you would like to digitally “vouch” for them.

How it's Made

We built the frontend with Next.js, TypeScript, tailwindcss. We then built our modular rulesets, currently being defined through code, which verifies on-chain data either off-chain or on-chain (through contracts). Our backend is used mainly for trivial database queries, and for easy management of data (although this could be avoided with more Lighthouse usage). The modules we have implemented include: Generic ERC20 balanceOf methods (ApeCoin), Chainlink Functions querying subgraphs (Lens), and On-chain data querying through our frontend (ERC721 balanceOf, TheGraph queries, ENS existence, etc.)

The smart contracts are ERC721 compatible contracts, created using a proxy pattern. Each contract has two ways of minting new tokens: one based on onchain conditions read by onchain verifier “modules”, and another by relying on an external oracle, which is connected to a Chainlink Function contract that can only be called by the decentralized network of Chainlink Oracles.

The Chainlink Functions infrastructure goal is to trustelessly run a generic javascript function which can be parameterized and can also make external http requests. This function is run by all the nodes of the oracle network and a consensus on its output is published onchain directly to our smart contract. In this case, the output is a simple boolean variable determining the eligibility of an address for a given token.

The interaction with the Chainlink network is orchestrated from the backend, which prepares the network with the required metadata regarding payments for the oracle service and configuration of the secrets needed calling APIs from the javascript function.

background image mobile

Join the mailing list

Get the latest news and updates