Données du block 0 et certifications

Mon noeud en mode --pruning=archive est à jour !
du -sh * me donne 1012 Mb de données, quand même…

Quand je remonte les blocs, je trouve des extrinsics addCert pour des comptes dont les identités n’ont pas été publiées avec createIdentity et confirmIdentity. Est-ce que les comptes créés au démarrage de la gdev (au genesis j’imagine) ont créé ces extrinsics ?

Et si non, comment connaître le nom des identités (que je récupère normalement au confirmIdentity) ?

1 « J'aime »

Non ya pas d’extrinsics au genesis, j’ai déjà expliqué ça dans ma présentation aux RML :wink:

Il te faut le json du genesis en asset dans ton dépot, et si ta DB te dit que tu n’a pas encore indexé le bloc 0, tu lis ce json.

3 « J'aime »

Ok, je parse gdev.json et je créé les identités et certifications. Ça marche :slight_smile:

Mais j’ai encore un problème. Quand je remonte les blocs, il y a un addCert pour un compte qui n’existe pas encore, au bloc 345 : 0x6c5e8fd2558aba0e8f31b3c8ba5adc1f8a7c55ec698718867b6ad133deb373e7

Est-ce que je dois l’enregistrer en bdd ?
Si il y en a un, c’est quoi l’ordre des événements ?

  1. createIdentity
  2. confirmIdentity
  3. addCert

C’est ça ?

Pas d’urgence, je suis plus dispo avant la nuit…

L’extrinsics dont tu parles n’a pas pu être exécuté, car on ne peut pas créer l’identité d’un compte inexistant en blockchain.

Ce bloc contient 2 extrinsics qui ont échoués, on le voit d’ailleurs ici:

Pour Moul: Receiver not found

Donc non, n’ajoute pas en DB les extrinsics qui ont échoués :slight_smile:

@elois Ca veut dire que les extrinsics qui ont échoués sont quand même inscrits en blockchain ?
C’est pas un risque de spam ça ?

Ah non ça a été taxé, je vois des paysFee: Yes, donc même échoués les extrinsics sont taxés.

2 « J'aime »

Je suppose que tu es sur mon nœud pour voir ça ? Car je l’ai passé en mode archive, sur les nœuds « classiques » tu ne peux pas accéder au contenu d’un bloc si ancien :slight_smile:

C’est l’inverse, c’est pour empêcher le spam que les extrinsics qui échouent doivent être en blockchain, sinon impossible de prélever des frais ou déduire des quotas.
C’est comme cela que fonctionnent quasiment toutes les blockchains, ce n’est pas spécifique à substrate, Ethereum fonctionne ainsi par exemple.

2 « J'aime »

Ok, merci @poka !
Il faut que je récupère les events liés au bloc du coup. Car polkadot les fournis pas avec le block :confused:

Est-ce que createIdentity et confirmIdentity peuvent échouer aussi ?

Non car ce sont des event, une exécution d’un extrinsic peut réussir où échouer, mais un event substrate n’est pas exécuté, c’est davantage comme un log

1 « J'aime »