Problème de configuration de mon nœud G1 après invitation Smith

Bonjour à toutes et tous,

Je rencontre un problème concernant la configuration de mon nœud Duniter sur le réseau G1, et je pense que je m’y suis mal pris. Voici un résumé de la situation :


Contexte

  1. J’ai suivi le wiki officiel pour lancer un nœud via Docker. Lors de l’installation, une paire de clés privée/publique a été auto-générée dans le fichier node.key (volume Docker).

  2. Mon nœud fonctionnait bien, il était synchronisé correctement.

  3. En parallèle, j’ai créé un wallet membre via l’extension polkadot{.js} (clé publique : 5CQFCtfAJUP73R51XSDLfWR1U88nV2qYroiiQ8BfWtzMtBei) pour découvrir le fonctionnement des transactions. J’ai reçu des certifications, et je suis bien devenu membre G1 avec ce wallet.

  4. Ensuite, j’ai reçu une invitation Smith sur cette même adresse publique pour forger des blocs (voir le lien ici).

Cependant, j’ai compris que c’est la paire de clés de mon wallet membre qui est invitée à devenir Smith, et non la paire de clés auto-générée pour mon nœud.


Ce que j’ai essayé

  1. Générer la clé privée associée à la phrase mnémonique de mon wallet via le script suivant :
const { cryptoWaitReady, mnemonicToMiniSecret, sr25519PairFromSeed } = require('@polkadot/util-crypto');
const { encodeAddress } = require('@polkadot/util-crypto'); // Pour encoder en SS58

const phrase = "bla bla bla...";

(async () => {
    await cryptoWaitReady();

    try {
        const seed = mnemonicToMiniSecret(phrase);

        const { secretKey, publicKey } = sr25519PairFromSeed(seed);

        const reducedSecretKey = secretKey.slice(0, 32); // Les 32 premiers octets (64 caractères HEX)

        const ss58Address = encodeAddress(publicKey, 42); // 42 = Préfixe réseau Substrate/G1

        console.log(`Clé privée réduite (64 caractères HEX) : ${Buffer.from(reducedSecretKey).toString('hex')}`);
        console.log(`Clé publique (HEX) : ${Buffer.from(publicKey).toString('hex')}`);
        console.log(`Adresse SS58 : ${ss58Address}`);
    } catch (error) {
        console.error('Erreur :', error.message);
    }
})();

Ce script m’a donné une clé privée HEX que j’ai insérée dans node.key.

  1. Supprimer tous les conteneurs, volumes et images Docker pour repartir de zéro.

  2. Relancer le nœud avec la clé privée générée dans node.key, mais cela n’a pas corrigé le problème.


Problème rencontré

Mon nœud ne semble pas reconnaître la clé privée que j’ai configurée manuellement pour correspondre à mon wallet membre.

  • Après avoir remplacé la clé privée dans le fichier node.key par celle associée à mon wallet membre, les logs continuent d’afficher une identité différente :
Local node identity is: 12D3KooWGoKBPRQWDAw2et6cstLMmrZPsE58aEQaVXnF7abPGTed
  • Cette identité ne correspond pas à ma clé publique membre (5CQFCtfAJUP73R51XSDLfWR1U88nV2qYroiiQ8BfWtzMtBei).

Urgence

Je suis inquiet car mon invitation Smith expire bientôt :

“D’ailleurs @cypherfury il te reste trois jours pour forger un bloc avant de devoir refaire la demande forgeron.”


Besoin d’aide

  1. Comment faire pour que mon nœud utilise correctement la clé publique de mon wallet membre (et qui a reçu l’invitation Smith) svp ?

  2. Ai-je manqué une étape dans la configuration ou la génération de la clé privée ?

  3. Y a-t-il un moyen de vérifier que ma clé privée est bien prise en compte par Duniter ?

Je m’excuse par avance si j’ai manqué quelque chose d’évident ou mal interprété la documentation. Je fais de mon mieux pour découvrir et comprendre cet écosystème riche et passionnant, qui est encore tout nouveau pour moi.

Merci pour votre patience et vos retours, qui m’aideront à mieux m’y intégrer.

Cordialement,
cypherfury


Edit :

Bon, j’ai creusé un peu avec chatgpt (bouh, honte à moi ! :laughing: ), et il a l’air de me dire que

12D3KooWGoKBPRQWDAw2et6cstLMmrZPsE58aEQaVXnF7abPGTed

c’est une clé P2P dérivée de ma clé privée :

Et apparemment le fait que la clé publique soit différente de la clé P2P est normale car elles servent des rôles différents :

Du coup jusque là ça parait cohérent svp ? Il resterait plus qu’à trouver 2 certifications de forgerons pour commencer à forger des blocks ?

Salut, en préambule : Vocabulaire de base pour comprendre Duniter-v2s (lecture fortement recommandée pour tous). Je te conseille notamment les sections Validateur et Autorité.

Et rappel aussi du tuto pour devenir Smith : Duniter | Become smith


Effectivement, contrairement à Duniter V1, Duniter V2 dissocie la clé de nœud (Validateur) de la clé de membre, et le lien se fait par un extrinsic.

En fait tu as même plusieurs clés qui entrent en jeu. À ma connaissance il existe :

  • trousseau wallet (membre ou pas) → permet de définir une Autorité
  • trousseau du nœud (couche réseau P2P)
  • trousseau de session (SessionKeys qui inclut Grandpa, Babe, ImOnline, AuthorityDiscovery) pour le nœud Validateur, générées via call RPC author.rotateKeys et liées à l’Autorité (donc le membre) par le call authorityMembers.set_session_keys().

Donc il faut bien que ton nœud ait sa propre clé, et ne plus y toucher. Ensuite, le lien entre ton compte membre et le fait que nœud devienne Validateur se fait par les appels à rotateKeys() (génération sur ton nœud du trousseau de session) et l’appel à set_session_keys() par ton compte membre.

edit : ah bah ChatGPT a pas trop mal répondu :slight_smile:

3 Likes

Je te remercie grandement pour ta réponse, surtout avec tout le travail que vous faites actuellement sur la v2. Je vais faire un petit don financier dans la journée pour soutenir votre développement. :pray:

J’ai suivi vos explications et effectué un appel rotateKeys sur mon nœud. Cela m’a retourné une chaîne de 256 caractères en HEX. Selon GPT (cf screenshot joint), cela correspondrait à la concaténation des clés publiques BABE, GRANDPA, ImOnline, et Authority Discovery.

Si je comprends bien, une fois que j’aurai reçu les 2 certifications de forgerons, il me restera à appeler l’extrinsic set_session_keys avec cette chaîne (ou les 4 clés décomposées).

Je tiens encore à m’excuser si je pose des questions basiques ou si j’ai mal compris certaines choses. Cet écosystème est tout nouveau pour moi, mais je commence à mieux saisir son fonctionnement grâce à vos explications et à mes expérimentations. :pray:

Je suis donc à la recherche de deux certifications pour avancer. Si quelqu’un passe par ici et souhaite me certifier, je suis preneur ! :raised_hands:

Merci encore pour votre temps et pour tout le travail effectué sur cet écosystème !

2 Likes

Je t’ai parrainé pour entrer dans la forge ĞDev ! :hammer_and_pick:

3 Likes

Pas de soucis pour les questions, ça renforce aussi notre propre compréhension d’y répondre :slight_smile: moi-même je ne m’en souvenais plus très bien. :sweat_smile:

En tout cas, tu es devenu Smith ! :clap:

4 Likes

Je vois que tu as déjà reçu des réponses, j’apporte quelques précisions supplémentaires.

Le fichier node.key contient la clé du nœud sur le réseau p2p. On en dérive une partie publique (PeerId) et une partie privée qui permet de signer les messages réseau. Elle ne correspond à rien en blockchain et doit rester secrète. Il ne faut pas la modifier.

Ce qui commence par “12D3Koo...” est un PeerId ed25519. En lire plus sur https://docs.libp2p.io/concepts/fundamentals/peers/#peer-id (la doc c’est souvent mieux que chatGPT :stuck_out_tongue:)

Pas de lieu de s’inquiéter, on est sur le réseau ĞDev, justement fait pour tester ! On peut renouveler l’invitation à volonté.

1 Like

Merci beaucoup pour tous ces détails. :star_struck:

Complètement d’accord :laughing: sauf quand la doc est incomplète / que les choses ne fonctionnent pas comme prévu x)

Je l’avais mentionné dans ma présentation. En suivant ceci : Duniter | Run a smith node

J’obtiens :

root@debian-NL-Amsterdam-DC2-1gb:~# docker compose logs -f
duniter-smith-1  | thread 'main' panicked at node/src/command.rs:185:21:
duniter-smith-1  | unknown runtime
duniter-smith-1  | note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
duniter-smith-1  | Generating node key file '/var/lib/duniter/node.key'...
duniter-smith-1  | Error: Io(Os { code: 2, kind: NotFound, message: "No such file or directory" })
duniter-smith-1  | Node peer ID is ''.

(je viens de re-faire le test et ça donne toujours ce même résultat…)

root@debian-NL-Amsterdam-DC2-1gb:~# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
root@debian-NL-Amsterdam-DC2-1gb:~# cat docker-compose.yml 
# Duniter smith node
services:
  # --- smith node ---
  duniter-smith:
    image: duniter/duniter-v2s-gdev-800 # <--- here is the image
    restart: unless-stopped
    ports:
      # prometheus endpoint for monitoring
      - 127.0.0.1:9615:9615
      # private rpc endpoint (do not expose publicly)
      - 127.0.0.1:9944:9944
      # public p2p endpoint
      - 30333:30333 # <--- here is your public p2p port
    volumes:
      - duniter-data:/var/lib/duniter/
    environment:
      - DUNITER_CHAIN_NAME=gdev # <--- the network you want to connect to
      - DUNITER_NODE_NAME=cyphertest-smith # <--- the name of your node on the network
      - DUNITER_VALIDATOR=true # <--- enable validator
      - DUNITER_PRUNING_PROFILE=light # <--- stays light
      - DUNITER_PUBLIC_ADDR=/dns/cypherfury.space/tcp/30333 # <--- your public p2p endpoint
      - DUNITER_LISTEN_ADDR=/ip4/0.0.0.0/tcp/30333
  # --- distance oracle ---
  distance-oracle:
    container_name: distance-oracle
    image: duniter/duniter-v2s-gdev-800 # <--- same image
    entrypoint: docker-distance-entrypoint # other entrypoint
    environment:
      ORACLE_RPC_URL: ws://duniter-smith:9944
      ORACLE_RESULT_DIR: /var/lib/duniter/chains/gdev/distance/ # should match network
      ORACLE_EXECUTION_INTERVAL: 200 # <--- should be adjusted based on network
    volumes:
      - duniter-data:/var/lib/duniter # use same volume

volumes:
  duniter-data:
root@debian-NL-Amsterdam-DC2-1gb:~# docker compose up -d
[+] Running 12/12
 ✔ duniter-smith Pulled                                                                                                                                                                                         9.0s 
   ✔ 3f152c6efa91 Pull complete                                                                                                                                                                                 5.4s 
   ✔ 5c5b2f557b0c Pull complete                                                                                                                                                                                 5.6s 
   ✔ 12adf6f93427 Pull complete                                                                                                                                                                                 5.7s 
   ✔ 54bc7bc97fae Pull complete                                                                                                                                                                                 5.7s 
   ✔ 1b046d43b16a Pull complete                                                                                                                                                                                 5.7s 
   ✔ 6200aad568f1 Pull complete                                                                                                                                                                                 6.6s 
   ✔ 6f8981b3d0b6 Pull complete                                                                                                                                                                                 6.6s 
   ✔ c51cdb097d1b Pull complete                                                                                                                                                                                 6.6s 
   ✔ 8aa6c7579aed Pull complete                                                                                                                                                                                 6.6s 
   ✔ 7a628aab172a Pull complete                                                                                                                                                                                 6.6s 
 ✔ distance-oracle Pulled                                                                                                                                                                                       8.9s 
[+] Running 4/4
 ✔ Network root_default            Created                                                                                                                                                                      0.1s 
 ✔ Volume "root_duniter-data"      Created                                                                                                                                                                      0.0s 
 ✔ Container root-duniter-smith-1  Started                                                                                                                                                                      0.5s 
 ✔ Container distance-oracle       Started                                                                                                                                                                      0.4s 
root@debian-NL-Amsterdam-DC2-1gb:~# docker compose logs -f duniter-smith 
duniter-smith-1  | thread 'main' panicked at node/src/command.rs:185:21:
duniter-smith-1  | unknown runtime
duniter-smith-1  | note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
duniter-smith-1  | Generating node key file '/var/lib/duniter/node.key'...
duniter-smith-1  | Error: Io(Os { code: 2, kind: NotFound, message: "No such file or directory" })
duniter-smith-1  | Node peer ID is ''.

(Ce n’est en aucun cas un reproche, juste un constat. Je découvre tout cet écosystème, avec des soucis en suivant justement la doc :laughing:.)

Merci encore en tout cas, ça aidera peut-être d’autres personnes par la même occasion.

1 Like

C’est le sujet de ce post :

Il faudrait investiguer et corriger ce problème, car vous êtes au moins trois à produire ce problème.

1 Like

Oups, merci, je n’ai pas eu le temps de faire un diagnostic complet.

Récupérer la dernière image

> docker pull duniter/duniter-v2s-gdev-800:latest
[pulling]
> docker run -it -p9988:9944 duniter/duniter-v2s-gdev-800:latest
Generating node key file '/var/lib/duniter/node.key'...
thread 'main' panicked at node/src/command.rs:185:21:
unknown runtime
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Error: Io(Os { code: 2, kind: NotFound, message: "No such file or directory" })
Node peer ID is ''.
Starting duniter with parameters: --node-key-file /var/lib/duniter/node.key --rpc-cors all --dev -d /var/lib/duniter --unsafe-rpc-external
WARNING: No public address specified, validator node may not be reachable.
				Consider setting `--public-addr` to the public IP address of this node.
				This will become a hard requirement in future versions.
WARNING: No public address specified, validator node may not be reachable.
				Consider setting `--public-addr` to the public IP address of this node.
				This will become a hard requirement in future versions.
2025-01-15 12:42:57 Duniter    
2025-01-15 12:42:57 ✌️  version 0.8.0-unknown    
2025-01-15 12:42:57 ❤️  by librelois <c@elo.tf>:tuxmain <tuxmain@zettascript.org>:c-geek <https://forum.duniter.org/u/cgeek>:HugoTrentesaux <https://trentesaux.fr>:bgallois <benjamin@gallois.cc>:Duniter Developers <https://duniter.org>:Axiom-Team Developers <https://axiom-team.fr>, 2021-2025    
2025-01-15 12:42:57 📋 Chain specification: Ğdev Local Testnet    
2025-01-15 12:42:57 🏷  Node name: tame-birthday-5891    
2025-01-15 12:42:57 👤 Role: AUTHORITY    
2025-01-15 12:42:57 💾 Database: ParityDb at /var/lib/duniter/chains/gdev_local/paritydb/full    
2025-01-15 12:42:59 🔨 Initializing Genesis block/state (state: 0x9367…a85f, header-hash: 0xbb0f…1968)    
2025-01-15 12:42:59 👴 Loading GRANDPA authority set from genesis on what appears to be first startup.    
2025-01-15 12:42:59 👶 Creating empty BABE epoch changes on what appears to be first startup.    
2025-01-15 12:42:59 Using default protocol ID "sup" because none is configured in the chain specs    
2025-01-15 12:42:59 Local node identity is: 12D3KooWCFmqPVFvxnxYSMZFJcsEJ5FYACAwnnHkk8aeb4WUh4tz    
2025-01-15 12:42:59 Running litep2p network backend    
2025-01-15 12:42:59 👶 Starting BABE Authorship worker    
2025-01-15 12:42:59 💻 Operating system: linux    
2025-01-15 12:42:59 💻 CPU architecture: x86_64    
2025-01-15 12:42:59 💻 Target environment: gnu    
2025-01-15 12:42:59 💻 CPU: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz    
2025-01-15 12:42:59 💻 CPU cores: 4    
2025-01-15 12:42:59 💻 Memory: 15708MB    
2025-01-15 12:42:59 💻 Kernel: 6.6.65-1-MANJARO    
2025-01-15 12:42:59 💻 Linux distribution: Debian GNU/Linux 11 (bullseye)    
2025-01-15 12:42:59 💻 Virtual machine: no    
2025-01-15 12:42:59 📦 Highest known block at #0    
2025-01-15 12:42:59 〽️ Prometheus exporter started at 127.0.0.1:9615    
2025-01-15 12:42:59 Running JSON-RPC server: addr=0.0.0.0:9944,[::]:44693    
2025-01-15 12:42:59 ***** Duniter has fully started *****    
2025-01-15 12:43:00 🧙 [distance inherent] No published result at this block.    
2025-01-15 12:43:00 🙌 Starting consensus session on top of parent 0xbb0f5f8bb403d4144f65bdb8128bb0fab66ca1b37c2d4df9b594ec042a941968 (#0)    
2025-01-15 12:43:00 🎁 Prepared block for proposing at 1 (1 ms) [hash: 0x49ea073d22e52933f7771a98bf59b5b38a817add67bc620850dad345020c5f40; parent_hash: 0xbb0f…1968; extrinsics (1): [0xc3b5…1150]    
2025-01-15 12:43:00 🔖 Pre-sealed block for proposal at 1. Hash now 0x8870406e7072a747d759e3d3acd2d542413f4f5c2797c1b18a86f0e94cb92bb3, previously 0x49ea073d22e52933f7771a98bf59b5b38a817add67bc620850dad345020c5f40.    
2025-01-15 12:43:00 👶 New epoch 0 launching at block 0x8870…2bb3 (block slot 289490830 >= start slot 289490830).    
2025-01-15 12:43:00 👶 Next epoch starts at slot 289490860    
2025-01-15 12:43:00 🏆 Imported #1 (0xbb0f…1968 → 0x8870…2bb3)    
2025-01-15 12:43:04 💤 Idle (0 peers), best: #1 (0x8870…2bb3), finalized #0 (0xbb0f…1968), ⬇ 0 ⬆ 0    
2025-01-15 12:43:06 🧙 [distance inherent] No published result at this block.    
2025-01-15 12:43:06 🙌 Starting consensus session on top of parent 0x8870406e7072a747d759e3d3acd2d542413f4f5c2797c1b18a86f0e94cb92bb3 (#1)    
2025-01-15 12:43:06 🎁 Prepared block for proposing at 2 (1 ms) [hash: 0xd80098b1b87c9bc4c433401861910dc8b73c8a1165566f5b3c4547c90413fdaf; parent_hash: 0x8870…2bb3; extrinsics (1): [0x9157…c0c6]    
2025-01-15 12:43:06 🔖 Pre-sealed block for proposal at 2. Hash now 0xee8389dc13551e84402f7a053cc35d0481c88762db1dcbc7c778b4a59f7af050, previously 0xd80098b1b87c9bc4c433401861910dc8b73c8a1165566f5b3c4547c90413fdaf.    
2025-01-15 12:43:06 🏆 Imported #2 (0x8870…2bb3 → 0xee83…f050)    
2025-01-15 12:43:09 💤 Idle (0 peers), best: #2 (0xee83…f050), finalized #0 (0xbb0f…1968), ⬇ 0 ⬆ 0    
2025-01-15 12:43:12 🧙 [distance inherent] No published result at this block.    
2025-01-15 12:43:12 🙌 Starting consensus session on top of parent 0xee8389dc13551e84402f7a053cc35d0481c88762db1dcbc7c778b4a59f7af050 (#2)    
2025-01-15 12:43:12 🎁 Prepared block for proposing at 3 (1 ms) [hash: 0xd4458588df9a96ab7f611ca2df2c985096f0996e2df33633f79d5c3091f19d0a; parent_hash: 0xee83…f050; extrinsics (1): [0x8a7c…c0b4]    
2025-01-15 12:43:12 🔖 Pre-sealed block for proposal at 3. Hash now 0xc1fac1752b62a13b6787b2e05a28d2bf47d373290e7b163271e450d1ec8bcffa, previously 0xd4458588df9a96ab7f611ca2df2c985096f0996e2df33633f79d5c3091f19d0a.    
2025-01-15 12:43:12 🏆 Imported #3 (0xee83…f050 → 0xc1fa…cffa)    

J’ai effectivement les mêmes erreurs, ce qui n’empêche pas mon nœud de démarrer une blockchain locale.

Se connecter au réseau gdev

> docker run -it -p9988:9944 -e DUNITER_CHAIN_NAME=gdev duniter/duniter-v2s-gdev-800:latest
Generating node key file '/var/lib/duniter/node.key'...
thread 'main' panicked at node/src/command.rs:185:21:
unknown runtime
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Error: Io(Os { code: 2, kind: NotFound, message: "No such file or directory" })
Node peer ID is ''.
Starting duniter with parameters: --node-key-file /var/lib/duniter/node.key --rpc-cors all --chain gdev -d /var/lib/duniter --unsafe-rpc-external
2025-01-15 12:44:46 Duniter    
2025-01-15 12:44:46 ✌️  version 0.8.0-unknown    
2025-01-15 12:44:46 ❤️  by librelois <c@elo.tf>:tuxmain <tuxmain@zettascript.org>:c-geek <https://forum.duniter.org/u/cgeek>:HugoTrentesaux <https://trentesaux.fr>:bgallois <benjamin@gallois.cc>:Duniter Developers <https://duniter.org>:Axiom-Team Developers <https://axiom-team.fr>, 2021-2025    
2025-01-15 12:44:46 📋 Chain specification: ĞDev    
2025-01-15 12:44:46 🏷  Node name: spectacular-regret-6184    
2025-01-15 12:44:46 👤 Role: FULL    
2025-01-15 12:44:46 💾 Database: ParityDb at /var/lib/duniter/chains/gdev/paritydb/full    
2025-01-15 12:44:48 🔨 Initializing Genesis block/state (state: 0xea8a…64d2, header-hash: 0xc184…b6c3)    
2025-01-15 12:44:49 👴 Loading GRANDPA authority set from genesis on what appears to be first startup.    
2025-01-15 12:44:49 👶 Creating empty BABE epoch changes on what appears to be first startup.    
2025-01-15 12:44:49 Local node identity is: 12D3KooWCpPTGjC6Wg2s47brt2rstJjkiAVasSFiwtjMzHQF4fvs    
2025-01-15 12:44:49 Running litep2p network backend    
2025-01-15 12:44:49 💻 Operating system: linux    
2025-01-15 12:44:49 💻 CPU architecture: x86_64    
2025-01-15 12:44:49 💻 Target environment: gnu    
2025-01-15 12:44:49 💻 CPU: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz    
2025-01-15 12:44:49 💻 CPU cores: 4    
2025-01-15 12:44:49 💻 Memory: 15708MB    
2025-01-15 12:44:49 💻 Kernel: 6.6.65-1-MANJARO    
2025-01-15 12:44:49 💻 Linux distribution: Debian GNU/Linux 11 (bullseye)    
2025-01-15 12:44:49 💻 Virtual machine: no    
2025-01-15 12:44:49 📦 Highest known block at #0    
2025-01-15 12:44:49 〽️ Prometheus exporter started at 127.0.0.1:9615    
2025-01-15 12:44:49 Running JSON-RPC server: addr=0.0.0.0:9944,[::]:45597    
2025-01-15 12:44:49 ***** Duniter has fully started *****    
2025-01-15 12:44:54 ⚙️  Syncing, target=#4782546 (1 peers), best: #1746 (0x908d…02f5), finalized #1536 (0x9f12…270c), ⬇ 119.2kiB/s ⬆ 0.3kiB/s    
2025-01-15 12:44:59 ⚙️  Syncing 256.2 bps, target=#4782546 (3 peers), best: #3027 (0xfbc0…bbc3), finalized #2560 (0x927d…63ed), ⬇ 202.7kiB/s ⬆ 1.1kiB/s    
2025-01-15 12:45:04 ⚙️  Syncing 354.6 bps, target=#4782547 (3 peers), best: #4800 (0xc101…6bb9), finalized #4608 (0x081a…e9cc), ⬇ 76.7kiB/s ⬆ 76 B/s  

J’ai aussi les mêmes erreurs, mais ça ne m’empêche pas de synchroniser sur la gdev.

Quelle est mon image

> docker inspect duniter/duniter-v2s-gdev-800:latest | head
[
    {
        "Id": "sha256:285612bb53add8e77e03c8967f86f446ac0750fd29125ba78ccf14492f68c2a5",
        "RepoTags": [
            "duniter/duniter-v2s-gdev-800:latest"

Je ne sais plus à quoi correspond ce hash, mais as-tu le même ?

En mode validateur

> docker run -it -p9988:9944 -e DUNITER_CHAIN_NAME=gdev -e DUNITER_VALIDATOR=true duniter/duniter-v2s-gdev-800:latest
Generating node key file '/var/lib/duniter/node.key'...
thread 'main' panicked at node/src/command.rs:185:21:
unknown runtime
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Error: Io(Os { code: 2, kind: NotFound, message: "No such file or directory" })
Node peer ID is ''.
Starting duniter with parameters: --node-key-file /var/lib/duniter/node.key --rpc-cors all --rpc-methods Unsafe --validator --chain gdev -d /var/lib/duniter --unsafe-rpc-external
WARNING: No public address specified, validator node may not be reachable.
				Consider setting `--public-addr` to the public IP address of this node.
				This will become a hard requirement in future versions.
Error: NetworkKeyNotFound("/var/lib/duniter/node.key")

Ok, donc ce problème arrive uniquement en mode validateur. Effectivement, en mode validateur, duniter ne génère pas la clé sans qu’on lui demande. Voilà la raison du entrypoint de @Pini :

Il doit donc y avoir un problème à ce niveau.

Test de la génération de clé

> docker run -it -p9988:9944 -e DUNITER_CHAIN_NAME=gdev -e DUNITER_VALIDATOR=true duniter/duniter-v2s-gdev-800:latest -- key generate-node-key
thread 'main' panicked at node/src/command.rs:185:21:
unknown runtime
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

> docker run -it -p9988:9944 -e DUNITER_CHAIN_NAME=gdev -e DUNITER_VALIDATOR=true duniter/duniter-v2s-gdev-800:latest -- key generate-node-key --chain=gdev
12D3KooWBigCnxRSAMSCECX9NzoaiHDVL9jy8HBq7Qfdh4peYYcN
555020b3a84b2d816789070daebc0e46209574b1444cdfe523c08d2f3844b07c%     

Il manque effectivement un argument à la fonction generate key : --chain=gdev. Je crée un rapport de bug : #286.

4 Likes

J’ai corrigé ce bug, il y a une nouvelle version de :latest sur https://hub.docker.com/r/duniter/duniter-v2s-gdev-800/tags. Elle s’appelle duniter/duniter-v2s-gdev-800:900-0.9.1.

Voici une démo :

> docker pull docker pull duniter/duniter-v2s-gdev-800:latest
[pulling]
> docker run -it -p9988:9944 -e DUNITER_CHAIN_NAME=gdev -e DUNITER_VALIDATOR=true duniter/duniter-v2s-gdev-800:latest
Generating node key file '/var/lib/duniter/node.key'...
12D3KooWQjWJ12m7A83Mo1ZxBDR8EKWqyFHEojN11WAhw1ifxv1h
Node peer ID is '12D3KooWQjWJ12m7A83Mo1ZxBDR8EKWqyFHEojN11WAhw1ifxv1h'.
Starting duniter with parameters: --node-key-file /var/lib/duniter/node.key --rpc-cors all --rpc-methods Unsafe --validator --chain gdev -d /var/lib/duniter --unsafe-rpc-external
WARNING: No public address specified, validator node may not be reachable.
				Consider setting `--public-addr` to the public IP address of this node.
				This will become a hard requirement in future versions.
WARNING: No public address specified, validator node may not be reachable.
				Consider setting `--public-addr` to the public IP address of this node.
				This will become a hard requirement in future versions.
2025-01-15 16:07:01 Duniter    
2025-01-15 16:07:01 ✌️  version 0.9.2-unknown    
2025-01-15 16:07:01 ❤️  by librelois <c@elo.tf>:tuxmain <tuxmain@zettascript.org>:c-geek <https://forum.duniter.org/u/cgeek>:HugoTrentesaux <https://trentesaux.fr>:bgallois <benjamin@gallois.cc>:Duniter Developers <https://duniter.org>:Axiom-Team Developers <https://axiom-team.fr>, 2021-2025    
2025-01-15 16:07:01 📋 Chain specification: ĞDev    
2025-01-15 16:07:01 🏷  Node name: disturbed-stove-9945    
2025-01-15 16:07:01 👤 Role: AUTHORITY    

Donc c’est bon, plus besoin de manips étranges pour que ça fonctionne !

6 Likes