Comment investiguer un fork?

Bonjour,

Suite au fork du 02/01/2020, j’essaye de comprendre comment on peut voir qu’un fork est en cours et comment on peut identifier d’où vient le problème.

1. Identifier le problème

1.a : avec Césium

Dans les premiers signes, on peut voir des lenteurs, des virements qui ne passent pas, … Césium, connecté à un nœud bloqué, montrait des blocs datant de la veille par exemple.


(Capture du 03/01 à 09h18 montrant les derniers blocs calculés le 02/01, sur la droite.)

1.b avec Silkaj

@Moul utilise Silkaj, comme sur ce post.

On peut regarder plusieurs nœuds et voir qu’ils ne sont pas au même nombre de blocs. Sur le nœud par défaut ( g1.duniter.org ), qui n’est pas sur la bonne branche :

$ silkaj info 
Connected to node: g1.duniter.org 443 
Current block number: 285383 
Currency name: Ğ1 
Number of members: 2489 
Minimal Proof-of-Work: 87 
Current time: 2020-01-02 17:34:06 
Median time: 2020-01-02 16:03:08 
Difference time: 02:30:58 
Number of blocks containing:      
- new comers: 2885 
- Certifications: 14352 
- Actives (members updating their membership): 1562 
- Leavers: 4 
- Excluded: 1034 
- UD created: 1032 
- transactions: 26146

$ silkaj blocks -n 10
Issuers for last 10 blocks from block n°285374 to block n°285383 
|   block |  gentime  |  mediantime  |    hash    |    uid    |
|---------+-----------+--------------+------------+-----------|
|  285383 | 17:34:06  |   16:03:08   | 000004E92C | pafzedog  |
|  285382 | 17:14:30  |   15:57:07   | 000001696E | Granxis8  |
|  285381 | 16:54:39  |   15:51:44   | 0000051345 |   tcit    |
|  285380 | 16:43:08  |   15:46:22   | 000001A37E |   moul    |
|  285379 | 16:41:19  |   15:40:57   | 000002A792 | Mententon |
|  285378 | 16:38:28  |   15:35:19   | 000005B1EB |   elois   |
|  285377 | 16:31:57  |   15:29:55   | 0000080146 | gerard94  |
|  285376 | 16:28:42  |   15:24:32   | 00000467BE |  Petrus   |
|  285375 | 16:23:01  |   15:19:13   | 0000028395 |  Rykian   |
|  285374 | 16:13:12  |   15:14:08   | 000005D6C8 |  Muisec   |

$ silkaj net -d
11 peers ups, with 0 members and 11 non-members at 14:21:53
|        domain         |   port |      ip4       |    ip6    |  pubkey  |  member  |  gen_time  |   block |    hash     |  version  |
|-----------------------+--------+----------------+-----------+----------+----------+------------+---------+-------------+-----------|
| duniter-g1.p2p.legal  |  45000 | 163.172.99.239 |           |  Do99s…  |    no    |  17:34:06  |  285383 | 000004E92C… |  1.7.18   |
|                       |  10902 |  89.87.50.21   |           |  CmFKu…  |    no    |  17:34:06  |  285383 | 000004E92C… |  1.7.18   |
| …niter.g1.1000i100.fr |    443 |   82.64.0.18   |           |  2sZF6…  |    no    |  17:34:06  |  285383 | 000004E92C… |  1.7.18   |
|     g1a.jytou.fr      |   9002 |                |           |  FEkbc…  |    no    |  17:34:06  |  285383 | 000004E92C… |  1.7.18   |
|     g1.guenoel.fr     |    443 | 77.141.116.96  |           |  CTQZd…  |    no    |  17:34:06  |  285383 | 000004E92C… |  1.7.18   |
|     g1.guenoel.fr     |    443 | 82.64.183.183  |           |  CTQZd…  |    no    |  17:34:06  |  285383 | 000004E92C… |  1.7.18   |
|                       |  10903 | 91.121.157.13  |           |  5fPev…  |    no    |  17:34:06  |  285383 | 000004E92C… |  1.7.18   |
|  remuniter.cgeek.fr   |  16120 | 88.174.120.187 |           |  TENGx…  |    no    |  17:34:06  |  285383 | 000004E92C… |  1.7.18   |
|    g1.donnadieu.fr    |  12901 | 95.130.13.155  |           |  BDv28…  |    no    |  17:34:06  |  285383 | 000004E92C… |  1.7.18   |
|                       |  10900 |  62.210.8.219  |           |  FNiPN…  |    no    |  17:34:06  |  285383 | 000004E92C… |  1.7.18   |
|                       |  50190 |  82.225.73.91  | 2a01:e35… |  DTgQ9…  |    no    |  17:34:06  |  285383 | 000004E92C… |  1.7.18   |

