Candidature Matograine TdC forgeron

Bonjour !

J’ai enfin mis en place un noeud membre, (pour rédiger la doc correspondante c’est mieux). Je postule pour la toile de confiance forgeron. J’en profite pour faire un petit exercice : quoi dire quand on postule ? C’est aussi l’occasion de faire un état des lieux.

Posez-moi des questions, faites des remarques, indiquez ce qui manque, faites comme si c’était une demande pour un smith en prod.

Vous pouvez également indiquer quelles vérifications vous faites (ou feriez), par ex. un scan de ports.

Informations sur le noeud calculant

  • adresse du noeud : gdev.matograine.fr
  • adresse du compte membre : 5GehQCsJPxw8SuUnLUcviaQEbWJfhRcarZDBAus1v85S38MZ

Configuration du serveur

  • Le serveur est un VPS premier prix chez OVH.
  • Il héberge également un site statique minimaliste (matograine.fr). Je prévois d’y installer une capsule gemini. Je ferai également des tests pour installer un indexeur et un datapod, mais je ne prévois pas de maintenir ces services sur le long terme. Je ne prévois pas d’installer un noeud miroir à coté du noeud membre.

Ports

Les ports ouverts sont

  • le port p2p 30333,
  • un port SSH custom,
  • les ports 80 et 443.

Reverse proxy

J’utilise nginx pour le site statique et rien d’autre.

Pratiques de sécurité

  • Je m’y connecte en SSH. (par clef ou par mot de passe de 12 mots aléatoires)
  • L’utilisateur sur lequel SSH se connecte a le rôle sudo sans demande de mot de passe.
  • Je n’ai pas encore stocké mon document de révocation membre dans deux endroits
  • Je n’ai pas encore stocké mon document de révocation smith car je n’ai pas encore été invité.
  • J’utilise un gestionnaire de mot de passe pour tous les mots de passe.
  • Aucun backup n’est mis en place (et je ne compte pas le faire)
  • Aucun monitoring n’est en place (et je ne compte pas le faire)

Contact

par email à matograine AT zaclys POINT net

4 Likes

Super, comme ça on pourra compléter la charte smith_charter/g1_smith_charter_fr.adoc · master · Millicent Billette / Charte Ǧ1 anciennement licence G1 June · GitLab

Ça c’est plutôt une information sur le membre. Tu peux aussi mettre le pseudo.

Dans cette section je rajouterais aussi le endpoint p2p (avec peer id) et le nom du noeud sur le réseau (Matograine_smith), ça peut aider pour la suite.

On n’a pas fait de document de révocation forgeron finalement. L’idée est qu’on perd le statut forgeron si on passe un moment sans calculer. Si les clés membres sont compromises, il faut révoquer le compte membre de toute façons et donc ça supprime le compte forgeron. Si les session keys sont dérobées et que le voleur s’en sert pour forger, il faudra aussi révoquer le compte membre. D’où les efforts pour que ça n’arrive pas.

Voici certains éléments issus de la charte forgeron qui pourraient être intéressants ici :

  • Je peux joindre le certifié par au moins 2 canaux (sms, email, xmpp, matrix…​).
  • J’ai noté le style de configuration (packet debian, docker-compose…​) qu’utilise le certifié pour son noeud (et cette configuration n’a pas de faille connue, notament n’exposer pas l’api unsafe publiquement)
  • Le certifié s’est engagé auprès de moi à m’informer de tout changement significatif de sa config (pour pouvoir transmettre les infos de manière ciblée si problème)
  • J’ai vérifié avec le certifié qu’il connait les risques pour le réseau d’être offline sans l’avoir annoncé, et qu’il se considère en mesure d’assurer un uptime suffisant.
  • J’ai vérifié que le certifié connait les délais de passage en ligne/hors ligne du validateur.
  • J’ai vérifié que le certifié savait où consulter les règles détaillées de la TdC forgeron.

Après ça, je peux t’inviter dans la toile forgeron :wink:

3 Likes
  • Je peux joindre le certifié par au moins 2 canaux (sms, email, xmpp, matrix…​).

Je t’envoie mon tel par MP.

  • J’ai noté le style de configuration (packet debian, docker-compose…​) qu’utilise le certifié pour son noeud (et cette configuration n’a pas de faille connue, notament n’exposer pas l’api unsafe publiquement)
Voici mon fichier de config
# Sets the name of the node.
# This should be a unique identifier for your node within the network.
DUNITER_NODE_NAME=Matograine

# Specifies the blockchain network to connect to.
DUNITER_CHAIN_NAME=gdev

# Defines the address and port for node communication.
# The format is /ip4/[IP address]/tcp/[port]/[protocol].
# If SMITH NODE: `/ip4/0.0.0.0/tcp/<port>` and `/ip6/[::]/tcp/<port>`. Otherwise: `/ip4/0.0.0.0/tcp/<port>/ws` and `/ip6/[::]/tcp/<port>/ws`.
# ICI il faudrait des exemples commentés, je ne sais pas quelle est la valeur de <port>.
DUNITER_LISTEN_ADDR=/ip6/::/tcp/30333
#OLD : DUNITER_LISTEN_ADDR=/ip4/0.0.0.0/tcp/9944/ws

# adresse du endpoint p2p
DUNITER_PUBLIC_ADDR=/dns/gdev.matograine.fr/tcp/30333


# Specify browser origins allowed to access the HTTP & WS RPC servers.
# A comma-separated list with no space of origins.
# Value of `all` will disable origin validation. Default is to allow localhost and
#<https://polkadot.js.org> origins.
# Default: "http://localhost:*,http://127.0.0.1:*,https://localhost:*,https://127.0.0.1:*,https://polkadot.js.org"
#DUNITER_RPC_CORS=http://localhost:*,http://127.0.0.1:*,https://localhost:*,https://127.0.0.1:*,https://polkadot.js.org
DUNITER_RPC_CORS=http://localhost:*,http://127.0.0.1:*,https://localhost:*,https://127.0.0.1:*

# Configures the pruning profile to manage how old blockchain data is stored.
# This setting can only be set on the first creation of the database.
# Options:
# - 'archive': Keep the state of all blocks.
# - 'archive-canonical': Keep only the state of finalized blocks.
# - [number]: Keep the state of the last specified number of finalized blocks.
# Default: 256 for a balanced pruning strategy.
DUNITER_PRUNING_PROFILE=256

# Sets the directory for storing Duniter data.
# This should be a writable path on your system by the duniter user where the node can store its data.
# Default: /home/duniter/.local/share/duniter
BASE_PATH=/home/duniter/.local/share/duniter

# URL for the Oracle RPC server.
# This should point to the RPC endpoint that the oracle will use to communicate with the blockchain.
# Default: ws://127.0.0.1:9944 for a local WebSocket RPC server.
ORACLE_RPC_URL=ws://127.0.0.1:9944

# Determines the log level for the Oracle.
# Options include 'error', 'warn', 'info', 'debug', 'trace'.
# 'info' is a good default that provides useful runtime information without too much detail.
# Default: info
ORACLE_LOG_LEVEL=info

  • Le certifié s’est engagé auprès de moi à m’informer de tout changement significatif de sa config (pour pouvoir transmettre les infos de manière ciblée si problème)

Je m’y engage

  • J’ai vérifié que le certifié connait les délais de passage en ligne/hors ligne du validateur.

Pas vraiment, non. j’ai dû faire des recherches. Je sais qu’il y a une notion de Epoch et de Session, que ces deux périodes ont la même durée. Je vois dans PolkadotJS que une Epoch (donc une Session) dure une heure.

