ĞDev3 smiths

Wish you good focus! I would love to do this kind of maths exams again :hugs:

1 Like

Synchronizing!

I’ll go online when it’s all good.

The precedent years subjects are here, good luck! :stuck_out_tongue: (go to “licence 3 – structures algébriques 2”)

1 Like

@smiths-GDev you now have the duniter/duniter-v2s:sha-f442e6eb docker image with the good bootnodes and the good genesis. I did not tested, but you can :wink:

Here is an example of docker-compose.yml file to start a rpc and a validator node

# This is a docker template for running a gdev5 mirror and smith
# You should write a .env file aside with the environment variables:
#
# --- .env ---
# SERVER_DOMAIN=gdev.example.com
# PEER_ID=12D3KooWL7J8B2pUfgH2xhm8kpB88CiSNsSNHcWJJ6NdNffSg5ty
# VALIDATOR_PEER_ID=12D3KooWNyFo34PSHcg4cNd3d3MRs3dm1w3hQqo3QuFptd3DXW6H
# ------------
#
# The peer id has to be replaced withe the output of the following command
#
# Generate node.key and peer id
# >>> PEER_ID >>>
# docker run --rm -it --entrypoint duniter -v $PWD:/var/lib/duniter/ duniter/duniter-v2s:sha-f442e6eb key generate-node-key --file /var/lib/duniter/node.key
# >>> VALIDATOR_PEER_ID >>>
# docker run --rm -it --entrypoint duniter -v $PWD:/var/lib/duniter/ duniter/duniter-v2s:sha-f442e6eb key generate-node-key --file /var/lib/duniter/node.key
# <<<<<<<<<<<<<<<>>>>>>>>>>

version: "3.4"

services:
  
  # ===== RPC =====
  duniter-rpc:
    image: duniter/duniter-v2s:sha-f442e6eb
    restart: unless-stopped
    ports:
      # telemetry
      - 9615:9615
      # rpc
      - 9933:9933
      # rpc-ws
      - 9944:9944
      # p2p
      - 30333:30333
    volumes:
      - ./duniter-rpc/:/var/lib/duniter/
    environment:
      - DUNITER_CHAIN_NAME=gdev
    command:
      - "--node-key-file=/var/lib/duniter/node.key"
      - "--public-addr"
      - "/dns/${SERVER_DOMAIN?SERVER_DOMAIN should be set}/tcp/30333/p2p/${PEER_ID?PEER_ID should be set}"
      - "--rpc-cors=all"
      - "--pruning=14400"
      - "--name"
      - "hugo-trentesaux-rpc"

  # ===== VALIDATOR =====
  duniter-validator:
    image: duniter/duniter-v2s:sha-f442e6eb
    restart: unless-stopped
    ports:
      # telemetry
      - 9616:9615
      # rpc
      - 9934:9933
      # rpc-ws
      - 9945:9944
      # p2p
      - 30334:30333
    volumes:
      - ./duniter-validator/:/var/lib/duniter/
    environment:
      - DUNITER_CHAIN_NAME=gdev
    command:
      - "--node-key-file=/var/lib/duniter/node.key"
      - "--rpc-cors=all"
      - "--rpc-methods=Unsafe"
      - "--validator"
      - "--pruning=14400"
      - "--name"
      - "hugo-trentesaux-validator"
  • read and apply the documentation at the head of the file
  • note that I did not tested it, there might be errors
  • change the --name option with your name so that we can more easily debug the network
  • depending on your docker installation, there might be access rights issues
  • I do not provide nginx config, there is one in Duniter documentation

You should have everything needed to start a node. Please do not go online yet, you still have to rotate your session keys as mentioned in the documentation (that could be improved).

4 Likes

Je confirme que ça marche impeccable chez moi en RPC :slight_smile:

You don’t need nodekey for RPC (right?).
--public-addr is also optionnal.

Pour l’instant voici les nœuds sur le réseau :

image

Svp choisissez des noms parlants pour que ce soit plus facile de vous contacter.

Polux c’est tuxmain non ?
Ou 1000i100, en tout cas il est à Bordeaux ^^

Polux c’est bien le nom de mon serveur (en référence à la BD Nestor & Polux et parce que c’est un Raspberry).

Je peux le renommer tuxmain-polux-smith.

2 Likes

