Nœud forgeron avec problème de clé de session

Mon nœud validateur v2s tournait dans podman-compose et ça se passait bien.
Depuis que je l’ai passé à l’utilisation de Quadlet (podman + systemd), mon identité était sortie des authorities.
J’ai tenté à plusieurs reprises de le faire re-rentrer, mais en vains, ça échoue.
Un gcli smith go-online, j’attends que deux epoch passent, et là il détecte que mon nœud est hors ligne, du coup infraction offence et mon identité est expulsée des forgerons :

À noter que mon nœud est bien visible dans Polkadot Telemetry.


Autre sujet peut-être lié, après plusieurs manipulations, j’ai remarqué des problèmes que j’ai eus précédemment avec plus d’accès réseau à l’intérieur du conteneur. Un redémarrage de ma machine (host) a résolu le problème.


Je pourrais de nouveau tenter avec podman-compose, mais je n’ai pas réussi. Je pourrais tenter sans conteneur. Avez-vous une idée de la raison pour laquelle mon nœud pourrait être détecté hors ligne ? Est-ce via l’API p2p 30333 que cette vérification a lieu ?

1 Like

Ce qui est étrange, c’est que dans la télémétrie, il semble que ton nœud forgeron “moul-smith” soit bien connecté à huit pairs (p2p, via le port 30333 normalement). Donc on dirait que ce n’est pas un problème réseau. Mais peut-être qu’il y a un problème de session keys ?

session.nextKeys(5HDikVWZ2xHfqvVVFwex5zmRsH4LuR3KqMgKZYEbCSjStSKw) me donne les clés suivantes :

{
  grandpa: 0x35dd796a230559978492e3461e7165b1840e8f8be276408aa011b48a6a69e373
  babe: 0x1ac62a462b0576c7592cfd31c2f49053925b62644c7739acd7a3a94c7bc4cd41
  imOnline: 0xec1972a6b57c5d0b0bfa128bfe7f247a389860013e0bc27a5cfd28ec22ef2b49
  authorityDiscovery: 0xa2f62460b5f1bcd4b9c16000bdc13d4dace9b8a939497479312313a7651b4931
}

Si tu te connectes à ton nœud forgeron et lui demande :

author.hasSessionKeys(0x35dd796a230559978492e3461e7165b1840e8f8be276408aa011b48a6a69e3731ac62a462b0576c7592cfd31c2f49053925b62644c7739acd7a3a94c7bc4cd41ec1972a6b57c5d0b0bfa128bfe7f247a389860013e0bc27a5cfd28ec22ef2b49a2f62460b5f1bcd4b9c16000bdc13d4dace9b8a939497479312313a7651b4931)

il devrait te dire true s’il a bien les clés privées correspondantes.

pour moi
{
  grandpa: 0x6414105bc362356bf044458b76cbfeb92ab9334d54eca129dff9d33af584129f
  babe: 0x0c52ed846be2ae2dd9d624ffe8f47705b58c14f077568d6d220a2ddd181dbe43
  imOnline: 0x42c0f2bb252d90f3a6bdb8e1a5377bb0f8967ddb81e85f0b9cc2ab6232c3d456
  authorityDiscovery: 0x8631823e4f275da2782a75f38969f4299e61c35a06ae6cf9ffcbca76f268fb4a
}

ssh -NL 9944:localhost:9944 trentesaux

author.hasSessionKeys(0x6414105bc362356bf044458b76cbfeb92ab9334d54eca129dff9d33af584129f0c52ed846be2ae2dd9d624ffe8f47705b58c14f077568d6d220a2ddd181dbe4342c0f2bb252d90f3a6bdb8e1a5377bb0f8967ddb81e85f0b9cc2ab6232c3d4568631823e4f275da2782a75f38969f4299e61c35a06ae6cf9ffcbca76f268fb4a)

true
1 Like

Je n’arrive pas à exécuter cette commande dans Chain state, je rajoute mon adresse (Moul dans mes contacts) et le bloc courant copié de Telemetry. Puis, je ne sais pas sur quoi cliquer pour exécuter la commande. Faut-il être sudo ?

J’ai bien false avec cette clé de session.

Comment mettre la bonne clé de session sur mon nœud ? gcli smith {update,set-session}-keys ?

Je reconnais que ce n’est pas très intuitif, c’est le “+” :

Ok donc tu as dû supprimer ton keystore d’une manière ou d’une autre, il est dans le volume docker pourtant.

Ce n’est pas une bonne pratique de “déposer” une clé privée sur un nœud, car ça veut dire qu’elle a été à un moment quelque part ailleurs (un presse papier, une autre machine…). Donc le mieux est de demander à ton nœud de générer de nouvelles clés avec author.rotateKeys() (rpc), puis d’annoncer publiquement la nouvelle clé avec authorityMembers.setSessionKeys() (extrinsic). C’est ce que fait gcli en une seule commande avec gcli update-keys. Alternativement, tu peux décomposer en deux étapes en faisant rotateKeys autrement et setSessionKeys ensuite.

J’ai concaténé les quatre chaînes de caractères en enlevant le préfixe 0x des trois dernières.
J’ai commencé à le faire avec Polkadot.js, mais je ne trouve pas où sont les extrinsics :slight_smile:
Après un gcli smith update-keys, cette fois j’ai un true avec author.hasSessionKeys(). Espérons que ça passe cette fois. Merci pour l’aide.

1 Like

Il y a trois menus importants pour nous :

  • chain state = l’état de la chaîne
  • extrinsics = des appels pour modifier l’état
  • rpc calls = une API pour interagir avec le nœud directement

gcli smith update-keys masque cette complexité et fait les vérifications tout seul. On pourrait ajouter une commande “gcli smith check” pour vérifier si les session keys sont bien sur le nœud et qu’on peut faire go-online sans problème.

[edit] je vois que tu calcules à nouveau des blocs, comme le 831,070 par exemple.

2 Likes

Oui, ça y est mon identité écrit de nouveau des blocs !

Étrange, je n’ai pas Extrinsics :slight_smile:

Oui, c’est une bonne idée !

1 Like

Tu ne peux pas soumettre d’extrinsic sans le signer, et pour signer dans l’app polkadotjs, il faut une extension navigateur. Tu peux donc installer une extension navigateur pour gérer tes clés. Par exemple duniter-connect qui gère les clés v1, ou l’extension polkadotjs, ou enkrypt que je trouve plus grand public.

Merci, je ne savais pas qu’il fallait avoir une extension pour signer qui soit configurée pour avoir l’onglet Extrinsic dans Polkadot.js. Chose qui été là sur ma précédente installation sans j’en aie conscience.
Il me manquait la connexion entre duniter-connect et Polkadot.js.
Je l’avais sauté. En rechargeant Polkadot.js, le pop-up demandant la connexion apparaît, et maintenant j’ai bien la section Extrinsincs :slight_smile:

3 Likes