Introducing Vibe Check

Introducing Vibe Check, a zkML & WebAuthn Powered zkApp asserting a user has smiled and awarding test tokens accordingly on Hylé.

Sylve Chevet smiling with the text you are vibing: a Vibe Check screenshot.

Our founders, Sylve and Lancelot, have known the Giza team for a long time. They were one of the first projects to leverage Cairo as a general-purpose ZK language for much more than smart contracts, and we love what they do.

So, we decided to harness the power of Hylé and Giza together and bring you our very first demo: Vibe Check, a zkML and WebAuthn-powered zkApp. Authenticate yourself, take a selfie where you’re smiling (but don’t smile too much! Just vibe!), and let the magic happen to receive (fictional) tokens for your work.

How does Vibe Check work for the user?

Try it out for yourself! (Please note you will need to use Chrome and a desktop computer, as the computation is still resource-intensive. Generating the proofs can take up to 5 minutes.)

The step-by-step process:

  1. Go to vibe.hyle.eu 
  2. Identify yourself using WebAuthn (you’ll need your smartphone or a password manager).
  3. Take a selfie. Smile and show your great personality!
  4. Find out if you’re vibing.
  5. If you are, Vibe Check will generate 3 zk proofs in a row, which takes a while. Stay patient.
  6. Congrats on your 100 points! Your ID hash now shows up on the leaderboard!

A more technical overview of the Vibe Check flow

The Vibe Check demo consists of three components: the app, the proof generators, and the Hylé node.

The proof generators execute programs and generate three proofs in WASM:

  1. Proof of ID: verification of the WebAuthn ECDSA signature in Noir
  2. Proof of smile: running the machine-learning model in Cairo
  3. Token (ERC-20) transfer: initiated in Cairo if the first two proofs are valid.

The app sends the three proofs through one single transaction to the Hylé node. In the future, this process will be much faster because the mechanism through which Hylé handles proofs is about to change drastically. Stay tuned to learn more in a future blog post!

The Hylé node unpacks the proofs, verifies them, and ensures consistency. If everything is correct, the node updates the SmileToken state. If so, the user is rewarded with a SmileToken to congratulate them for their good vibes.

A flowchart with three main sections as explained above.

Read more in our GitHub repository.

What Hylé brings to Vibe Check

At Hylé, we believe in native proof verification because it opens up a whole new design space for app developers.

In the case of Vibe Check, Hylé offers three essential advantages:

  • three proofs from two different proving systems can be verified as part of a single transaction
  • Hylé’s specialized ZKP verification chain reduces costs and computational requirements and makes zkML verification possible onchain.
  • Code execution of the application is offloaded offchain, which reduces the network workload and fees.
  • Easy to verify proofs without writing or deploying custom contracts since verifiers are native to the network.

Neural networks are costly to train, and it is impossible to run a zkML application onchain. Even just verifying the workload incurs prohibitive costs. However, if the proof is available, then you can trust it without redoing all the computations.

This means that apps requiring intensive computing can still work through a blockchain like Hylé, which specializes in proof verification. It is censorship-resistant, trustless, and decentralized − and cheap to run.

We believe in the potential of zkApps. Vibe Check is a fun demo, but more importantly, it provides a glimpse of what can be done with ZKP and native verification.

Why Vibe Check illustrates the future of truthful apps

Vibe Check offers a glimpse of a world where zkML is possible, cheap, and fast, thanks to offchain execution and native proof verification.

It opens a whole new world of zkApp possibilities, one in which computing power and money don’t constrain builders' creativity.

This is our first demo, and there will be others. If you run into any trouble or have ideas for improvement, feel free to create issues on our GitHub repository.

To follow our news, follow us on Twitter or join our Telegram chat. Remember to use our docs

Finally, if you build anything cool, please share it with us. We’d love to hear about it and feature it on our blog!