Sur un nœud sur la bonne branche :

$ silkaj -p duniter.moul.re:80 info
Connected to node: duniter.moul.re 80 
Current block number: 285769 
Currency name: Ğ1 
Number of members: 2489 
Minimal Proof-of-Work: 83 
Current time: 2020-01-04 13:38:22 
Median time: 2020-01-04 12:34:47 
Difference time: 02:03:35 
Number of blocks containing:      
- new comers: 2886 
- Certifications: 14394 
- Actives (members updating their membership): 1576 
- Leavers: 4 
- Excluded: 1033 
- UD created: 1034 
- transactions: 26163

$ silkaj -p duniter.moul.re:80 blocks -n 10
Issuers for last 10 blocks from block n°285764 to block n°285773 
|   block |  gentime  |  mediantime  |    hash    |      uid       |
|---------+-----------+--------------+------------+----------------|
|  285773 | 13:58:57  |   12:53:41   | 0000076862 |      moul      |
|  285772 | 13:52:36  |   12:48:56   | 000001A24E | MarcelDoppagne |
|  285771 | 13:51:39  |   12:44:06   | 0000034B0F |    ji_emme     |
|  285770 | 13:50:25  |   12:39:14   | 000006B284 |    charles     |
|  285769 | 13:38:22  |   12:34:47   | 000009214C |    Guenoel     |
|  285768 | 13:21:38  |   12:30:52   | 0000022953 |    pafzedog    |
|  285767 | 13:20:16  |   12:26:58   | 000006D807 |      deem      |
|  285766 | 13:16:40  |   12:22:54   | 0000068D69 |    Granxis8    |
|  285765 | 13:14:08  |   12:18:49   | 00000D95BD |    Attilax     |
|  285764 | 13:04:08  |   12:14:55   | 00000187E3 |     Petrus     |

$ silkaj -p duniter.moul.re:80 net -d
20 peers ups, with 0 members and 20 non-members at 14:33:46
|        domain         |   port |      ip4       |    ip6    |  pubkey  |  member  |  gen_time  |   block |    hash     |  version  |
|-----------------------+--------+----------------+-----------+----------+----------+------------+---------+-------------+-----------|
|  remuniter.cgeek.fr   |  16120 | 88.174.120.187 |           |  TENGx…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|    duniter.tcit.fr    |  10901 |  94.23.43.191  |   ::1…    |  HmoPm…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
| …niter.g1.1000i100.fr |    443 |   82.64.0.18   |           |  2sZF6…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|  maison.donnadieu.fr  |  49136 | 192.168.101.6  | fd92:9e1… |  5EHep…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
| …r.normandie-libre.fr |  10902 |  82.64.35.65   |           |  8t6Di…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|                       |  10903 | 91.121.157.13  |           |  5fPev…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|                       |  20901 | 77.152.31.154  | fe80::36… |  D3krf…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
| duniter-g1.p2p.legal  |  45000 | 163.172.99.239 |           |  Do99s…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
| …:ec92:41e4:896e%eth0 |  10901 |                |           |  EAHgN…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|    g1.donnadieu.fr    |  12901 | 95.130.13.155  |           |  BDv28…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|                       |  43306 |  89.87.50.21   |           |  CmFKu…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|                       |  10902 |  89.87.50.21   |           |  CmFKu…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|     g1.guenoel.fr     |    443 | 77.141.116.96  |           |  CTQZd…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|     g1.guenoel.fr     |    443 | 82.64.183.183  |           |  CTQZd…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
| portail.occitanet.fr  |  10900 |  62.210.8.219  |           |  FNiPN…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|     g1b.jytou.fr      |   9001 |                |           |  FEkbc…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|                       |  50190 |  82.225.73.91  | 2a01:e35… |  DTgQ9…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|                       |  10901 | 79.85.173.136  |           |  AayJH…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|                       |  50191 |  82.225.73.91  | 2a01:e35… |  DTgQ9…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |
|     g1a.jytou.fr      |   9002 |                |           |  FEkbc…  |    no    |  14:32:35  |  285780 | 0000012A98… |  1.7.19   |

On remarque notamment que le « medianTime » est encore au 02/01/2020 sur g1.duniter.org alors que le « medianTime » est au 04/01/2020 sur duniter.moul.re (et sur les autres nœuds sur la bonne branche.)

