Hey, apologies for the long reply. Here are the quick answers to the questions to clarify the registry intents:
I’d say this is fully up to the registrar to decide what to do with the commitments. For example, a user may register their identity once, and then decide to revoke it. The registrar may either remove the commitment from the EvidenceRegistry
, or simply update it as “revoked”.
I personally wouldn’t add any metadata to the value as is. It is worth considering having some mapping
on the registrar itself for that. For example, you may have a mapping key => timestamp
to indicate when the identity has been created.
This is a good question which should be solved on a registry abstraction level. There may be a special national passports registrar with its own registration and verification circuits, and proper documentation how to use them. The dapp/wallet is required to integrate registrars individually since every ZK circuit has a unique zkey.
There is a huge room for improvement in this area since every registrar may well be worth a separate EIP.
It would be cool to explore storing a Merkle tree root in the value
. Similarly to how iden3 does it in their identity protocol.
There should be some invariant users should be able to stick to so that the revoke/reissue flow is possible. Please check out the Rarimo passports repository to have a better understanding of the concept. There, the invariant is the user’s national passport.
Long story short, it is full up to the registrar to define the recovery rules. As an offtop, I am currently working on standardising the recovery of account abstracted accounts within EIP-7947, the idea which may be also used in the registrars.
Hope you would find these answers helpful.