Dans le monde des cryptomonnaies, un hard fork (« embranchement dur ») est un embranchement de la chaîne de blocs causé par une modification des règles de consensus. Par extension, le terme sert également à désigner tout changement non rétrocompatible du protocole susceptible de causer une duplication permanente de la chaîne.

Un soft fork (« embranchement doux ») est une modification rétrocompatible des règles de consensus, qui ne cause pas de séparation si elle est appliquée par une majorité de la puissance de validation. Le soft fork est essentiellement restrictif (ajout de nouvelles règles).

Dans cet article, nous nous concentrerons sur les forks liés aux modifications des règles de consensus. Il existe en effet un autre type de fork dont nous ne parlerons pas ici : le fork commun, qui n'est pas lié à un tel changement et qui est simplement causé par un conflits entre blocs. Si vous souhaitez en savoir plus là-dessus, nous vous recommandons de lire notre article qui traite du sujet : Qu'est-ce qu'un fork ?

 

Que sont les règles de consensus ?

Toute cryptomonnaie fonctionne grâce à un protocole, c'est-à-dire un ensemble de règles de communication permettant d'arriver à un accord de manière décentralisée. Les règles composant ce protocole sont appelées règles de consensus. Dans le cas d'une chaîne de blocs, elles servent à définir la validité des transactions et des blocs.

Par exemple, les règles suivantes sont utilisées dans Bitcoin (BTC) :

  • Le montant en entrée d'une transaction doit être supérieur (ou égal) au montant en sortie.
  • La poids des blocs est limité à 4 millions d'unités de poids, telles que définies par SegWit. Cela autorise Bitcoin à avoir une capacité transactionnelle allant de 5 à 15 transactions par seconde.
  • Chaque bloc doit comporter une preuve de travail, produite par hachages répétés de l'entête par la fonction SHA-256.
  • La création de nouveaux bitcoins par bloc est restreinte par une certaine limite, qui est actuellement de 6,25 bitcoins par bloc.
  • La difficulté du minage est ajustée tous les 2016 blocs (2 semaines environ), de sorte à garantir un temps moyen de 10 minutes entre chaque bloc.
  • La limite de nouveaux bitcoins pouvant être créés est réduite de moitié tous les 210 000 blocs (soit à peu près tous les 4 ans), de façon à ce qu'il n'existe pas plus de 21 millions de bitcoins.

Si ces règles doivent rester constantes à court terme, elles peuvent changer sur la durée. C'est ici qu'interviennent les hard forks et les soft forks.

 

Qu'est-ce qu'un hard fork ?

Un hard fork (qu'on peut traduire littéralement par « embranchement dur » en français) est un embranchement de la chaîne de blocs causé par une divergence des règles de consensus.

Par métonymie, le hard fork désigne aussi (et souvent) une modification non rétrocompatible du protocole susceptible de provoquer un tel embranchement. On a généralement deux branches : l'une suivant les anciennes règles et l'autre suivant les nouvelles.

Hard fork anciennes et nouvelles règles de consensus

Un hard fork peut être extensif et correspondre à un élargissement des règles de consensus : l'augmentation de la taille limite des blocs sur Bitcoin par exemple. Mais il peut aussi être bilatéral en créant une incompatibilité totale entre les nouvelles règles et les anciennes : le changement de l'algorithme de signature des transactions par exemple.

Mis à part le cas des accidents (vite résolus), les hard forks peuvent être divisés en deux catégories.

La première catégorie est celle des mises à niveau. Il s'agit d'une modification du protocole qui est quasi unanimement acceptée par l'ensemble des acteurs impliqués dans la cryptomonnaie (développeurs, validateurs, utilisateurs). Dans ce cas, seule la chaîne appliquant les nouvelles règles survit et l'autre meurt par désintérêt : le résultat est donc généralement linéaire et ne cause pas de réel embranchement.

De tels hard forks de mise à niveau sont légion dans le monde des crypto-monnaies. Le premier hard fork de mise à niveau connu est probablement l'ajout par Satoshi Nakamoto des codes opération OP_NOP à la version 0.3.6 de Bitcoin en juillet 2010. Bitcoin a également subi un hard fork en 2013 dû à la migration du système de base de données de Berkeley DB à LevelDB.

Même si BTC est aujourd'hui mis à jour par soft fork, de nombreuses autres projets recourent au hard fork pour évoluer. Ethereum peut ainsi être mis à niveau plusieurs fois dans l'année de cette manière. La méthode est également utilisée de manière régulière par Bitcoin Cash et Monero.

La deuxième catégorie est celle des hard forks contentieux. Cette situation se produit lorsqu'une communauté est en profond désaccord sur les changements de règles à adopter. Cela aboutit généralement à la survie de deux chaînes de blocs distinctes et à la séparation des utilisateurs en deux camps. Tout est ainsi dédoublé : on a affaire à deux protocoles, deux réseaux, deux chaînes, deux ensembles de développeurs, validateurs et utilisateurs.

Le premier exemple de hard fork contentieux est celui qui a eu lieu en Ethereum (ETH) et Ethereum Classic (ETC) en juin 2016, dans le contexte du piratage de TheDAO. Ce piratage a permis à quelqu'un de s'emparer de 3,6 millions d'éthers (150 millions de dollars à l'époque), ce qui a conduit les meneurs de la communauté (dont Vitalik Buterin) à décider d'annuler purement et simplement ce vol par la modification de l'état du système (hard fork). Une portion plus petite de la communauté s'est opposée à ce changement, et la chaîne originelle a ainsi survécu. Puisque la majorité économique se trouvait du côté de l'annulation, la chaîne altérée a gardé le nom d'Ethereum, tandis que l'autre chaîne a pris le nom d'Ethereum Classic.

