Quelle est la différence entre un hard fork et un soft fork ?

Accueil/Fonctionnement de Bitcoin/Quelle est la différence entre un hard fork et un soft fork ?

Fonctionnement de Bitcoin

Quelle est la différence entre un hard fork et un soft fork ?

Le terme de « fork » peut être traduit par « embranchement » en français. Cela désigne toute forme de division du réseau de nœuds Bitcoin en différents groupes. Un fork se matérialise par la production de blocs différents à une même hauteur. Toutefois, on utilise également ce terme pour désigner les changements opérés sur les règles du protocole Bitcoin, c’est-à-dire au niveau du consensus. On peut ainsi catégoriser les forks en fonction de leurs natures, de leurs objectifs et de leurs finalités sur la blockchain Bitcoin.

Dans cet article, nous vous expliquons quels sont les différents types de forks sur Bitcoin. Nous étudions notamment les différences entre les soft forks et les hard forks.

Qu’est-ce qu’un embranchement naturel ?

Dans un précédent article, je vous ai parlé des divisions naturelles de la blockchain Bitcoin. Ces divisions sont une forme de fork. Elles adviennent lorsque deux mineurs trouvent des blocs différents à la même hauteur dans un court intervalle de temps. Une partie des nœuds du réseau sont sur la chaîne avec le bloc A, et l’autre partie sur la chaîne avec le bloc B. Dès qu’un bloc supplémentaire est trouvé, tous les nœuds se synchronisent de nouveau sur une seule et unique chaîne. C’est ce que l’on appelle une réorganisation.

Ce type de fork est parfaitement naturel sur Bitcoin. Ce n’est pas un embranchement définitif puisque le réseau se réunit de nouveau lors de la réorganisation. Ces divisions naturelles peuvent tout de même être catégorisées comme des « forks », car un embranchement temporaire de la blockchain se produit bien.

Qu’est-ce qu’un fork du code de Bitcoin ?

Il existe différentes implémentations de nœuds Bitcoin. La plus utilisée à ce jour est Bitcoin Core. Ces logiciels sont constitués de code, souvent open-source, que l’on peut librement consulter en ligne. Il est donc possible de copier le code de Bitcoin Core, de le modifier à notre guise, et de lancer notre propre protocole de cryptomonnaie.

Dans le domaine de la programmation, on emploie généralement des plateformes de développement de logiciels qui utilisent Git pour le contrôle de version, comme GitHub ou GitLab par exemple. Sur ces plateformes, un « fork » est une copie d'un dépôt que l’on peut mettre sur notre propre compte afin d’y faire des modifications sans affecter le dépôt original.

On utilise donc également ce terme de « fork » pour désigner les différentes copies du code de Bitcoin utilisées pour construire une toute nouvelle cryptomonnaie, en repartant du bloc de Genèse. Par exemple, la cryptomonnaie Litecoin est un fork du code de Bitcoin, mais elle n’a aucun bloc en commun avec ce dernier. 

Qu’est-ce qu’un hard fork sur Bitcoin ?

Le hard fork se caractérise également par une modification du code du protocole Bitcoin. Contrairement à la catégorie de fork précédente, le hard fork ne repart pas du bloc de Genèse, mais il vient s’embrancher directement sur la blockchain actuelle. Il conserve donc un historique en commun avec le protocole original.

Par exemple, la cryptomonnaie Bitcoin Cash (BCH) est un hard fork de Bitcoin. L’embranchement a eu lieu au bloc n° 478 559 le 1ᵉʳ août 2017. Avant ce bloc, l’historique entre Bitcoin (BTC) et Bitcoin Cash (BCH) est commun.

La modification des règles sur un hard fork produit une séparation définitive du réseau de nœuds en deux groupes distincts. Il y aura le groupe qui a mis en place cette modification, et le groupe qui ne l’a pas fait. Chaque groupe disposera de sa propre chaîne indépendante, mais avec un historique commun. Contrairement à un soft fork, le hard fork résulte d’une modification du code non rétrocompatible. Pour que cette séparation ait lieu, il faut donc que le nouveau code ajouté vienne supprimer certaines des règles existantes, ou bien rendre les règles du protocole moins restrictives.

Par exemple, si je fais une modification du code pour faire passer la taille des blocs Bitcoin de 1 Mo à 8 Mo, alors je suis en train de rendre les règles du protocole moins restrictives. Je fais donc un hard fork. En effet, les nœuds qui sont sur le protocole original avec une limite à 1 Mo ne vont pas accepter mes blocs à 8 Mo puisqu’ils dépassent les règles qu’ils ont spécifiées. Les nœuds qui me suivront dans ma modification vont ainsi se séparer du réseau original.

En somme, un hard fork est simplement l’action de venir modifier le protocole Bitcoin de telle sorte qu’il devienne un « Bitcoin bis ». Si ce Bitcoin bis rencontre un consensus, alors on le considère comme le remplaçant du Bitcoin original. En revanche, si Bitcoin bis ne reste utilisé qu’en marge, alors il devient uniquement un altcoin indépendant du Bitcoin original.

Qu’est-ce qu’un soft fork sur Bitcoin ?

