Ok, du coup je vais builder une image depuis la branche master pour l’utiliser pour le service distance-oracle dans la stack docker compose.
La question qui me reste est: est-ce que cette image faite à partir de master peut également être utilisée pour les noeuds duniter (mirror, archive, smith) ou est-ce que pour ceux là je continue à garder mon image faite à partir de la branche network/gdev-800 ?
L’authentification v1 n’est pas compatible avec la v2. Pour celà, il faut migrer son compte vers une autre adresse qui utilise l’authentification avec mnémonique. C’est possible avec gcli change-owner-key.
Oui, bien sûr ! Pour utiliser le correctif de tuxmain, il y a un correctif sur l’oracle et un autre sur le client. Donc, à utiliser sur ton oracle et ton nœud smith (et autres si tu le souhaites) pour que le correctif ait effet.
Si je teste l’impact the “-s cesium” il semble ne rien faire; et garde l’adresse publique actuelle dans la configuration:
# Sans paramètre, retourne l'adresse de ma nouvelle identity "Nicolas80-GDev"
gcli config show
Ğcli config
duniter endpoint wss://gdev.gyroi.de
indexer endpoint https://squid.gdev.gyroi.de/v1/graphql
address 5HE6gH87fVuGj6akXneNceBtgEiaUZua43TJbVBRQTT77gp6
# Juste avec le paramètre "-s cesium" toujours la même identity
gcli -s cesium config show
Ğcli config
duniter endpoint wss://gdev.gyroi.de
indexer endpoint https://squid.gdev.gyroi.de/v1/graphql
address 5HE6gH87fVuGj6akXneNceBtgEiaUZua43TJbVBRQTT77gp6
# Alors que si on prend par exemple les paramètres pour Alice
gcli -S predefined -s Alice config show
Ğcli config
duniter endpoint wss://gdev.gyroi.de
indexer endpoint https://squid.gdev.gyroi.de/v1/graphql
address 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY
# L'adresse est bien adaptée par celle d'Alice...
Donc je pense que si j’exécute la commande plus haut dans l’état actuel de mon GCli, il va effectuer la demande request-distance-evaluation pour ma nouvelle identity (address 5HE6gH87fVuGj6akXneNceBtgEiaUZua43TJbVBRQTT77gp6)
Ah… dans l’aide GCli, je vois que c’est pour le paramètre “-S” pour le format du secret, que l’on peut préciser “cesium” (en plus de “seed” ou “susbtrate”).
C’est déjà plus clair
Par contre, je ne trouve pas quelle valeur donner à -s pour le secret quand on est avec -S cesium
gcli -S cesium -s "<valeursSecretCesium>" config show
Error: Logic("cesium format incompatible with single secret")
Edit: Ok, j’ai compris après avoir été regardé le code source GCli
On ne doit donner que le -S cesium et surtout pas le secret (-s) car GCli va demander l’id et le password Cesium en prompt:
Je tente de comparer les branches origin/network/gdev-800 et master avant de refaire un build; et j’ai peur que dans les 2 cas il manque des commits qui ne sont pas dans l’autre branche…
Commits dans origin/network/gdev-800 et pas dans master
Du coup @HugoTrentesaux, @Moul, @tuxmain est-ce que c’est certain que je peux builder et utiliser master partout ?
Sinon je peux créer une branche locale à partir de origin/network/gdev-800 et cherry-pick juste le commit du “Fix distance evaluation client” - ou bien tenter de rebase avec 'master`… mais comme je ne connais pas le projet; je risque de faire pire que mieux
Il n’y a que Nicolas qui puisse le faire ?
En attendant, c’est impossible de le certifier ?
Apparemment, je ne peux pas le faire sur duniter portal ni avec gecko…
J’ai ajouté une certification depuis mon nouveau compte(7 certifications en tout maintenant), mais je ne sais pas si c’est suffisant que pour demander une réévaluation de la distance de mon compte G1v1 ?
Tout membre peut demander l’évaluation pour une autre identité.
Si l’identité existe, on peut la certifier, et il vaut mieux le faire avant l’évaluation puisque ça donnera une meilleure qualité de distance.
Je fais tout avec PolkadotJS et DuniterConnect, ça marche.
Oui, en tout cas c’est ce que je fais sans Docker.
Pour utiliser le compte v1 on peut le faire dans DuniterConnect.
[edit]
Tant qu’il y a une personne bien centrale dans la TdC parmi les certificateurs (comme les devs), il ne devrait pas y avoir de problème à satisfaire la règle de distance.
Oui. Il y a trois livrables : le client, le runtime et l’oracle.
Le client et l’oracle sont à utiliser de master par exemple. Le runtime est généré via une branche network/XXX et est intégré via une fonction Substrate.
Ça ne fonctionne pas :
gcli identity request-distance-evaluation-for Nicolas80
Enter password to unlock account 5HDikVWZ2xHfqvVVFwex5zmRsH4LuR3KqMgKZYEbCSjStSKw
Password:
transaction submitted to the network, waiting 6 seconds...
Pallet error: Distance::TargetMustBeUnvalidated
Dans les messages ci-dessous, je vois qu’il faut que je précise quelques concepts.
Un binaire contient plusieurs choses :
plein de sous-commandes dédiées à la gestion du noeud (build-spec, key, revert…)
une sous-commande pour exécuter l’oracle de distance (oneshot ou régulièrement)
de quoi lancer le client sur un réseau donné avec l’argument --chain
des chainspecs embarquées (genesis, client specs (bootnodes…))
Sur la branche master, tu auras tout sauf les chainspecs embarquées, qui permettent de se connecter à un réseau sans avoir à fournir des chainspecs à part (par exemple via un fichier *_raw.json).
Mais si tu ne supprimes pas les données du nœud existant, il n’y a pas besoin des chainspecs (le genesis et les pairs sont déjà connus dans le storage local), donc en théorie l’exécutable produit sur master pourrait convenir. Par contre, il ne permet pas de rejoindre le réseau tel quel. Pour ça, il faut donner l’argument --chain. Avec docker c’est via DUNITER_CHAIN_NAME en montant les raw chainspecs dans le volume.
L’oracle est disponible comme sous-commande du nœud (qui inclut aussi le client). Le runtime est un livrable particulier, puisqu’en étant connecté à un réseau (donc en connaissant le runtime au genesis et des pairs), on récupère les versions successives du runtime en synchronisant la blockchain. Cela se fait lorsque l’on récupère un bloc qui contient un runtime upgrade.
Les branches network/xxx sont surtout là pour publier des nouvelles versions du client. C’est parce que #239 n’est pas encore fait que je crée une branche network pour les nouveaux runtimes, mais normalement il devrait suffire d’un commit depuis master.
Parcours d’identité
Dans le cas d’une identité qui a déjà été membre (pas pour une nouvelle identité), la demande d’évaluation de distance est synonyme de renouvellement d’adhésion. Donc seul l’identité peut la faire. Par contre, il est évidemment possible de le certifier : c’est la seule manière pour qu’il puisse atteindre à nouveau le seuil de certification s’il est passé dessous, ou pour qu’il puisse respecter la règle de distance.
Oui pour une nouvelle identité, non pour une identité qui a déjà été membre, car c’est synonyme de renouvellement d’adhésion.
Heureusement, sinon ça signifierait qu’on pourrait renouveler l’adhésion de quelqu’un d’autre. C’est juste possible pour une nouvelle identité pour faciliter le parcours membre (suite à cette demande : Demande d'améliorations pour la pallet distance - #8 by poka).
Par contre, est-ce que comme peu de serveurs SMITHS ont l’oracle de distance; j’aurais du me connecter sur un serveur en particulier dans mon GCli (ou cela ne change rien) ?
J’ai créé une image à partir de master et l’ai utilisée pour mes noeuds:
Nicolas80-GDev-archive
Nicolas80-GDev-mirror
Ca semble bien fonctionner vu que j’ai gardé les volumes dockers qui avaient été initialisés avec l’image basée sur network/gdev-800.
Par contre, dans telemetry je vois que ces 2 noeuds sont maintenant renseignés comme implementation0.8.0 au lieu de 0.8.1 avant.
Est-ce que l’on ne devrait pas maintenir à jour la branche de network/gdev-xxx actuelle avec les changements utiles depuis master (comme ça il ne faut pas jongler avec les images si on veut déployer un nouveau noeud).
Ou peut-être que c’est simple de jouer avec l’argument --chain; mais comme je ne connais pas trop les détails du projet; à priori je trouve plus simple une image complète avec le moins d’opérations manuelles supplémentaires
Il y a une confusion ici sur la nature d’une blockchain. Quand tu soumets ta demande auprès d’un nœud miroir :
elle sera diffusée sur le réseau (en moins de deux secondes), puis intégrée par un nœud forgeron dans un bloc (en moins de deux secondes), puis ce bloc sera diffusé à tous les nœuds (en moins de deux secondes). Le résultat est que peu importe à quel nœud tu soumets ta transaction, tu la verras apparaître dans un bloc en six secondes en moyenne.
Ta demande est bien présente dans le bloc 4070548.
Ensuite, c’est aux nœuds forgeron de publier le résultat obtenu par leur oracle de distance. Et c’est là que ça foire puisqu’on n’a pas fini de corriger le bug.
De mon côté je vois bien l’oracle qui produit une évaluation :
hugo@trentesaux:~/docker/duniter-gdev-smith/distance-oracle$ docker compose logs --tail 100 -f
[...]
INFO [distance_oracle] Distance for idty 12242: 815/987 = 82.573456%
[...]
mais mon nœud forgeron n’a rien publié parce que mon oracle produit les fichiers nommés “1”, “2”, “3” là où mon nœud forgeron s’attend à trouver les fichiers avec un numéro de session.
Ensuite le nœud de @tuxmain fait tourner une version différente de l’oracle, mais je ne sais pas s’il a mis à jour son nœud forgeron également, en tout cas il n’a pas publié d’évaluation donc ça ne marche pas encore comme il l’a dit :
fusionner master dans network/gdev-800 (c’est moi qui m’en occuperai)
monter le niveau de release (0.9.0 puisqu’il y a un changement de fonctionnalité cassant)
déclencher la CI de publication de l’image docker
tester la nouvelle image sur le réseau gdev
réitérer jusqu’à ce que ça marche si besoin
annoncer à tous les forgerons que la montée en version 0.9.0 et la mise en place d’un oracle de distance est requise
relancer les forgerons jusqu’à obtenir 100% de forgerons ayant publié une évaluation correcte
enfin pouvoir souffler un peu parce que ça commençait à devenir stressant d’avoir une fonctionnalité aussi essentielle toujours dysfonctionnelle
Pour résumer, c’est en cours. Pour aider tu dois d’abord finir le parcours forgeron (passer online) et te tenir prêt à installer la 0.9.0. Si tu veux aller encore plus vite, tu peux essayer de compiler la branche fix-262 en avant-première et la tester sur la gdev pour produire l’évaluation de distance nécessaire pour que ton identité Nicolas80 passe membre.
Pour ce qui est de ton identité Nicolas80-GDev, elle est passée membre au bloc 4030700 parce @joss.rendall avait publié une évaluation correcte :
Donc merci JosselinFERREIRA d’être le meilleur forgeron ! Meilleur que tuxmain et moi qui avons essayé d’être en avance sur les développements mais avons installé une version cassée. Meilleur que moul et cgeek aussi dont les oracles de distances semblent silencieux .
disclaimer
Je plaisante, il n’y a pas de “meilleur” forgeron, juste des versions avec des bugs différents et une seule personne qui est passée à travers les gouttes