guildxyz / guild-zk

8 stars 0 forks source link

Semaphore #58

Open PopcornPaws opened 1 year ago

PopcornPaws commented 1 year ago

Description

Semaphore is an anonymous signalling protocol for Ethereum. This means that you can vote/rsvp/etc without revealing your identity in a group of eligible entities. How does this work in a nutshell?

Semaphore is designed to disallow double-signalling, i.e. users cannot vote twice with the same identity.

Structure

Semaphore can be divided into four main parts:

How we could use it?

Notes and caveats

Semaphore is more of a tool that builds on Guild, i.e. it is usable by users who already have access to a role. The Semaphore identity is not an Ethereum address and it doesn't have any tokens, funds, etc. It is essentially just two secret numbers that makes proving knowledge of these numbers (witnesses) much easier and lightweight than proving ownership of an EVM address. Thus, we need extra steps to link it to the user's registered addresses.

IMPORTANT Even if we track that an address has sold an NFT and we remove their commitment from the Merkle Tree, we have no way to remove them from a discord server/telegram channel automatically. So the same issue holds as with our old solution.

However, we could link a deterministic identity commitment to a user's addresses, thus, when they sell their assets and lose the role, we can remove their commitment from the merkle tree and they won't be able to use semaphore-related apps connected to the role anymore.

Potential contributions