It has been a while that I planned to rewrite genesis parsing in anticipation of launching a ğtest network with the following extra features:
- keep identity index from Ğ1 (order of arrival in the blockchain) this is very convenient for data analysis, I’m working with this identity index in DataJune from the beginning
- keeping identity index of non-member identities will make easier to handle certifications emitted and received by non-members which are currently ignored
- take into account the last renewal of membership (in the case where I implement an membership renewal, we still converge to Proposition de supprimer la notion d'identité désactivée mais non révoquée et la notion d'adhésion)
- allow use of owner_key and old_owner_key in genesis with optional old_owner_key the ed25519 Ğ1v1 key and owner_key the new key given in advance (see V2S: smooth gradual migration (clients and indexers side) for discussion)
- take into account timestamp of last emitted cert to respect the period between certs
For the moment I think we can keep two different formats for gdev and gtest for simplicity, but at some point, we would move the gdev chainspec format to the more sophisticated gtest one to better handle edge cases in the tests.
In addition, Sanity tests showed that additional checks should be added to the genesis parsing. I wanted to avoid blocking tests and privilege warning and error logging. The upgrade to substrate v0.9.32 fixed a logging problem that will allow for more detailed logging in the genesis parsing.