We split the documentation below into three sections:

  1. Attestors (we use Node.js with koa and amala wrapped in Docker)
  2. Circuits (we use circom)
  3. Smart contracts (we use EVM and Solidity)

There is also a fourth section called โ€œInfrastructure,โ€ but it's about how we manage the development process and deploy the solutions. If enough people are curious about it, we'll write another piece of documentation. We'll focus on the most innovative and peculiar things we've built for now.

<aside> ๐Ÿ›  Keep in mind that the zkNFTs protocol is still under development. We'll keep the docs up-to-date, but things can break suddenly. Expect us to update this page frequently.

</aside>

๐ŸŒˆ Attestors ๐ŸŒˆ

Data that we store on-chain is quite limited to transactions and whatever centralized oracles can provide. There is certainly no data for Ethereum addresses owning specific emails (this would defy the anonymity premise of some products), which puts the industry in a pickle situation.

There is power in proving that you matter without revealing other aspects of your identity. For instance, you might leak info to journalists after verifying that you work at a public company. Or you might speak up against a harmful initiative in a DAO. You will need to confirm that you are a part of the DAO, but you don't want to risk losing any political points. Or you can start an anonymous account on a social network with proof that you also have another account with 10M subscribers, transferring the social capital.

The idea is clear: you want to verify a specific part of the identity without revealing the rest. If the data is already there on-chain, you can generate a ZK proof of being a part of a group of people with the same trait. Imagine if all the YouTube users with over 1M subscribers had an ERC721 token provided by Alphabet โ€” that'd be nice!

However, life happens again, and Alphabet doesn't put all the data on the Ethereum blockchain. Neither do the โ€œbig emailโ€ companies! So there is no neat way to see if a specific Ethereum address owns an email. Or is there?

Meet ๐ŸŒˆ Attestors ๐ŸŒˆ developed by the Big Whale Labs team. A fully open-source solution to attest to virtually anything that can be verified automatically. Please go on; give it a spin!

  1. Clone the repository github.com/BigWhaleLabs/attestor
  2. Fill out the .env file as instructed in the readme
  3. Run yarn to install the dependencies
  4. Run yarn docker-start-production-no-dns

Congratulations! You just started your own ๐ŸŒˆ Attestor ๐ŸŒˆ! Running the instance will get extremely important in a few paragraphs. All ๐ŸŒˆ Attestor ๐ŸŒˆ API REST endpoints begin with the /verify path (plus the version subpath).

So far, ๐ŸŒˆ Attestor ๐ŸŒˆ can attest to the following facts (all of them neatly organized in this file):