Les Hards forks et les Softs forks expliqués
Accueil
Articles
Les Hards forks et les Softs forks expliqués

Les Hards forks et les Softs forks expliqués

Intermédiaire
Publié le Nov 29, 2018Mis à jour le Feb 9, 2023
8m

Introduction

Lorsque vous êtes invité à mettre à jour l'application de votre banque sur votre smartphone, vous ne réfléchissez sûrement pas longtemps avant de le faire. Il se peut même que votre téléphone s'occupe automatiquement des mises à jour sans que vous n'en ayez conscience. Après tout, il s'agit d'un processus normal : si vous n'installez pas la dernière version d'un logiciel, vous risquez d'être dans l'incapacité d'utiliser ses services.

Dans le monde open-source des cryptomonnaies, les choses sont différentes. Si vous n'avez pas besoin de lire chaque ligne du code de Bitcoin pour pouvoir l'utiliser, il est néanmoins important de pouvoir le faire. Dans ce nouveau monde, il n'existe pas de hiérarchies pouvant simplement imposer des mises à jour et changer les choses selon leur bon vouloir. C'est pourquoi l'implémentation de nouvelles fonctionnalités sur les réseaux blockchain peut être un véritable challenge.
Dans cet article, nous verrons comment les réseaux de cryptomonnaie peuvent être mis à jour, malgré l'absence d'une autorité centrale. Ces réseaux utilisent deux mécanismes différents : les hard forks et les soft forks


Qui prend les décisions sur un réseau blockchain ?

Pour comprendre comme les forks fonctionnent, il est essentiel de d'abord parfaitement comprendre les participants impliqués dans le processus décisionnel (la gouvernance) du réseau.
Pour Bitcoin, on pourrait de manière générale faire la distinction entre trois sous-ensembles de participants : les développeurs, les miners et les utilisateurs exécutant un nœud complet. Ces parties contribuent au réseau. Les nœuds légers (light nodes) (exemple : les portefeuilles pour téléphone, ordinateurs) sont largement utilisés mais ne sont pas réellement des « participants » au réseau.


Développeurs

Les développeurs sont responsables de la création du code, mais également de sa mise à jour. Tout le monde peut contribuer au développement d'une cryptomonnaie. Le code est accessible publiquement, permettant à tous de soumettre des modifications qui seront examinées par d'autres développeurs. 


Mineurs

Les mineurs sont en charge de la sécurisation du réseau. Ils exécutent le code d'une cryptomonnaie et allouent leurs ressources pour ajouter des nouveaux blocs à la blockchain. Pour le réseau Bitcoin, on parle de Preuve de travail. En récompense de leurs efforts, ceux-ci obtiennent des récompenses de bloc.


Utilisateurs de nœuds complets

Les nœuds complets sont la colonne vertébrale du réseau d'une cryptomonnaie. Ils valident, envoient et reçoivent les blocs et les transactions et conservent une copie de la blockchain.


Vous trouverez souvent des chevauchements dans ces catégories. Une personne peut par exemple être un développeur et l'utilisateur d'un nœud complet ou, être un mineur et l'utilisateur d'un nœud complet. Vous pouvez être les trois à la fois, ou rien. En fait, beaucoup de ceux que nous considérons comme des utilisateurs de cryptomonnaies n'assument aucun de ces rôles. Ils utilisent à la place des services centralisés ou des nœuds légers.

En regardant les descriptions ci-dessus, vous pourriez faire des propositions solides pour que les développeurs et les mineurs prennent les décisions pour le réseau. Les développeurs créent le code : sans eux, ils n'y aurait pas de logiciels à exécuter et personne ne pourrait corriger les bugs ou ajouter de nouvelles fonctionnalités. Les mineurs sécurisent le réseau : sans une compétition de minage saine, la chaîne peut être détournée ou s'arrêter.
Si ces deux catégories essayaient de forcer le reste du réseau à suivre leur volonté, cela finirait très mal. Pour beaucoup, le véritable pouvoir se trouve dans les nœuds complets. Ceci est largement dû au fait que le réseau est opt-in (consentement), ce qui signifie que les utilisateurs peuvent choisir le logiciel qu'ils utilisent. 

Les développeurs ne débarqueront pas chez vous avec une arme pour vous forcer à télécharger Bitcoin Core. Si les mineurs adoptent une attitude « comme ça ou rien » pour forcer un changement indésirable sur les utilisateurs, les utilisateurs opteront pour leur propre méthode. 

Ces acteurs ne sont pas des seigneurs tout-puissants : ce sont des prestataires de services. Si les individus décident de ne pas utiliser le réseau, la monnaie perdra de la valeur. La perte de valeur impactera directement les mineurs (leurs récompenses valent moins chers lorsqu'elles sont libellées en dollars). Concernant les développeurs, ceux-ci peuvent tout simplement être ignorés par les utilisateurs.
Comme vous le voyez, il ne s'agit pas d'un logiciel propriétaire. Vous pouvez apporter les modifications que vous voulez , d'autres peuvent exécuter cette nouvelle version du logiciel et à la fin tout le monde peut s'entendre. En faisant ces modifications, vous venez de forker le logiciel et de créer un nouveau réseau.


Qu'est-ce qu'un fork ?

Le fork d'un logiciel se produit lorsque celui-ci est copié et modifié. Le projet original continue de subsister, mais est maintenant distinct du nouveau qui a pris une direction différente. Supposons que les membres de l'équipe du contenu du site web de votre cryptomonnaie préférée aient un désaccord majeur sur la façon de procéder. Une partie de l'équipe peut dupliquer le site en utilisant un nom de domaine différent. Ils posteront ensuite des contenus différents.

Les projets s'appuient sur une base commune et partagent la même histoire. Néanmoins, tout comme une route unique qui se divise en deux, une divergence existe maintenant entre les deux sites.

Notez que ce genre de choses arrive souvent dans les projets open-source et ce, depuis longtemps avant l'apparition des réseaux Bitcoin ou Ethereum. Cependant, la distinction entre un hard fork et soft fork est quant à elle, presque exclusive à l'univers blockchain. Voyons ça ensemble.



Comparaison des Hard forks et des Soft forks

Bien qu'ayant des noms similaires et servant au même but, les hard forks et les soft forks sont sensiblement différents. Voyons ces différences.


Qu'est-ce qu'un Hard fork ?

Les Hard forks sont des mises à jour logicielles n'étant pas rétrocompatibles. Celles-ci se produisent généralement lorsque des nœuds ajoutent de nouvelles règles entrant en conflit avec les règles d'anciens nœuds. Les nouveaux nœuds peuvent uniquement communiquer avec les autres individus utilisant cette version. Il en résulte une division de la blockchain et par conséquent la création de deux réseaux distincts : un employant les anciennes règles, l'autre en employant de nouvelles.

Les nœuds deviennent bleus une fois à jour. Les anciennes noeuds, ici en jaune, refusent la mise à jour pendant que les bleus se connectent entre eux.


Il existe désormais deux réseaux exécutés en parallèle. Ils continueront tous les deux à diffuser les blocs et les transactions, mais ne travaillent désormais plus sur la même blockchain. Tous les nœuds avaient une blockchain identique jusqu'au moment du fork (et cet historique est conservé), mais ils auront des blocs et des transactions différents par la suite.


En raison de cette histoire commune, si vous possédiez des coins avec le fork vous vous retrouverez avec des coins sur les deux réseaux. Supposons que vous possédiez 5 BTC au moment du fork au bloc 600 000. Vous pouvez désormais dépenser ces 5 BTC lors du bloc 600 001 de l'ancienne blockchain, mais ceux-ci ne seront pas dépensés sur le bloc 600 001 de la nouvelle blockchain. En supposant que la cryptographie n'ait pas changé, vos clés privées permettent toujours de détenir cinq coins sur le nouveau réseau. 
Un hard fork bien connu est celui du Bitcoin en 2017. Suite à celui-ci, Bitcoin s'est séparé en deux chaînes : Bitcoin (BTC), la chaîne originale, et Bitcoin Cash (BCH). Ce fork s'est produit après de nombreux débats sur la manière d'améliorer la scalabilité. Les défenseurs de Bitcoin Cash souhaitaient augmenter la taille des blocs, tandis que les défenseurs du Bitcoin s'opposaient à ce changement.

Une augmentation de la taille des blocs nécessite une modification des règles. Cela c'est produit avant le soft fork (plus d'informations seront bientôt fournies à ce sujet) SegWit, les nœuds n'acceptaient donc pas les blocks de moins de 1 Mo. Si vous créez un bloc de 2 Mo valide, les autres nœuds le rejetteront tout de même.

Seuls les nœuds ayant modifié leur logiciel pour autoriser les blocs de plus de 1 Mo pouvaient accepter ces blocs. Bien sûr, cela les rendaient incompatibles avec la version précédente, de sorte que seuls les nœuds ayant les mêmes modifications de protocole pouvaient communiquer.


Qu'est-ce qu'un Soft fork

Un Soft fork est une mise à jour rétrocompatible, les nœuds à jour peuvent toujours communiquer avec les nœuds ne l'étant pas. Ce qu'il se passe généralement dans un Soft fork est l'ajout d'une nouvelle règle n'entrant pas en conflit avec les anciennes.
Par exemple, la réduction de la taille des blocs peut être implémentée avec un Soft fork. Prenons une fois de plus l'exemple du Bitcoin pour illustrer ce point : s'il existe une limite sur la taille maximale d'un bloc, il n'existe à contrario pas de limite sur sa taille minimale. Si vous souhaitez n'accepter que les blocs inférieurs à une certaine taille, il vous suffit simplement de rejeter les blocs de plus grande taille.

Cependant, cela ne vous déconnecte pas automatiquement du réseau. Vous communiquerez toujours avec les nœuds appliquant pas ces règles, mais vous filtrez certaines des informations qu'ils vous transmettent.

Un exemple concret d'un soft fork est le fork Segregated Witness (SegWit) mentionné plus haut, qui s'est produit peu après la scission Bitcoin/Bitcoin Cash. SegWit était une mise à jour ingénieuse modifiant le format des blocs et des transactions. Les anciens nœuds pouvaient encore valider les blocs et les transactions (le formatage ne violait pas les anciennes règles), mais ils ne les comprendraient juste pas. Certains champs ne sont également lisibles que lorsque les nœuds passent au logiciel le plus récent, leur permettant alors d'analyser des données supplémentaires.


Même deux ans après l'activation de SegWit, tous les nœuds n'ont pas été mis à niveau. Il y a des avantages à le faire, mais il n'y a pas vraiment d'urgence, puisqu'il ne s'agit pas d'un changement ayant un impact sur le réseau.


Comparaison des Hard forks et des Soft forks, lequel est le mieux ?

Fondamentalement, ces types de fork servent des objectifs différents. Des hard forks controversés peuvent diviser une communauté. À l'inverse, des hard forks planifiés donnent la liberté à tous de pouvoir modifier le logiciel avec l'accord de tous les membres.

Les Softs forks constituent une option plus douce. En général, vous êtes plus limité dans ce que vous pouvez faire, car vos nouvelles modifications ne peuvent pas entrer en conflit avec les anciennes règles. Cela dit, si votre mise à jour peut être conçue de manière à rester compatible, vous n'avez pas à vous soucier de la fragmentation du réseau.


Pour conclure

Les Hard forks et les Soft forks sont essentiels au succès à long terme des réseaux blockchain. Ils nous permettent d'effectuer des changements et des mises à niveau dans des systèmes décentralisés, malgré l'absence d'une autorité centrale.

Les forks permettent aux blockchains et aux cryptomonnaies d'intégrer de nouvelles fonctionnalités au fur et à mesure de leur développement. Sans ces mécanismes, nous aurions besoin d'un système centralisé avec un contrôle descendant. Le cas échéant, nous serions coincés avec les mêmes règles pendant toute la durée de vie d'un protocole.