Description

This project is ENS but built on top of Zero knowledge. It has the advantage of not revealing the owner, and providing concise proof of name to record. It has two components: 1. a smart contract on Mina called a zkApp account 2. a web component sync with Mina consensus to be able to verify proof of association of a name to a content First, the smart contract. The interface is similar to ENS (see https://docs.ens.domains/contract-api-reference/name-processing). Names are hashed via a namehash, the main contract is a registry that associate namehash to owner (anonymous) and contenthash. Any account on Mina can register an available domain, transfer it, or set its content hash. To do so, one builds a zero knowledge proof proving they have control over a private key, and can set the content to a valid content. Secondly, the web browser is in sync with the Mina chain consensus. This allows it to validate responses it gets from a Mina nodes, similar to a light node. If the content hash is an IPFS hash, it can also be verified in the web browser. This allows for links to be validated before being opened, and as they are loaded.

Mana: More Anonymous Name Anchor showcase

How it's made

The core of the project relies on Mina to provide a zero knowledge smart contract. While the tooling is limited to interact with the main Mina chain, having the contract fully working locally is quite pleasing. Reusing ENS interfaces and architecture makes it easy to think about, and to reuse other projects tooling such as namehash or multiformat support. In addition, the contract language being Typescript provides a clear path to browser proof validation, which is an end goal. For now, the browser is not able to retrieve Mina proof, but this is to be implemented soon on Mina tooling. Regarding the interaction with IPFS and Filecoin, having a readable content is of prime importance. The fact this contract can solely act as a trust anchor, and provides concise proof that are verifiable in the browser or light client is a promising path forward. There are still details to be sketched out on how this can be best integrated in IPFS clients.