Hard fork scission ethereum eth ethereum classic etc

Le hard fork contentieux le plus connu est celui qui s'est produit entre Bitcoin (BTC) et Bitcoin Cash (BCH) en août 2017, à la suite du débat sur la scalabilité de Bitcoin qui a duré pendant des années. Ce hard fork concernait la taille limite des blocs. Alors de 1 Mo sur Bitcoin, cette limite empêchait toutes les transactions d'être traitées par le réseau en temps voulu, ce qui allongeait les temps de confirmation et faisait augmenter les frais de transaction (cette situation se reproduit régulièrement sur le réseau Bitcoin). C'est pourquoi Bitcoin Cash a été créé : en augmentant la taille limite à 8 Mo par un hard fork (puis à 32 Mo par la suite), la cryptomonnaie a pu augmenter sa capacité transactionnelle. Cette méthode de passage à l'échelle n'étant pas privilégié par la majorité économique, la chaîne qui ne modifiait pas les règles a pu conserver le nom de Bitcoin, tandis que la nouvelle chaîne a dû adopter un nouveau nom : Bitcoin Cash.

Hard fork scission bitcoin btc bitcoin cash bch

 

Qu'est-ce qu'un soft fork ?

Un soft fork est une modification rétrocompatible (ou postcompatible à proprement parler) des règles de consensus, dans le sens où les nœuds suivant les anciennes règles continuent de voir les blocs produits comme valides et restent donc connectés au réseau. Il s'agit essentiellement d'une restriction du protocole : des transactions et des blocs anciennement valides deviennent invalides. Un illustration typique de soft fork est la réduction de la taille des blocs (de 1 Mo à 300 ko par exemple) : les anciens nœuds voient les petits blocs comme valides alors même que la règle qu'ils appliquent (limite à 1 Mo) est plus large.

Le soft fork est souvent préféré au hard fork pour mettre à niveau le protocole en raison de son caractère optionnel pour les nœuds non miniers, qui permet de ne pas altérer l'effet de réseau de la crypto-monnaie. C'est aujourd'hui la méthode privilégiée pour améliorer Bitcoin (BTC).

S'il n'est pas suivi par plus de la moitié la puissance de validation (puissance de hachage dans le cas de la preuve de travail, jetons mis en jeu dans le cas de la preuve d'enjeu), le soft fork est susceptible de provoquer un embranchement permanent de la chaîne. En effet, selon le principe de la chaîne la plus longue, les nœuds appliquant les anciennes règles pourraient suivre une chaîne jugée comme invalide par les nœuds appliquant les nouvelles règles, d'où la création de deux chaînes distinctes.

Par exemple, l'application d'une diminution de taille limite des blocs à 300 ko conduirait à l'embranchement de la chaîne en deux chaînes : le première, plus longue, suivant l'ancienne règle ; la seconde, plus courte, appliquant la nouvelle règle.

Soft fork embranchement taille des blocs 300 ko

C'est pour cette raison qu'il est courant de procéder à ce qu'on appelle un soft fork activé par les mineurs (en anglais miner activated soft fork ou MASF), plutôt qu'à un soft fork activé par les utilisateurs (en anglais user activated soft fork ou UASF). L'UASF consiste à implémenter le soft fork dans le code source du logiciel de sorte à ce qu'il rentre en application à une date et une heure prédéfinies. Le MASF consiste à faire dépendre l'activation du signalement des mineurs qui inscrivent leur accord dans un champ spécifique du bloc (voir BIP-9) : le soft fork est donc activé lorsqu'une certaine proportion de la puissance de calcul (95 % généralement) a donné son accord sur une période donnée, ce qui permet d'éviter une séparation.

Comme on l'a dit, les soft forks sont notamment utilisés pour mettre à niveau le protocole Bitcoin. Ce dernier a donc connu de nombreux soft forks au cours de son histoire.

L'un des premiers soft forks a été la limitation explicite de la taille des blocs à 1 Mo, rentrée en application en octobre 2010. Ce soft fork était un UASF, ayant été programmé par Satoshi Nakamoto pour être activé à une date précise.

L'ajout de P2SH (Pay-to-Script-Hash) en 2012 a constitué le premier MASF. Le but de cette mise à niveau était de rendre plus facile l'usage des smart contracts sur Bitcoin.

Enfin l'un des soft forks les plus connus est probablement SegWit, appliqué le 24 août 2017, qui permettait, entre autres, de corriger la malléabilité des transactions et d'augmenter légèrement la capacité transactionnelle de Bitcoin. Il s'agissait également d'un MASF, même s'il aurait potentiellement pu être un UASF.

 

Avantages et inconvénients des deux méthodes

Le hard fork et le soft fork constituent donc deux méthodes pour mettre à niveau un protocole gérant une cryptomonnaie. Les deux méthodes ont des avantages et des inconvénients différents qu'il convient d'évoquer.

Hard fork Soft fork
Simplicité : la mise à niveau peut implémenter les améliorations de façon logique et ordonné de façon à ne pas compliquer les choses. Complexité : le soft fork étant restrictif, la mise à niveau requiert souvent l'ajout de nouvelles exceptions pour implémenter les changements (P2SH, CLTV/CSV, SegWit).
Caractère obligatoire de la mise à niveau qui requiert que tous les nœuds du réseau se synchronisent : cela conduit la plupart à l'expulsion des nœuds qui ne se mettent pas à jour. Caractère optionnel de la mise à niveau permettant aux nœuds non miniers de se mettre à jour progressivement.
➖  Forte probabilité d'embranchement de la chaîne. Probabilité faible d'embranchement de la chaîne si le soft fork est signalé par la majorité des validateurs.
Clarté du consentement : un hard fork est toujours consenti s'il est adopté. Ambiguïté du consement : un soft fork peut être « forcé », c'est-à-dire imposé par la majorité des validateurs, sans que les utilisateurs ne puissent réagir, hormis procéder à un hard fork. Le soft fork est en cela indiscernable de la censure des transactions.

Un grand merci à Marco pour sa contribution à cet article !

Cet article vous a aidé ❤ ? N'hésitez pas à nous le faire savoir en attribuant une note sur 5 ou en nous laissant un commentaire 🙂

Avis des lecteurs
[Total : 10   Moyenne : 4.9/5]

A propos de l'auteur : Ludovic Lars

twitter-soothsayerdatatwitter-soothsayerdata

Je suis fasciné par les cryptomonnaies et par l’impact qu’elles pourraient avoir sur nos vies. De formation scientifique, je m’attache à décrire leur fonctionnement technique de la façon la plus fidèle possible. Sur Cryptoast, je me propose de vous aider à mieux comprendre comment fonctionnent les cryptomonnaies (principalement Bitcoin, Bitcoin Cash et Ethereum) et quels sont les enjeux qui animent cet écosystème fascinant. La tâche n’est pas facile : je ne prétends pas être un expert et j’apprends moi-même tous les jours de nouvelles choses sur le sujet.
Tous les articles de Ludovic Lars.

guest
1 Commentaire
Inline Feedbacks
View all comments
ghalilo

bien à savoir .. et cela explique la chute des prix en forex qui suit les hard fork