Je sais que, une fois que je serai membre de la TdC Forgeron :

  • je devrai appliquer un rotate-keys sur mon noeud (je ne sais pas s’il est besoin de le refaire régulièrement)
  • je devrai faire un appel set-session-keys pour déclarer une clef de session. Je devrai refaire ceci au plus toutes les trois semaines (je pense donc me mettre en place un rappel et le refaire toutes les semaines)
  • je devrai faire un appel go-online. Après cet appel, ma clef de session sera candidate à la création de blocs à partir du début de la session suivante.
  • si je veux déconnecter mon noeud, je dois faire un appel go-offline. Cet appel sera pris en compte à partir de la fin de la session courante, donc je ne pourrai pas déconnecter mon noeud immédiatement.

vocabulaire
schéma du parcours membre

Ceci mériterait d’être précisé dans la licence.

  • J’ai vérifié que le certifié savait où consulter les règles détaillées de la TdC forgeron.

oui

  • J’ai vérifié avec le certifié qu’il connait les risques pour le réseau d’être offline sans l’avoir annoncé, et qu’il se considère en mesure d’assurer un uptime suffisant.

Justement, parlons-en. Il me semble que Polkadot prévoit des amendes dans le cas de mauvais comportements des noeuds. Mais les mauvais compotements que je vois listés résulteraient d’un bug dans le code ou d’une attaque, donc ce serait à corriger pour toute le monde, et je ne prévois pas d’attaquer le réseau V2.

Ceci est-il en place ?

Par ailleurs, j’ai compris que si je suis online (j’ai fait un go_online) mais que je ne crée pas de blocs, je sais qu’il y a une sanction qui m’empechera de calculer, mais je ne sais pas :

  • s’il s’agit d’un simple go_offline forcé ou d’une exclusion de la TdC forgeron
  • si cette sanction s’applique immédiatement
  • à partir de combien de blocs ‘manqués’ cette sanction s’applique
  • si cette sanction est assortie d’une amende

y a-t-il autre chose ?

Il serait pertinent d’ajouter ceci dans la licence.

3 Likes

Avant qu’on passe à 5 minutes, il fallait une session (600 blocs) pour pouvoir faire tourner l’oracle de distance sur le nœud forgeron (docs/user/distance.md · master · nodes / rust / Duniter v2S · GitLab). Maintenant c’est bon, 256 suffit, il faut juste mettre à jour cette doc.

J’avoue que le rappel de la différence entre epoch et session fait du bien, je les mets ici pour ceux qui nous lisent :wink:

Oui. C’est la première étape. J’aurais plutôt appelé ça “generate keys” parce que tout ce que ça fait c’est générer aléatoirement une clé (enfin quatre) et l’ajouter au trousseau. Mais bon, on fait avec leur vocabulaire.

C’était le cas au début et c’était la volonté d’elois, mais on a changé ça parce qu’on était pas convaincu que ce soit vraiment un gain en sécurité et que ça introduisait trop de contraintes incompatibles avec un nombre élevé de forgerons.

Donc non, on peut rester avec les mêmes session keys tant qu’on est forgeron. Il faudra refaire uniquement si on est exclu.

Oui, tout à fait ! Si tu veux bien y contribuer ce serait super :))

La (courte) discussion est ici : Offence management.
En gros plutôt qu’une stratégie punitive liée à l’idéologie des autres blockchain, on est parti sur un fonctionnement simple :

  • offense “offline” → go_offline automatique sans conséquence si le forgeron corrige le problème et refait go_online
  • offense plus grave → blacklist (garantie par la toile de confiance)

Réalisé par @bgallois dans !161. Effectivement ce serait bien de compléter la license sur ce point également.


Petite vidéo pour illustrer la candidature forgeron :slight_smile:
Il te reste à accepter l’invitation qui a été faite par @moul au bloc 3409327, et recevoir deux certifications.

00:00 intro
00:11 panneau de télémetrie de la ĞDev
00:56 duniter panel pour regarder les forgerons
02:12 candidature forgeron de matograine sur le forum
02:40 charte forgeron en cours d’écriture
04:11 invitation d’un membre dans la toile forgeron
05:00 bug de login (duniter panel ou duniter connect ?)
05:23 comment inviter un membre à devenir forgeron
05:50 fonctionnement invitation / acceptation / certification et différence avec la toile principale
06:36 étapes suivantes pour forger des blocs

2 Likes

Ca y est, j’ai accepté !

Je me suis rendu compte que l’indexeur https://gdev-squid.axiom-team.fr/v1/graphql est HS, j’ai utilisé squid.gdev.coinduf.eu/v1/graphql.

Après @HugoTrentesaux il me manquera deux certifications, sur l’adresse 5GehQCsJPxw8SuUnLUcviaQEbWJfhRcarZDBAus1v85S38MZ. Je remercie d’avance les gens qui voudront bien me certifier !

2 Likes

FAIT !

./gcli_0.3.0 -S cesium smith cert Matograine
Cesium id: 
Cesium password: 
transaction submitted to the network, waiting 6 seconds...
new smith certification SmithCertAdded { issuer: 12950, receiver: 1047 }

Identity index: 1047
Username:       Matograine
Address:        5GehQCsJPxw8SuUnLUcviaQEbWJfhRcarZDBAus1v85S38MZ
Status:         Member
Certifications: received 7, issued 12
Smith status:   Pending
Smith certs:    received 1, issued 0
Linked accounts count: 2


1 Like

Tu as fait des offences offline aux blocs 3772225, 3772761, tu as donc été sorti des autorités en attendant que tu règles le problème.

Je pensais que c’était dû au fait que je faisais la synchro Duniter1 sur le même serveur que mon noeud Duniter2.

Mais non (tout du moins, ce n’est pas ce qui a causé les offenses)

Les commandes s’appellent respectivement duniter et duniter2 mais le paquet debian s’appelle duniter dans les deux cas. Il est donc impossible d’installer duniter et duniter2 en parallèle par les paquets Debian.

J’ai désinstallé duniter2 en installant duniter1 :smiley:

Effectivement, le paquet utilise le même nom, je l’avais constaté ici : Paquet Debian pour Duniter v2 - #2 by HugoTrentesaux et on n’a pas encore pu régler ça (c’est prévu comme mission pour Benjamin dans les prochains paliers du financement participatif). C’est le genre d’isolation que permet docker et qui demande un peu de travail d’allers-retours dans le paquet debian. Encore du travail pour que ça soit confortable, donc !

1 Like

Étant offline trop longtemps, tu as été exclu de la toile forgeron.

Quelle est la durée approximative au dela de laquelle on est exclu ?

Combien coute, ou lui a couté, la pénalité (« offence ») ?

oui c’est peut la bonne question.

Plus terre à terre :
lorsque l’on est offline, au bout de combien de temps sommes nous exclu de la toile forgerons?

Sur la gdev, c’est 336 sessions (deux semaines) comme configuré ici : resources/gdev.yaml · master · nodes / rust / Duniter v2S · GitLab. Paramètre à décider ensemble pour la Ğ1.

Les offenses ne coûtent rien. Cf Offence management - #2 by elois

2 Likes

Bonjour !

Je viens de remettre en place mon noeud forgeron.
Cependant, mon identité va bientôt expirer, je n’ai que deux certifications de Hugo et Tuxmain. Pouvez-vous la certifier ?

5GehQCsJPxw8SuUnLUcviaQEbWJfhRcarZDBAus1v85S38MZ

En revanche, ne faites pas la demande d’évaluation de règle de distance, j’aimerais la faire moi-même. Une fois que ce sera fait, je demanderai pour les certifs forgeron.

Merci d’avance !

2 Likes

Salut matograine, j’en vois 7 désormais.

1 Like

@matograine Je t’ai invité à la forge :hammer_and_pick: :wink:

1 Like