@tuxmain ton noeud smith est tombé sans avoir go offline visiblement, 1/3 de perte, réseau en panic…

@all qui veut coder un outil de monitoring pour faciliter le monotoring de tout ça ? Je peux aider mais j’ai pas le temps avec Ğecko et le reste malheuresement …

Je peux vous aider en vous disans comment utiliser polkadot.js pour ce faire, et quels valeurs de storage écouter.

Prévoir un système de notification par email en fonction de certains état du storage ou certs events émis par duniter.

Nécessite donc avant tout un front JS avec polkadot.js.
Pour le back daemon qui alerte en fonction de certains états du storage, l’indexer peut le faire il suffit d’ajouter ce qu’il faut en module TS.

1 Like

Mon serveur est down depuis que je suis parti (à 700km), je ne comprends pas pourquoi. Je pourrai le relancer le 2 janvier au soir.

Gcli peut servir d’outil de monitoring, on peut déjà servir en web statique la sortie de sa sous-commande expire.

Le code de Gcli peut aussi être repris pour en faire un serveur centralisé avec envoi de mail ou message sur le forum.

2 Likes

Le bonne procédure dans notre cas précaire serait que le comité tech vote un go offline pour toi.
Mais je ne le ferais pas car j’ai la flemme, il nous faut impérativement des outils pratiques et à nous pour faire tous ça.

Je ne sais pas si le réseau se stabilisera là après un go offline effectué maintenant.

Je pensais que j’aurais été exclu automatiquement au bout d’un certain nombre de blocs manqués… je viens de goOffline, pour l’instant à part quelques blocs manquant tout va bien. On verra dans les prochaines sessions.

1 Like

Je crois que je vais finir par orienter gecko web vers ça tout de suite en fait …

Faire toute l’UX et l’architecture pour pouvoir

  • certifier des nouveaux smiths
  • monitorer la wot smith basiquement
  • voir les votes techs en cours
  • voter si on est logué avec wallet du comite tech
  • monitorer un peu ça

C’est un gros taf, mais je crois que c’est notre priorité.
Je peux dès maintenant faire ça de manière 100% fonctionnel en flutter web, il suffira de switcher les calls RPC vers G1Companion² quand il sera prêt.

Je préviens que l’UX ne sera pas très belle et juste orienté “faciliter la vie des smiths et tech comitee”
faut pas s’attendre à gecko mobile quoi, on s’en fou ici pour le moment, faut juste que ça marche sans avoir à ce cas*** les couilles sur polkadotjs UI …

Je dirais 10j de taf normal pour se faire.

Vous en pensez quoi ? d’autres voudraient le faire à ma place autrement ?

c’est un projet cool ça ne me dérange pas de le faire, ni de laisser d’autres le faire. @cgeek ? @Paidge ? @1000i100 ?
J’aimerais juste que ce soit fait avant Février, on en a besoin.


@tuxmain tu voudra bien t’occuper de ce backoffice mails monit avec gcli² ? (en janvier quoi je veux dire quoi lol)

Sinon je pense qu’on s’en chargera avec @ManUtopiK en TS, mais on a tous trop de truc à faire pour si peu de monde …

1 Like

Il y a polkawatch.io qui propose d’envoyer un SMS (mais c’est que pour certaines chaînes, et je n’ai pas trouvé la source).

Pour faire au plus simple, je veux bien faire un bête service qui vérifie toutes les X minutes auprès d’un nœud archive ou d’un indexeur, pour toutes les X dernières sessions terminées, si tous les validateurs ont écrit plus de X blocs, et envoie un mail à son propriétaire sinon, avec des adresses mail hardcodées dans la config. On verra après pour un truc plus intelligent (que les forgerons puissent enregistrer leur mail eux-mêmes).

Il faudra faire les offences aussi, pour goOffline automatiquement les absents. (je crois que @HugoTrentesaux voulait le faire)

D’abord j’aimerais finir la mise à jour substrate 0.9.26 → 0.9.32, il y a énormément de trucs à changer et c’est très long de trouver quoi. (et à chaque fois que je crois avoir fini, bam ! une nouvelle fournée d’erreurs)

3 Likes

ah oui j’avais pas pensé à ça … à la Cs+ ou peu importe mais ouai.

Ce serait cool à l’occaz de se faire une visio “upgrade substrate” avec toi et ceux qui veulent (moi ça m’intéresse, juste comme spectateur d’un screencast commenté en visio).

1 Like

On pourra faire une revue commentée des changements j’imagine. Déjà j’ai (empiriquement) fait une documentation très générique sur le processus de mise à jour. En gros une fois les formalités faites, il faut traiter les erreurs une par une en fouillant dans le code de Polkadot et de Substrate.

3 Likes

Non, on n’a pas implémenté la gestion des offences, donc il n’y a pas de goOffline automatique pour l’instant.

Ou sudo, j’aurais pu le faire si j’avais vu à temps.

C’est une bonne idée de faire de Ğecko web un gros terrain d’expérimentation où on fait vite et sale les fonctionnalités dont on a besoin rapidement. Une sorte de couteau suisse.

Je le pense aussi, il faut qu’on augmente le nombre de forgerons impliqués dans le développement de Duniter. Ça va pas qu’on soit les seuls “beta testeurs” des fonctionnalités forgerons qui sont très nouvelles pour nous.

Il faut que ça soit fait, je ne sais toujours pas quelle est la meilleure stratégie entre le faire moi-même maintenant et trouver des sous pour faire bosser plus de monde sur le projet, et dans ce cas je suis plus utile en coordination qu’en développement spécifique.

Ça peut valoir le coup d’en parler sur le forum polkadot, et je pourrai demander à Julien Éluard de jeter un œil sur ces questions de mise à jour de substrate.

2 Likes

En ce moment, j’ai ma vie personnelle et professionnelle qui m’accapare mon temps de cerveau disponible. Mais si y’a besoin d’aide pour améliorer des interfaces web, je veux bien. Par contre, je n’ai jamais travailler avec Flutter :stuck_out_tongue:

3 Likes

C’est un peu mon problème actuel …

Je suis le seul à dev en Flutter ici, donc si je commence un projet Flutter même dans le but d’être collaboratif, bah je m’attends à rester seul dessus malheuresement …

Donc pour cette raison, je préfère VOUS laisser commencer quelque chose avec des technos web plus connus et standard que Flutter.

Si personne ne le fait dans les semaines qui viennent, je le ferais alors moi même en Flutter :slight_smile:

Toujours ok pour former qui le veut sur Flutter.

2 Likes

ah ah je me sens moins seul :joy: (OK je sors…)

Sinon, en lisant les besoins d’alerte email, c’était pas l’indexer qui devait s’en occuper et reprendre le rôle de Cs+, avec la puissance d’Hasura ?

On pourrait ajouter si besoin des infos en database pour ce type de gestion des forges et des besoins au quotidiens des forgerons, pour ne pas se disperser. Ou bien rester sur RPC si cela suffit, je ne sais pas.

Il y a des libs qui prennent une source API comme Hasura et les transforment en web app quasi clef en main. Genre Hasura → Webapp ?

Je compte essayer de me mettre à Nuxt.js comme @ManUtopiK pour aller vers ce genre de chose pour mon projet pro (bonne résolution 2023) :

3 Likes

Cool :slight_smile: On va commencer à avoir de la ressource sur Nuxt.js

Pour interroger du graphQL, jusqu’alors j’utilisais surtout ApolloClient qui a surtout été développé pour React au départ. C’est le cas pour wotwizard-ui qui utilise un wrapper pour Nuxt.js. Peut-être que la version pour Vue3 est mieux mais j’ai eu qqes galères avec la version pour Vue2. Dans certains cas, je suis passé par Axios, qui permet de faire des requêtes GET ou POST en async. Par ex dans le fichier nuxt.config.js d’un projet, j’ai été obligé de faire ça pour générer le sitemap.xml d’un blog :

  generate: {
    fallback: true,
    routes() {
      return axios({
        url: process.env.ENDPOINT,
        method: 'post',
        data: {
          query: `
            query GET_POSTS {
              posts {
                nodes {
                  slug
                }
              }
            }
          `,
        },
      }).then((result) => {
        return result.data.posts.nodes.map((post) => {
          return '/blog/' + post.slug
        })
      })
    },
  },

A la place d’Apollo, j’ai découvert récemment cette bibliothèque plus légère qui est sortie cet été et qui doit faire le taff.

2 Likes