Inspiration

I had been thinking about this idea for a while now, and was contemplating about executing it as a serious try in the startup world. I have another project where i needed to to verify my user's age and came up with the idea of Authbound. For beginning, the idea was only to offer API's for dapps, but when i found out that there were already solutions for digital Web 3.0 ID's like polygon ID, i gave up on it. Then I heard about Chainlink functions and this hackathon came on, and realized i could do what i wanted on both on- and off-chain and was blown away. Authbound would be a platform that focuses on verifications and operates on both blockchain and off-chain levels.

Given todays climate in the crypto world, all the hacks, scams and the big attacks from SEC towards the biggest operators in our space affect the whole industry, and the future is looking grim for some. I feel like projects like Authbound are right on the money for what is needed to ease the regulators and governments about cryptocurrencies, and for our industry to survive. In Authbound our vision and passion is to make Web 3.0 safer, cleaner and more accessible to everyone.

Authbound offers ways for services in either DEFI, Metaverse, or wherever in Web 3.0 to authenticate their users and be certain of their required attributes. Imagine a world where dexes could be sure about their users being regulatory compliant or privacy solutions like Tornado.cash being sure they are not serving money launderers or bad actors like hackers, while still maintaining a total privacy. Imagine adult websites or casinos being able to be sure that they are not serving minors, or that you could ensure, that there are no predators in their games by not allowing adults to enter.

What it does

Authbound is a verification platform built on top of Next.js that uses Soulbound tokens and Zero-Knowledge proofs in conjunction with Chainlink Functions to allow its clients to verify their users for certain attributes like KYC status, age, humanity, gender, citizenship, location or whatever their users might have in their Web 3 identity. Currently you can create proofs for users humanity.

Authbound offers a way to our clients users to create Soulbound Tokens with different proofs, that are then included in their Web 3 identity. After receiving a token with their verified proofs, the users can go to any service or dapp that uses our services and use their created tokens to access limited content or services.

How we built it

Currently Authbound has a User Portal that uses a Node.js server to verify user attributes. User Portal is a place where users can upload images of their faces to the server. The server then uses AI to recognize faces from that image and after that it returns the results of the verification process in its response. If a face is found, a proof is created and the website prompts users wallet for the Soulbound Token creation. Then the user submits the transaction to the blockchain and if successful, receives the token. For the AI, we use a library called Human.js. The library had premade models for the face recognition and it uses Tensorflow under it's hood.

Reason why there is an external API on top of Next.js is that the models were too big in file size to be deployed on Vercel, so the Node.js AI server is deployed as a Docker container on DigitalOcean.

Our clients can then either use our verification API's or Smart contracts to verify their users proof. The Verifier smart contract is called "ABTProofVerifier" and it uses Chainlink Functions to make requests. It's executable JavaScript is given to it on its deployment and the script calls our verifier API with their users proofs and their API-key as parameters. The script returns a boolean in form of 1 or 0 or it returns an error if an error occured during the execution.

Verifier contract provides a "verifyProof" function, that our clients can use as a middleware for their smart contracts. The function takes 5 arguments: targetAddress, Chainlink subscriptionId, API key, key of the proof the client wants to verify as a string and the clients callback function thats executed after succesful verification. The function looks up the targetAddress for our Soulbound Tokens and tries to retrieve a proof with a given key. If successful it calls the Chainlink functions that uses the script given to it in the contract deployment. If the script returns 1/true, and there are no errors the given callback is executed.

Clients can also call our verifier API directly from their applications to verify their users proofs, if there is no need for smart contracts.

The project is currently designed to be used on Polygon Mumbai -testnet.

Challenges we ran into

I was supposed to work on this in a team with one another developer, but i was ghosted right from the start. I continued on alone regardless.

Id say the most challenging thing was to use the Chainlink Functions, since i was not that familiar with Solidity. At first i tought that the only way to run functions is like in the example project, but after a day it clicked and i had no problems after that.

Accomplishments that we're proud of

I went into this challenge without knowing much of Solidity or Smart contract development. Considering that, i think it went quite well. I feel like I created a Magical UI for the website and my idea is top notch.

What we learned

I learned a lot about Solidity, smart contract development and Chainlink. I was already experienced as a web 2 developer so that helped a lot.

What's next for Authbound

I am trying to create a startup from this project with 2 business developers. Next steps are to create a mobile app where users can create proofs by posting selfies with their id's or fingerprints as a proof of humanity.

I am also planning to add a way to use this one government created authentication service to add proofs of citizenship. This is because we have already been in talks with one big company that could have use for service like this.

We are also possibly looking for another passionate technical founder, but there is no funding yet and you would need to work without pay with us.

Code is closed source and i have added the person needed to review the project.

Built With

Share this project:

Updates