Le soft fork se caractérise également par une modification du code du protocole Bitcoin. Mais contrairement au hard fork, cette modification est rétrocompatible. Cela veut dire que le soft fork va essentiellement ajouter de nouvelles règles, ou bien rendre les règles actuelles plus restrictives. Ce mécanisme de modification permet de ne pas produire de séparation au niveau des nœuds Bitcoin.

Par exemple, si l’on décide de diminuer la taille maximale des blocs sur Bitcoin, en passant de 1 000 Ko à seulement 500 Ko, alors on rend les règles plus restrictives. Les nœuds à jour ne vont plus qu’accepter des blocs inférieurs à 500 Ko. Lorsqu’un vieux nœud, qui n’a pas fait la mise à jour, reçoit un bloc de 500 Ko provenant d’un nœud à jour, il l'accepte. En effet, si le vieux nœud accepte un bloc jusqu’à 1 000 Ko, alors les nouveaux blocs de 500 Ko entrent forcément dans cette règle. Tous les nœuds n’ayant pas fait la mise à jour pourront rester synchronisés avec le réseau Bitcoin, car les nouvelles règles sont davantage restrictives. C’est donc bien un soft fork.

Il existe tout de même un cas spécifique pour lequel le soft fork peut provoquer un embranchement de la blockchain. En effet, si les mineurs n’ayant pas mis à jour leur client disposent de plus de 50 % de la puissance de calcul du réseau, alors les vieux nœuds suivront une chaîne qui ne sera pas acceptée par les nœuds à jour. Il y aura donc un embranchement qui pourra persister tant que la chaîne avec les anciennes règles dispose de plus de travail accumulé que la chaîne avec les nouvelles règles.

C’est pour cela que dans un processus de développement sain, on demande aux mineurs de se prononcer sur leur acceptation du soft fork avant de l’appliquer. De cette manière, on peut s’assurer qu’une majorité d’entre eux sont prêts à miner sur la chaîne à jour afin d’éviter l’embranchement lors d’un soft fork.

➤ En savoir plus sur le minage et la preuve de travail sur Bitcoin.

Quel type de fork utilise-t-on sur Bitcoin ?

Contrairement à la majorité des altcoins, dans le processus de développement de Bitcoin, on préfère largement recourir aux soft forks lorsque l’on souhaite faire des modifications du consensus. Cela permet aux vieux nœuds de toujours pouvoir rester synchronisés avec les nœuds à jour. On ne perd ainsi personne en chemin.

Ainsi, de nombreux soft forks ont déjà été effectués dans le passé. Parmi les plus connus, il y a eu SegWit, activé en 2017, ou encore Taproot, qui date de 2021. En dehors des hard forks intentionnels comme Bitcoin Cash, nous avons également connu quelques hard forks dans le processus de développement. Ceux-ci sont soit arrivés par inadvertance, soit pour rectifier rapidement des bugs majeurs.

Techniquement, il est possible d’adapter presque toute modification du protocole pour la faire passer sous forme de soft fork. La mise à jour SegWit en a été l’exemple parfait, car elle a permis une augmentation de la taille des blocs de Bitcoin sans pour autant produire de hard forks.

➤ Découvrir qui contrôle les mises à jour du protocole Bitcoin.

Conclusion

Vous l’aurez compris, le terme de « fork » désigne de nombreux concepts différents sur Bitcoin. On l’emploie soit pour désigner une séparation du réseau, soit pour désigner une modification des règles du protocole, soit les deux simultanément.

📌 Pour résumer, il existe quatre grandes sortes de forks sur Bitcoin : 

  • Si la chaîne se sépare naturellement alors qu’il n’y a eu aucune modification des règles, alors c’est un embranchement naturel. La blockchain se réunira spontanément lors d’une réorganisation ;

  • Si une personne reprend le code source de Bitcoin, et créée une toute nouvelle crypto en partant du bloc zéro, alors c’est un fork du code ;

  • Si l’on modifie le protocole Bitcoin de manière non rétrocompatible, alors c’est un hard fork. La blockchain se sépare en deux, mais elle conserve un historique commun ;

  • Si l’on modifie le protocole Bitcoin de manière rétrocompatible, alors c’est un soft fork et la chaîne ne se sépare pas (sauf exception).

La différence fondamentale entre un hard fork et un soft fork est que le premier retire des règles, ou bien assouplie celles déjà existantes, alors que le second ajoute des règles, ou bien rend plus restrictives celles existantes. Le hard fork casse les règles du consensus, alors que le soft fork ne casse rien. La conséquence de cela est que le hard fork produit une division permanente du réseau. Le soft fork, lui, conserve l’unité du réseau de nœuds Bitcoin, sous condition que les mineurs à jour disposent de plus de 50 % de la puissance de calcul du réseau.

Vous avez aimé cet article ?

Inscrivez-vous à notre newsletter pour recevoir les prochaines publications.

Ces articles pourraient vous plaire

Découvrez les derniers articles publiés.

Envie de lancer votre épargne en Bitcoin ?

Découvrez Bitstack, l’application la plus simple d'Europe pour investir dans le Bitcoin !

Télécharger Bitstack