Convert salt+password G1v1 to Substrate decoded seed

Une étape importante de cette migration va être la migration des comptes G1 vers des Mnemonic.

Maintenant que la GD3 permet de migrer son identité vers une autre clé, je vais pouvoir attaquer ce workflow:

  • Une le premier coffre Ğecko créé, proposer d’importer un ancien compte (je vais le nommer compte Cesium pour le moment faute de mieux, mais il va falloir trouver la bonne terminologie pour les gens, G1v1 peut être je ne sais pas).
  • Convertir le SALT+PASSWORD renseigné par l’utilisateur en Seed Substrate (need help)
  • Importer temporairement cette seed dans le format substrate standard via la lib polkadotjs
  • Proposer l’adresse de destination cible parmi les portefeuilles du coffre actuel
  • Après validation, vider le compte Cs vers le portefeuille choisi, et si une identité est lié à ce compte, la migrer également

A priori, la seul étape où j’aimerai bien avoir quelques conseils pour m’aiguiller c’est le passage salt+pwd vers seed format attendu par substrate.

Pour le moment je suis bloqué à cette étape (pseudocode):

id = 'tata'
pwd = 'toto'
scrypt -> seed en Uint8List: [52, 97, 48, 215, 139, 186, 204, 149, 245, 139, 202, 64, 133, 4, 155, 16, 48, 185, 225, 197, 10, 234, 82, 112, 76, 5, 255, 100, 105, 36, 198, 118]
encoded: '346130d78bbacc95f58bca4085049b1030b9e1c50aea52704c05ff646924c676'
newAddress = api.keyring.addressFromRawSeed(ss58, cryptoType: CryptoType.ed25519, encoded);
print(newAddress) -> null

Je ne sais pas comment passer de ce Uint8List vers la string “rawSeed” attendu par la lib polkadot.js.

Je vais continuer de creuser le sujet mais si parmi vous certains on déjà étudié la question ou savent décrire précisément le détail technique précis de ces étapes, je ne dis pas non (c’est certainement tout bête mais je suis pas encore pro crypto).

ping @kimamila @cgeek @tuxmain @Moul @vit

2 Likes