Ethereum, une mise à jour qui tourne mal : ce bug paralyse 12 % du réseau
Il existe plusieurs logiciels clients pour Ethereum. Ces derniers permettent aux différents nœuds de se synchroniser avec le réseau. Depuis la mise à jour d’OpenEthereum (le successeur de Parity), un bug rend inutilisables les nœuds correspondants.
Un bug rendant la synchronisation avec Ethereum impossible
La société Parity Technologies avait arrêté de maintenir son célèbre logiciel client éponyme en décembre 2019. Cette décision fut la conséquence de coûts opérationnels trop élevés. C’est alors qu’OpenEthereum a vu le jour. Il s’agit d’une DAO (organisation autonome décentralisée) de développeurs, fondée par Gnosis.
OpenEthereum développe ainsi le logiciel client ayant succédé à Parity. La version 2.7.2 est sortie le 6 février 2020, et quelques mois après sortit la version 3, basée sur le même code. Malheureusement, si tout s’était bien passé lors du déploiement, un bug est révélé depuis juin.
La communauté des utilisateurs du logiciel a ainsi commencé à observer des blocages intempestifs du logiciel. Ces freezes nécessitent le redémarrage manuel du nœud. Le logiciel client n’en notifie pas l’opérateur, et la synchronisation suivante peut prendre beaucoup de temps. Ce souci gênant apparaît de façon aléatoire, plusieurs fois par mois. Cela affecte la moitié des nœuds Parity et la totalité des nœuds OpenEthereum, soit 12 % du réseau Ethereum.
L’explication : il s’agit d’un problème au niveau du système de priorisation des tâches. Dans certains cas où plusieurs tâches s’exécutent en parallèle, le logiciel crée une boucle infinie. Deux tâches vont attendre indéfiniment que l’autre soit exécutée, paralysant l’ensemble des processus.
Quelle(s) solution(s) pour pallier ce problème ?
Les développeurs d’OpenEthereum ont annoncé le retour à la dernière version réellement stable du logiciel (2.5).
1/ After trying to catch heisenbugs for several months affecting disk and memory usage of @OpenEthereumOrg we decided to go back to the last stable release, which is 2.5 (not 2.7) and backport all important changes. We expect to release 3.1 based on 2.5.13 in September. https://t.co/ycdwOhlNT6
— Stefan George 🦉💳 (@StefanDGeorge) August 24, 2020
Ainsi, la nouvelle version devrait être dévoilée à la mi-septembre, à l’occasion du prochain hard fork (berlin).
En attendant, les opérateurs des nœuds Ethereum concernés par ce bug doivent les rétrograder eux-mêmes. Et cela ne va pas être chose facile : il faudra à nouveau synchroniser entièrement sa blockchain. Une tâche qui peut prendre des mois pour certains nœuds :
more context for the nerds out there https://t.co/DZoVcMSSi7
— Liam (@liamaharon) August 24, 2020
L’équipe d’OpenEthereum travaille cependant sur un processus de conversion plus aisé :
We expect our next release to be available the second week of September approximately and we are evaluating options to automate converting 3.0x database to the 2.5 database format without having to resync. https://t.co/6xxJpeMdbp
— OpenEthereum is Deprecated (@OpenEthereumOrg) August 25, 2020
Certains accusent OpenEthereum de négligence… Mais il faut bien avoir à l’esprit qu’Ethereum est un réseau expérimental et qu’il est impossible d’éviter tous les bugs.
En revanche, nombreux sont ceux qui plébiscitent l’approche multi-clients d’Ethereum. Avoir un grand nombre de logiciels clients, basés sur des approches de développement différentes, est une bonne chose. Lorsqu’une partie des nœuds éprouvent des problèmes, le reste prend le relais. Actuellement, 80 % des nœuds Ethereum utilisent Geth. Avoir une plus grande variété de logiciels clients amènerait plus de résilience au réseau.