zk0fficers
we are the team that built zk0fficer - the zk0fficers, if you will (Ben, Derya, Niklas)
Team's submissions
The problem zk0fficers solves
Currently, credentials and identity is a trust based system when it comes to authenticating. At the moment, chances are any time that you want to complete KYC, you’re taking a photo of your entire identity, and shipping it off to a server whose security practises you have to trust.
This is obviously not ideal, and zk0fficer looks to provide an initial solution to reusing existing credentials anonymously.
zk0fficer allows for the reusing and validation of existing digital credentials, while keeping your credentials private. You can present your credentials to the zk0fficer, and they can validate their legitimacy, without knowing anything about them.
Challenges you ran into
This would have been a much nicer user experience if users could tap an NFC chip to retrieve their signed message they are trying to prove and reuse - but it costs $99 to use NFC chips on apple devices (and that’s after being approved!!). Aside from that, the general development was smooth, with the exception of a few API rate limits that we had to work around.
Technology used
- Aztec/NoirJS: We wrote our zero knowledge circuits to prove credentials privately in Noir, and compiled them to both WASM and Solidity contracts for testing/implementation
- Hardhat/Solidity: Our unit tests for our ciruits and proofs are all within our hardhat project (./protocol) in the repo
- NextJs: This is what our example site is built with, using Vercel to host.
For our pitch deck - we build an example site here: https://zk-officer.vercel.app/. Here’s some example accounts that you can (hopefully 🤞) use our front end with:
First Name | Last Name | Hash |
---|---|---|
Phil | Merkle | 0x19dc6c8f6b79127c4b0d8cab019d29e3d636a5d7f6fccb0e0006e14eec906a2742161fb142d8335996e707023665356a03ddc944a9446e0168d60b866ea83edd1b |
Karli | Lightbulbs | 0xdd6ae9d5bd750ec960b7eed749b9467bc917b9ee39968cb2ee268eae73f35baf66b5698b5cd594ff900c0c334b55b708219bd11307f4f20b29a0e05107ebb2831b |
Johnson | McDoogal | 0x44d2e182694594b900920a467c5605dda77785d83f0d4922fe357c68588984b742676953226795bb8822570720ccecdf8bc66784eb36567d14a984bd8328256e1c |
There’s some example videos of how to use these values in our Github README.md