C’est assez surprenant mais tous les « bons nœuds » semblent être en version 1.7.19 alors que les « mauvais » sont en 1.7.18 ? Et ce alors qu’il n’est pas possible de télécharger les .deb pour l’instant ( erreur 404 sur le gitlab )…

1.c avec WotWizard

@gerard94 utilise WotWizard (github) comme dans ce post.

1.d avec Duniter

Certaines choses sont visibles directement depuis les nœuds Duniter. Le nœud ne calcule plus, le nœud affiche « fork resolution » dans les logs, etc… À compléter

(Topic en cours d’écritures, j’éditerai au fur et à mesure si vous avez des idées à rajouter!)

2. Que faire ?

2.a Si vous n’hébergez pas de nœud Duniter

Vous pouvez vérifier sur ce forum ou sur l’autre forum si quelqu’un a déjà signalé le problème.
Vous pouvez également le signaler ailleurs ( chat XMPP, chat Matrix , Mastodon, Diapora* , … )

Et attendre. Prenez votre mal en patience en rappeler vous que l’écosystème est encore jeune et qu’il ne va faire que s’améliorer. :wink:

2.b Si vous hébergez un nœud Duniter

Soit votre nœud est sur la « bonne branche » et vous n’avez rien à faire.

Soit votre nœud est sur la « mauvaise branche ». Une fois le problème identifié, vous devrez le resynchroniser sur la « bonne branche ».

2.b.1 Resynchroniser son nœud sous Linux
Il faut se rendre dans le dossier ~/.config/duniter/duniter_default et tout supprimer sauf les fichiers « conf.json » et « keyring.yml ».

Ensuite, on redémarre Duniter et on lance une synchronisation sur un nœud à jour :

2.b.2 Resynchroniser son nœud sans interface graphique

2.b.3 Resynchroniser son nœud sous Windows
(Si quelqu’un peut me donner le dossier à nettoyer ? :slight_smile: )

(topic en cours d’écriture)

Il n’y a pas (encore) de lien internet pour ces fonctionnalités de WotWizard. Pour l’instant, il faut installer WotWizard (https://github.com/duniter/WotWizard/) sur un nœud G1. Il est possible de mettre tout WotWizard en ligne (un serveur en Go existe), mais personne ne l’a encore fait.

1 J'aime

7 messages ont été scindés en un nouveau sujet : Utilisation Silkaj

Perso, je suis avec silkaj diffi.
Si j’observe un ralentissement, je passe en mode silkaj blocks sur différents nœuds pour connaître les dates de générations des blocs des différentes branches.

Sinon, les logs de Duniter disent que le nœud arrive pas à rejoindre l’autre branche avec des messages d’erreur.

@gerard94: J’ai ajouté le lien vers le github, c’est ce que je cherchais. :slight_smile: J’avais cherché sur git.duniter.org mais sans succès.

@kimamila, pourquoi c’est le noeud de @1000i100 qui est en vert tout seul ?

Il n’est pourtant pas sur le maillon le plus récent?

@Moul si tu as un enchaînement de commandes silkaj qui permettent d’identifier un fork, et selectionner les noeuds OK, je suis preneur… Je cherche toujours une solution de 'load-balancing" qui évite de saturer les piscines et répartissent les requêtes…

Ca dépend du noeud Duniter sur lequel tu te trouve. Je crois que g1.nordstorm.duniter.org ne renvoit pas bien les infos à Cesium.
Utilise un autre noeud et tu y verras plus clair.

Effectivement, mon Cesium était configuré sur duniter.g1.1000i100.fr qui est désynchro…
Je suis passé à g1.presles.fr et ça marche.

C’est déroutant comme situation. Ne pensez-vous pas que nous devrions monter un proxy qui fait ce choix de « bon noeud » automatiquement et opère une sorte de « load-balancing »?

J’ai essayé avec https://git.p2p.legal/axiom-team/G1sms/src/master/shell/checknodes.sh (en mode bourrin depuis le code de @jytou ) mais ce n’est pas efficace…

Tout système centralisé est un talon d’Achile. Il suffirait de hacker le proxy pour renvoyer tout le monde vers un nœud compromis.

Que veux-tu dire par « efficace » ? :slight_smile:

Il y a peu (et de moins en moins) de noeuds qui supportent BMAS, parfois je selectionne des noeuds qui en fait manquent de réactivité (Rpi?). Bref, il faut que je me penche plus en profondeur dessus.

D’accord, mais du point de vue de l’utilisateur, cela lui donnerait le choix.
Il est faux de croire que tout le monde souhaite évoluer dans un monde totalement décentralisé.
Et quand on choisi son noeud préféré dans Cesium, on centralise déjà…
On pourrait avoir plusieurs proxy?!

justement non. :slight_smile: Au contraire, cela limiterait ses choix et le restreindrait au « consensus fait par le proxy » (et arbitré on ne sait trop comment).

On peut en changer à tout instant, en connaissance de cause. Par ailleurs, on peut également choisir son propre nœud… :wink:

Je parle de gens « normaux », pas de geek comme nous…
Leur niveau de conscience technique est fondamentalement différent (et le restera longtemps)

1 J'aime

Il ne s’agit pas là de technique mais bien de compréhension fonctionnelle d’un réseau décentralisé. Sans cette compréhension très basique (on a un réseau décentralisé de nœuds qui opèrent un consensus et non un serveur central, ce qui fait que certains nœuds peuvent être totalement à la ramasse), je ne vois pas comment un utilisateur peut utiliser la Ğ1 sans être sans cesse perplexe sur ce qui se passe. :slight_smile:

Je suis d’accord, mais soyons réalistes… Une blockchain (surtout publique) saturera en TX/secondes de toute façon! Plus nous serons nombreux à opérer des opérations dessus, plus l’expérience utilisateur sera décevante… Si les utilisateurs sont déçus, il se tournent vers des solutions « qui marchent ». Et là n’importe quel système centralisé et privateur peut se faire une place.

Nous pouvons décider de proposer cette solutions nous-même ou laisser n’importe qui le faire.
Je reprendrai le cas de la sidechain de bitcoin avec Blockstream qui désormais a pris le lead sur le projet et choisi d’augmenter les frais de transactions plutôt que d’agrandir la fenêtre

Tout choix est fait de compromis. Une architecture décentralisée ne peut certes pas rivaliser actuellement avec un serveur central sur certains points. À nous de bien faire comprendre aux nouveaux utilisateurs de la Ğ1 pourquoi l’architecture est décentralisée, avec ses caractéristiques (certains pouvant être vus comme des défauts), et pourquoi toute tentative de centralisation « pour se simplifier la vie » est extrêmement dangereuse. Si les utilisateurs comprennent l’enjeu, ils seront beaucoup plus compréhensifs vis-à-vis des défauts techniques. :slight_smile:

2 J'aimes

Sinon, il y a un path BMA qui donne les branches et une nouvelle vue réseau basée sur WS2P permettrait de voir rapidement l’état du réseau.

Et bien bonne chance.
Je ne sais pas combien de Gmarchés, et autres événements ou rencontres tu as réalisé. Moi j’en ai fait pas mal… Et à chaque fois, les « gens » finissent par reprendre un cahier et un crayon pour noter ce qu’ils se doivent… Actuellement, comme la plupart des utilisateurs sont « partisans », cela convient… Mais combien repartent de cette expérience en se disant: « bon c’est sympa leur truc, mais ça ne marche pas »… Ils sont de plus en plus nombreux!!!

A nous de voir si nous voulons que la Ḡ1 soit utilisée par un petit groupe de passionnés, ou si on veut que cela devienne un phénomène majeur du XXIe siècle…

Personnellement, je suis dans le 1er groupe, mais je passe dans le 2nd dès juin prochain… Et je repars vivre en forêt, près d’une rivière, « chasseur cueilleur » chez des peuples sans monnaie qui pratiquent le troc… Loin de la civilisation si « intelligente »… Je pourrai leur apprendre comment faire une monnaie libre avec des encoches sur des morceaux de bois :wink:

Demain je pars à Paris, https://p2p.paris/festival/ pour essayer de convaincre des « afficionados » P2P / IPFS de se pencher sur le berceau de la Ḡ1. J’ai peur que mes démos ne fonctionnent pas… Et que toute cette énergie investie n’ai servi à rien… Mais j’aurai essayé de faire du mieux que je pouvais…

3 J'aimes
2 J'aimes

Chaque Noeud Cesium+ maintient un index d’une liste de Peer avec des stats dessus, notamment le dernier bloc.
Je voulais m’en servir pour proposer un basculement automatique (d’ici quelques temps) si le plugin CS+ est activé bien sûr.
Mais j’ai encore du boulot pour que tout fonctionne bien, c’est pourquoi je n’en parle pas trop… Mais bref, ca avance.

5 J'aimes