Génération de bloc bloquée due à une transaction ayant "Certifications" en commentaire

Je pense que le soucis vient peut-être de quelques tests que j’avais fais sur l’envoi de transaction.
Certaines transactions ont été envoyées avec le champs « Coment » vide.
Mon noeud contenant ces transactions en piscine vient de générer un bloc invalide
voir l’extrait du log en mode trace duniter.txt (88,2 Ko)
@cgeek pour info si ça peut éviter de te faire perdre du temps

2 Likes

Les RML16 du 25 au 29 Mai est l’événement de rencontre des développeurs informatiques véritablement intéressés par la maintenance, l’innovation de la blockchain Duniter/Ğ1, avec pour thème central de cette 16ème édition la migration vers Substrate.

La 16ème occasion de rencontre des développeurs historiques et nouveaux, permettant de monter en compétence sur le chemin de la maîtrise de la blockchain Duniter/Ğ1 !

Les développeurs intéressés doivent se faire connaître auprès des développeurs déjà inscrits et rejoindre le canal télégram dédié (canal privé).

2 Likes

si avec quelques tests, il est possible de bloquer toutes les transactions de la blockchain, on peut craindre ce que donnerait une attaque concertée sur la même blockchain. Après, peut-être que la migration vers substrate évitera ce genre de problématique…

Pour redémarrer au plus vite peut-être qu’il suffirait de vider les piscines, ou au moins de supprimer le document problématique ?

Ensuite si on veut éviter que le problème se reproduise il faut corriger le bug.

Et oui Substrate utilise un autre format et je pense que ses codeurs/décodeurs sont très largement testés, y compris dans des cas d’usage complètement différents, puisqu’ils servent à beaucoup de projets et de gens différents. Comme on n’aura pas à gérer toute la partie formatage, il y aura moins de risque.

3 Likes

Après un rapide coup d’œil, je ne suis pas sûr que le coup du mauvais format de document soit le vrai problème.

edit : bon je suis moi-même de mauvaises pistes, j’arrête de parler pour le moment.

1 Like

Pour « débloquer » votre nœud depuis une installation Linux Ubuntu :

sudo apt install sqlite3
sqlite3 $HOME/.config/duniter/duniter_default/txs.db 'DELETE FROM txs WHERE hash = "880A176F660BC095A5856B9223A2CFB622B1762CC1322D2C7DE714179C1044AC"'

Pas besoin de redémarrer Duniter.

5 Likes

Bon je pense avoir trouvé, la transaction en question :

TX:10:1:5:5:2:1:0
514918-000000342C2240AB86C669326D723A0B8421840FF909076F5739F7FD59B31709
HCV6HP1goDQjnwDXUGrDAaiJDiChtsL1RmVBBLxapq94
1042:0:D:HCV6HP1goDQjnwDXUGrDAaiJDiChtsL1RmVBBLxapq94:503508
1042:0:D:HCV6HP1goDQjnwDXUGrDAaiJDiChtsL1RmVBBLxapq94:503799
1042:0:D:HCV6HP1goDQjnwDXUGrDAaiJDiChtsL1RmVBBLxapq94:504076
1042:0:D:HCV6HP1goDQjnwDXUGrDAaiJDiChtsL1RmVBBLxapq94:504350
1042:0:D:HCV6HP1goDQjnwDXUGrDAaiJDiChtsL1RmVBBLxapq94:504615
0:SIG(0)
1:SIG(0)
2:SIG(0)
3:SIG(0)
4:SIG(0)
5000:0:SIG(DvB8gAiL78cXZPHKfza2TR9xCxiCJiAbpzoCSkVhSd9e)
210:0:SIG(HCV6HP1goDQjnwDXUGrDAaiJDiChtsL1RmVBBLxapq94)
PAF Certifications
OMmFGkqGp2BjchdiW2DOC5Wtc5G6NisY9aOL8lFX6f86ks0ptOun9/ec9sQJmtw7v/z37Iuug3gvax53tEXQAQ==

Je pense que c’est tout simplement que le commentaire utilise un mot-clé du protocole « Certifications » qui est utilisé pour le parsing du bloc.

7 Likes

tous les responsables d’un noeud doivent donc taper cette commande pour revenir à la normale ou bien ça va se repropager aux différents noeuds ?

Soit tous jouent cette commande, soit tous mettent à jour leur nœud avec une nouvelle version de Duniter incluant le correctif.

De toute façon il va falloir mettre à jour, c’est une belle vulnérabilité qui se reproduit à volonté.

5 Likes

Pour info, je suis sur Duniter 1.9-dev (pour GVA):

$ sqlite3 $HOME/.config/duniter/duniter_default/txs.db 'DELETE FROM txs WHERE hash = "880A176F660BC095A5856B9223A2CFB622B1762CC1322D2C7DE714179C1044AC"'
Error: no such table: txs

Je suppose que cette table a été migré sur une nouvelle DB avec Rust.
Je vais attendre sagement de me re-synchro sur un nœud à jour.


C’est même incroyable que le problème n’ai pas été relevé avant.
C’est étonnant que le mot clé « Certifications » n’ai jamais été utilisé en commentaire auparavant.

3 Likes

J’ai appliqué la requête et donné un peu plus de priorité à duniter pour qu’il trouve rapidement quelque chose afin d’aider à débloquer au plus vite.

2 Likes

Le bloc 514924 vient d’être forgé par @jytou par contre il annonce la date d’hier, c’est normal?

Il fallait une majuscule et le pluriel, c’est peut-être pour ça. Ce serait intéressant d’aller vérifier, néanmoins j’arrive à corriger l’anomalie en changeant le parsing du bloc donc je suis à peu près certain.

3 Likes

Sacré bloc, du coup !

image

3 Likes

Oui, mon nœud a forgé ce bloc il y a quelques instants, mais c’est parfaitement normal que l’heure blockchain n’avance que lentement… il nous faudra une petite accélération pour revenir à une heure proche de l’heure réelle, c’est comme ça que ça marche. :slight_smile:

2 Likes

Ouaip ! Je surveillais les logs et je l’ai vu rajouter toutes les transactions et les identités… une belle brochette ! :smiley:

2 Likes

Tu peux nous rappeler l’adresse de ton noeud stp ? Que je me cale dessus ^^

1 Like

Pas besoin, a priori tout le monde suit… c’est juste que les nœuds qui ont la mauvaise transaction dans leur piscine ne peuvent pas forger de bloc, si j’ai bien compris… mais tout bloc qui ne contient pas la transaction foireuse devrait être accepté correctement.

Apparemment oui.
Mais en ce qui me concerne ça ma permis de me rendre compte que mon noeud est out depuis un moment…
Pas sûr qu’avec Duniter 1.9 ce problème de parsing se serait posé étant donné que la logique des transactions a été migré en Rust.
Mais bon, je crois que je vais revenir à Duniter 1.8.1 (ou attendre 1.8.2 si un fix est prévu par cgeek) et donc couper le dernier noeud GVA en ligne.
Mais avant ça il faut que je rétrograde g1-stats et Jaklis pour utiliser BMA de nouveau, sinon plusieurs services tiers seront perdus (comme carte.monnaie-libre.fr).
Bref c’est un autre sujet.

2 Likes

Ce n’est pas le code des transactions qui pose problème, mais celui du parsing de bloc. La 1.9 est aussi affectée, je viens de vérifier.

Sinon, pour info voici une Merge Request corrective pour Duniter 1.8. Vous pouvez y jeter un œil, toutefois je mergerai sans confirmation de votre part (sauf si vous voyez un bug manifeste bien sûr :slight_smile: ).

7 Likes