Bêta-test Duniter 1.6 WS2P

Peut-etre faut il aussi ajouter un attribute remotePath dans la config ?

"ws2p": {
  "uuid": "fb17fcd4",
  "privateAccess": true,
  "publicAccess": true,
  "upnp": false,
  "host": "192.168.0.5",
  "port": 10091,
  "remoteport": 443,
  "remotehost": "g1.duniter.fr",
  "remotePath": "/ws2p"  <-- à ajouter ?
 }

Oui, sinon ça ne peut pas fonctionner vu que le port est adjoint à l’hôte, ça aurait donné “g1.duniter.fr/ws2p:443”.

voila :wink:

Autre question : peut-on considérer que les pubkey qui sont retournés par ws2p/heads ET qui n’ont aucune fiche de pair sont des noeuds privés ?

EDIT: je me pose la question de les ajouter dans la vue réseau de Cesium. Affichés comme les autres endpoints, mais sans les [host+port]

Tu pourrais … en supposant que toute fiche de pair publiée arrive bien jusqu’à toi. Ce qui expérimentalement est vrai, aujourd’hui. Mais il n’y a pas de garantie.

Et il y a aussi le cas de nœuds avec BMA (donc fiche de pair non vide), WS2P privé mais pas WS2P public.

C’est une approximation acceptable je dirais.

1 Like

Pour le moment, j’ai déjà ajouté les endpoints WS2P publiques, comme des lignes indépendantes de la vue réseau. J’exploite /network/ws2p/heads pour déterminer le numero bloc.
Reste inconnue la version de Duniter.
EDIT: Release de la version v0.17.4 de Cesium

Le meilleur endroit me semble être le message WS2P HEAD. En même temps que de propager son HEAD, qui est une méta-information, le nœud propagerait également son identifiant WS2P sur 8 caractères ainsi que le nom du logiciel et sa version.

Ce qui me permettrait aussi d’avoir une meilleur vue ici :

J’aurais alors 2 champs supplémentaires : WS2Pid et Software (nom + version).

Le seul problème c’est que le réseau Ğ1 a déjà commencé a se déployer avec la version 1.6.6 qui va refuser ces nouveaux messages. Ceci dit ce n’est pas très grave, il s’agit seulement d’un message informatif.

2 Likes

Et une version peut-être, du coup ? genre WS2P:HEAD:<version>:...

EDIT: version du format du message

Oui tu as raison, pour la compatibilité ascendante.

Je vais même gérer l’ancienne version pour assurer la rétro-compatibilité. Mais les nœuds en 1.6.7 propageront leur message dans le nouveau format.

1 Like

@cgeek d’ailleurs dans WS2P, est-ce que tu gère la version de duniter, dans la négociation d’ouverture de la WebSocket ?
EDIT: plutot la version de WS2P

Non, ceci dit on peut gérer une négociation différente en démarrant avec un message différent de CONNECT pour indiquer le protocole, car c’est le message initial.

1 Like

C’est grave, docteur ?

