Welcome to the base of all of our code. Feel free to look around.
ZERO Protocol, a privacy preserving decentralised identity protocol that aims to enable complete data self-sovereignty. The OMID (omni-identity) Wallet, an application that enables users interact with the ZERO Protocol.
The aim of this prototype is to test out our concept of verifiable credentials through trusted notaries (notarized credentials).
With regular verifiable credentials, the issuer is required to set up a system to enable them sign the data authencity in order to enable provenance. This ensures that when a user selectively discloses their identity data (e.g., through zkps), we can be rest assured that the data is untampered.
This however, creates a noticeable issue with current identity solutions. Lack of industry adoption. Issuers don't care about providing
After months of research, we decided to take a different approach. One we think is more optimal—trusted notaries. Our choice for a notary platform was TLSN—due to time constraints, we couldn't make any necessary changes for our system. TLSN uses the same technology behind what is commonly known as zkTLS (web proofs).
With VCs rely on the issuer to sign the data's authenticity, NCs however, only requires a secure third party (notary). This reduces the barrier to entry for issuers as they are no longer required to adopt any new system. We also hope to create an open identity ecosystem, where almost any credential data that is privately accessible to users can be put in their possession using a schema based system that anyone can participate in writing.
With our protocol, there'll be no data silos for verifiers, no barrier to entry for issuers!
A Turborepo which includes the following packages/apps:
@0xzerolabs/wallet
: For this prototype, we built a simple iteration of the wallet with Plasmo, designed to be self-custodial. It requires seed phrase/private keys importation.@0xzerolabs/sbt
: A Nitro server that currently makes commitments on-chain. It includes a Solidity and Foundry soulbound token smart contract. Minting, deleting, and fetching are all currently permissionless. However updating/creating credentials is permissioned by an operator to verify credentials before writing commitments on-chain. Eventually, we hope to make onchain commitments permissioned by a commitee of trusted notaries.@0xzerolabs/session
:@0xzerolabs/ui
: a stub component library shared by all the applications@0xzerolabs/eslint-config
:eslint
configurations (includeseslint-config-next
andeslint-config-prettier
)
Not all of the package/app
is 100% TypeScript.
This Turborepo has some additional tools already setup:
- TypeScript for static type checking
- ESLint for code linting
- Prettier for code formatting
To build all apps and packages, run the following command:
cd zero-mvp
pnpm build
To develop all apps and packages, run the following command:
cd zero-mvp
pnpm dev
Turborepo can use a technique known as Remote Caching to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines.
By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can create one, then enter the following commands:
cd zero-mvp
npx turbo login
This will authenticate the Turborepo CLI with your Vercel account.
Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo:
npx turbo link
Learn more about the power of Turborepo: