Here’s a list of things about the v5 registry I wanna check with @castall, I’ve added my opinion in each one of them.
-
Currently the v5 registry is deployed at https://explorer.idchain.one/address/0x375ADBa519376Bda93ebCC8a1Abbd47736E91C00/contracts
with the following designs not finalized -
Should
verifierToken
orapp
be immutable?
(1a)verifierToken
should be mutable, in the event of a node becomes untrustworthy, we can issue a new verifier token and redistribute them.
(1b) Another interesting solution would be using a verifier token with its standard modified, where the admin would have the permission to transfer tokens from another wallet without approval, thus giving the admin the ability to essentially strip the verifier token out of a faulty node’s wallet. Of course in this case the admin wallet would be a community vault, e.g. an Aragon Vault.
(2)app
on the other hand, should be immutable. -
What’s the use case for the map variable
history
?
(1) From my understanding after studying the contract code, the variablehistory
is essentially a list of pointers, where a user’s new eth address would point to the old one.
(2) This variable is modified in the methodverify
, where when a user submit verification data for his/her eth address, they would also include their used eth address (associated with their BrightID). But if said user is dishonest and do not submit their used eth address, the old addresses will still be verified since itsisVerified
struct variable is still set totrue
.
This is proven to be wrong after some research done on how the verification data is signed: Since the signature is generated for ALL contextIDs used by that user, if a user is dishonest about their address history, the signature would be invalid.
I realised this right after linking another eth address to Noble to run a test, oh well, now I know whathistory
is for. -
Is the current expiration implementation enough?
(1) Right now instead of expiration, a more correct term would be “re-registeration”, since after a period is over (currently set to a month), an already verified address would stay verified until a new address is registered for the same BrightID. Meaning users don’t have to “re-register” every month, instead they are able to change their address after one month.
(2) I’m okay with the current implementation, it suits our needs. -
How long should the expiration period be?
(1) It’s currently set to one month, technically if what I wrote in 4 is correct, this period could be much shorter, since when a user changes their address, the old ones should all become unverified.