2017-09-30T08:29:14+02:00 - info: Block resolution: 0 potential blocks after current#56730…
2017-09-30T08:38:03+02:00 - info: SIDE Block #56733-000007E2 added to the blockchain in 99 ms
2017-09-30T08:38:03+02:00 - info: Block resolution: 0 potential blocks after current#56730…
2017-09-30T08:38:03+02:00 - info: Fork resolution: 1 potential block(s) found…
2017-09-30T08:38:04+02:00 - info: Fork resolution: 1 potential suite(s) found…
2017-09-30T08:38:04+02:00 - info: Fork resolution: HEAD = block#56730
2017-09-30T08:38:04+02:00 - info: Fork resolution: suite 1/1 (-> #56733-000007) revert to fork point block#56729
2017-09-30T08:38:06+02:00 - info: Block #56730 added to the blockchain in 465 ms
2017-09-30T08:38:06+02:00 - info: Fork resolution: suite 1/1 added block#56730-000000B1C37C6C75CC681D8784BE6C29D87BFF744DDBBBE0231EE850F700793B
2017-09-30T08:38:06+02:00 - info: Block #56731 added to the blockchain in 236 ms
2017-09-30T08:38:06+02:00 - info: Fork resolution: suite 1/1 added block#56731-0000013EB5C2380EE403BB8D66E91987BFAD77183F7591DEF6F2F4F4FC18E448
2017-09-30T08:38:07+02:00 - info: Block #56732 added to the blockchain in 230 ms
2017-09-30T08:38:07+02:00 - info: Fork resolution: suite 1/1 added block#56732-00000638578AB1F24F698B49CD4B2793DD21777F591608A173C36CE18B4904E6
2017-09-30T08:38:07+02:00 - info: Block #56733 added to the blockchain in 278 ms
2017-09-30T08:38:07+02:00 - info: Fork resolution: suite 1/1 added block#56733-000007E239A33304A6BCBC19F0E566A99FF98F92AD05EBE8673C0D210B1AB153
2017-09-30T08:38:07+02:00 - info: Fork resolution: suite 1/1 reached HEAD + 3. Now rolling back.
2017-09-30T08:38:09+02:00 - info: Block #56730 added to the blockchain in 112 ms
2017-09-30T08:38:09+02:00 - info: Block #56730 added to the blockchain in 119 ms
2017-09-30T08:38:09+02:00 - info: Block #56731 added to the blockchain in 146 ms
2017-09-30T08:38:10+02:00 - info: Block #56732 added to the blockchain in 156 ms
2017-09-30T08:38:10+02:00 - info: Block #56733 added to the blockchain in 249 ms
2017-09-30T08:38:10+02:00 - error: Unhandled rejection: TypeError: res.clone is not a function
2017-09-30T08:38:10+02:00 - error: TypeError: res.clone is not a function
at Server. (/opt/duniter/server.js:293:66)
at next (native)
at /opt/duniter/server.js:7:71
at __awaiter (/opt/duniter/server.js:3:12)
at Server.emitDocument (/opt/duniter/server.js:292:16)
at BlockchainService.pipe.es.mapSync (/opt/duniter/server.js:169:26)
at Stream.write (/opt/duniter/node_modules/event-stream/index.js:204:20)
at Stream.stream.write (/opt/duniter/node_modules/through/index.js:26:11)
at BlockchainService.ondata (_stream_readable.js:555:20)
at emitOne (events.js:96:13)
at BlockchainService.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at BlockchainService.Readable.push (_stream_readable.js:134:10)
at BlockchainService. (/opt/duniter/app/service/BlockchainService.js:218:22)
at next (native)
at fulfilled (/opt/duniter/app/service/BlockchainService.js:4:58)
at process._tickCallback (internal/process/next_tick.js:109:7)

(Et est-ce que c’est le bon endroit pour indiquer des erreurs ? Ou tu préfères un ticket ?)

Oui un ticket stp :slight_smile:

Non ce n’est pas grave je pense, si ton nœud reste bien synchronisé. Mais mieux vaut consigner l’erreur et y jeter un œil :slight_smile:

Nouvelle version 1.6.8

Fonctionnalités

  • Ceux qui possèdent plusieurs nœuds calculateurs de blocs peuvent désormais s’assurer qu’ils calculeront chacun leur propre preuve à l’aide d’un préfixe de preuve. Utilisation : duniter config --prefix <valeur>. Le champ valeur doit être un entier compris entre 1 et 899.
    Vous pouvez donc avoir jusqu’à 899 nœuds efficaces pour la preuve de travail.
    Fonction développée par @elois .

Correctifs

  • Sécurité :
    • Il était possible de spammer indéfiniment un nœud via le document fiche de pair
    • WS2P : en cas d’envoi répété d’un même document refusé de la part d’une connexion, bannir celle-ci pendant 2 minutes

Lien de téléchargement : Release v1.6.8 · duniter/duniter · GitHub

Cette version n’est pas une Release Candidate, d’autres corrections/nouveautés sont prévues (voir Jalon 1.6).

5 Likes

Je viens d’essayer d’installer la version 1.6.8 sur raspberry (raspbian, c’est une jessie), mais j’obtiens l’erreur suivante, quoi que je fasse, lorsque je lance duniter:

  return process.dlopen(module, path._makeLong(filename));
                 ^

Error: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /opt/duniter/node_modules/sqlite3/lib/binding/node-v48-linux-arm/node_sqlite3.node)
    at Error (native)
    at Object.Module._extensions..node (module.js:597:18)

Visiblement l’environnement dans lequel il a été buildé est différent car ça fonctionnait très bien avant. Des idées?

J’ai eu le même probleme avec l’installation du package car celui-ci n’est pas compatible avec Jessie. Les solutions qui fonctionnent sont l’installation à partir des sources ou de passer le Rapsberry Pi en Stretch.

Oui, ma carte SD ayant rendu l’âme j’ai dû réinstaller un Raspbian que se trouve être en dernière version, sur lequel je fais les build : Livrables ARM en attente : Raspberry PI 3 HS

Je vais downgrader pour la v1.6.9. En attendant, soit tu réinstalles ton Raspi en toute dernière Raspbian, soit tu attends la nouvelle version. Je te conseille cette dernière option, tu feras un parfait cobaye. :slight_smile:

Ok, super! :slight_smile: Faut dire que j’ai eu carrément du mal à suivre ces derniers temps…

