Skip to content

personaelabs/noun-nyms

Repository files navigation

Noun Nyms

Noun Nyms is a protocol and webapp for using nounish pseudonyms.

How does it work?

The proof

Nyms uses the Spartan NIZK proving system to make persistent name proofs.

The R1CS circuit defining the proof can be found here.

Users using the noun nyms frontend make 2 ECDSA signatures with their Eth key when they associate a name with a piece of content (i.e. a post or comment):

  1. a signature of the nym being used
  2. a signature of the content being posted

The former shows that the Eth key holder signing still has the ability to use the specified nym. The latter shows that the nym holder specified attests to the piece of content to be shared.

These two pieces of information are used as private inputs in the zero-knowledge proof computed on the user's device and are not shared with our webserver or anywhere else.

Verifiable content graph and public API

The entire Noun Nyms 'content graph' is independently verifiable. This means that comment tree parent relationships and nym attestations can be independently observed and there's no way for the Personae team's servers to be serving faulty data.

The Personae team maintains the frontend at nouns.nymz.xyz and also serves a public API for retrieving data that other frontends can consume. Documentation for this API can be found here

We're working on documentation on how you might verify the content graph programmatically yourself- if you have any questions about this, come ask us in the support discord!

Packages

Name Description
circuits/ spartan circuit definitions
nymjs/ frontend lib for creating and using nyms
frontend/ noun nyms webapp
merkle_tree/ merkle tree indexing service
db/ postgres db schema
test_data/ test data population for development builds

Contributing

If you're interested in contributing, see our contribution guidelines!