Semaphore ID is the identity you need to interact with the Semaphore protocol.
They are made up of two secret values: Trapdoor and Nullifier, and one public value: Commitment, which is the hash of the secret values. Although Semaphore identities do not use asymmetric cryptography, the secret values are like a private Ethereum key, while the commitment is like an Ethereum address.
Semaphore IDs are needed to represent users within groups and to allow them to create anonymous proofs.
Semaphore uses zero-knowledge technologies which allow you to prove that a statement is true without revealing any information apart from the fact that the statement is indeed true.
In particular, Semaphore uses the zk-SNARK protocol and allows people to prove that their Semaphore identity is part of a group without revealing that identity. And if the previous statement is true people can signal anonymously.
Posting requires time because in order to preserve anonymity, it is necessary to generate a client-side zero-knowledge proof, and then send it to the backend, which will take care of sending the Ethereum transaction with that proof from a third-party account.
Proof generation takes only a few seconds, but the time required by the Ethereum transaction depends on the blockchain.
If users generating zero-knowledge proofs sent the Ethereum transaction themselves with that proof, it would be possible to link their address to their proof, making it no longer anonymous.
A third-party account is needed to send that transaction and break that link preserving anonymous proofs.
Your Semaphore ID will be generated and saved locally, in your device. It can then be accessed only by you.
Once your Semaphore ID is created, its secret values are saved in your browser's local storage, and they can also be exported to your device as a QR code.
However, the Devcon TAZ applications are an experiment, so your Semaphore ID is not encrypted and we are taking minimal security precautions.
semaphore