npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@snickerdoodlelabs/circuits

v1.0.6

Published

ZK-Snickerdoodle circuits for Snickerdoodle Protocol

Downloads

97

Readme

Core

Circuits

This package implements various zero-knowledge circuits for the Snickerdoodle protocol. The circuits are writtin in O1js, a typescript-native zk-circuit library from O1Labs.

Zero-Knowledge Proof of Membership

The primary circuit in the Snickerdoodle circuits package calculates proof of membership with response deduplication and was inspired by the Semaphore project. This circuit takes in a reasonably large anonymity set and uses a Merkle tree inclusion proof (calculated with the Poseidon hash function) to prove that a user belongs to set. The anonymity set is nominally written to a public blockchain network so that an end-user client can fetch it without the need of a proprietary third-party data provider.

Zero-Knowledge Proof of Membership Circuit

Each member of the anonymity set commits to two secret identity values: a trapdoor value and an identity nullifier value. It is this commitment (the Poseidon hash of these two values concatenated together) that is written to the blockchain by/for each participant. The nullifier value is used in conjunction with the IPFS CID value corresponding to an SDQL query that the user's core instance is responding to. The hash of the concatenation of the identity nullifier with the IPFS CID results in a public response nullifier that allows for deduplication of responses without the need for a centralized coordinator.

Lastly, the circuit computes the square of the Poseidon hash of the response data so that the verifier can ensure that the payload was not modified after being sent over the wire.

Zero-Knowledge Commitment Validation Circuit

This package also includes a helper circuit that validates if an identity commitment was constructed properly. A participant generates their secret identity nullifier and trapdoor value, produces their identity commitment with this data, then uses this circuit to prove that their identity commitment is well-formed. The circuit can also accept the Poseidon hash of an optional data payload in order to provide an additional assertion that the payload sent over the wire was not tampered with during delivery.

Zero-Knowledge Commitment Validation Circuit

This circuit also serves as a quasi proof-of-work for network participants who sponsor unauthenticated optIn transactions for end-users. It leaves room to be extended for additional protection of transaction sponsors against bot account in the future.