Websnark: zkSnarks generation from the browser is now fast and easy

Posted by David Schwartz on May 10, 2019

Iden3 hopes to become an open standard for Self Sovereign Identity. We intend to deliver a reference Open Source implementation of the protocol that can be used by end users very soon.

The main requirements of this protocol are usability, interoperability, privacy by default and scalability. In order to achieve the last two, zero knowledge technology is key.

Zero Knowledge is one of the hot topics in the crypto space. And it’s also a key technology for Iden3. That’s why we are putting in a lot of effort to help develop this technology and to bring it to the end user.

Today we present an important piece of the puzzle: websnark. Websnark is a library to generate zero knowledge proofs from the web browser. This library is fully written in web assembly by hand using wasmbuilder, a tool developed specifically for this project. This allows to generate zero knowledge proof from the browser (desktop or mobile) in a few seconds in the most common use cases.

Those usages includes among others, anonymous voting, anonymous transfers, proving of a claim without revealing your identity, etc.

We expect that many other applications in the space besides Iden3 will find this piece of software useful. We also encourage those projects to collaborate with this library in the open source spirit. That is improving it, testing it and especially using it.

Websnark is added to the other zkSnarks tools developed in the context of Iden3 project: circom, snarkjs and circomlib.

Circom is a DSL language intended to write zkSnarks circuits. SnarkJS is an independent implementation of a zkSnarks protocol fully written in Javascript, and circomlib ix a library of elementary circuits that can be used for generating more advanced circuits. This circuits include all sort of binary comparators, binary to field converters, edDSA signature verifiers, sparse merkle tree processors, pedersen hashes, mimc hash and a SHA256.

For any developer interested in using any of the iden3 libraries, join our public telegram group at: https://t.me/iden3io