Bonjour. Je tente de contribuer à G1-test en faisant tourner un nœud 1.6.8. Mon niveau en informatique est modeste et je bricole à peine en ligne de commande (ubuntu 16.04). Pour le moment mon aide se limite à ça, vu ma manie de pas déranger les gens qui bossent et qui en plus maîtrisent leur sujet.
Mais, à force de vous lire, je vois bien que vous êtes dérangés :wink: parce que dérangeables donc je me lance un peu en faisant un retour sur l’installation et l’utilisation de Duniter.
D’abord, à la lecture des différents posts sur Duniter dans le forum .org,il me semble que la plupart de mes difficultés pourraient être réglées par de la ligne de commande mais bon je dois butter sur des broutilles et dans les faits je n’y arrive pas.
Questions :
1° Avant d’installer une nouvelle version de Duniter, je ferme Duniter, je désinstalle le dossier « Duniter » dans le dossier « .config » et je désinstalle ensuite Duniter dans le « Gestionnaire de paquets Synaptic » . J’en fait trop, pas assez, ou c’est bon ?

2° J’installe ensuite avec Gdeby puis je cherche et ouvre Duniter avec « Synapse » car « chercher sur votre ordinateur » ne le trouve pas.
A l’ouverture de Duniter je me connecte à g1-test.duniter.org.10900 en laissant, de mémoire, le mode par défaut puis en choisissant (~) G1-test ……. (main mirror). Je coche ensuite la case « manual », ce qui m’inscrit « g1-test.duniter.org » je n’ai plus qu’à rajouter dans la fenêtre à côté « 10900 ». Je dois bien vous faire rire mais j’ai pas compris, ou trouvé mieux, pour que « ça marche ». Qu’est ce que je loupe ?
Dans « Settings/Crypto », je rentre ensuite ma clé publique 68jjs…. Puis je valide.
Là, Duniter tente de calculer des blocks mais n’en « trouve » pas. À la longue je me suis aperçu qu’il faut aller dans la fenêtre de Duniter, en haut à droite, sur les trois points et faire « stop serveur ». Je ferme ensuite Duniter puis l’ouvre mais peut-être que faire « stop serveur » puis « start serveur » suffit ?
Et là ça marche !
Si c’est faisable, cela est il possible « d’automatiser », à un moment, ce « stop serveur » puis « start serveur » pour les bleus comme moi ou à venir.
Remarque : dans « Settings/Network », la « fenêtre de choix » pour la limite de connexions m’a induit en erreur car le petit graph (au maxi) avec « maximum » au-dessus m’a semblé indiquer que j’autorisais le maximum de connexions alors que la valeur par defaut est « 1 ». Il me semble que, combiné au texte au dessus « you can limit the number of active private/public connections » cela prête encore plus à confusion. Propositions ; ou entrer, par défaut, un nombre supérieur de connections, ou bien, à la place de « maximum », inscrire « Nombre de connections » ou tout simplement afficher le “1”.

3° A force de bricoler sur G1-test pour comprendre,il me semble qu’il y a,+ou- deux jours, j’ai « créé » un forck car, dans Duniter, seule la valeur de mes blocks était bien supérieure au block courant (visuel Sakia et Césium). Ma « logique » a été alors de décocher l’option WS2p privée pour ne recevoir que de l’exterieur, cela m’a permis de revenir dans le rang rapidement. J’ai ensuite pu réactiver cette option sans problèmes. Coup de bol ou bien y a t’il quelque chose de cohérent dans ce procédé. Une alerte « Vous et tel ou tel noeud avez rejoint un forck » et un bouton « Rejoindre le block courant » serait-il utile, envisageable ?
Excusez les termes imprécis ou erronés et indiquez-moi si ma compréhension de l’utilisation de Duniter à déjà trop forcké et à quels endroits.
Merci

C’est un bug connu depuis peu : ticket #1145.

On ne va pas automatiser le clic sur le « Stop server », puis « Start server », mais plutôt corriger le bug sous-jacent qui fait que ta clé n’est pas correctement prise en compte. Aujourd’hui, un redémarrage de Duniter permet de contourner le problème.

C’est étrange que tu aies cette valeur “1”, la valeur par défaut étant plutôt de 10.

Ceci dit, il existait tout de même un bug en version 1.6.8 au cas où tu sauvegardais ta configuration en laissant les champs « Max » vides. Dans la version 1.6.9 (en cours de livraions), cela est corrigé et passe la valeur à 10 dans ce cas.

C’est possible, toutefois ce n’est pas vraiment prioritaire car sur la Ğ1 il y a beaucoup plus de nœuds et les forks ne se produisent pas si facilement.

C’est vrai que Ğ1-Test est dans un sale état …

En tout cas merci de ce retour précis :slight_smile: