Réponses>Découvrez les principes fondamentaux de la sécurité de la blockchain>Qu'est-ce qu'un fork ?
Qu'est-ce qu'une fourche de chaîne ?
// Tags
fork de chaînefork dursoft fork
En bref : un « fork » de chaîne se produit lorsque les règles du protocole d’une blockchain divergent, créant ainsi deux ou plusieurs chemins potentiels que la chaîne peut suivre. Les « soft forks » introduisent des modifications de règles rétrocompatibles qui renforcent les règles existantes ; ainsi, les nœuds non mis à jour continuent d’accepter les nouveaux blocs et le réseau reste unifié. Les « hard forks » introduisent des changements non rétrocompatibles, ce qui signifie que les nœuds mis à jour et ceux qui ne le sont pas suivent des règles différentes, et que la chaîne se scinde définitivement en deux réseaux distincts si tout le monde ne procède pas à la mise à jour. Les bifurcations constituent le principal mécanisme par lequel les blockchains évoluent, se mettent à jour et résolvent les désaccords au sein de la communauté, mais elles engendrent également des risques liés à la duplication d’actifs, aux attaques par rejeu et à la fragmentation de l’écosystème.
L'explication simple
Considérez une bifurcation de blockchain comme un embranchement routier. Tout le monde empruntait le même chemin, en respectant les mêmes règles. À l’embranchement, un nouvel ensemble de règles est proposé. Si le changement est rétrocompatible (une « soft fork »), chacun peut continuer sur la même route, qu’il adopte ou non les nouvelles règles. La route se rétrécit légèrement (règles plus strictes), mais tous les voyageurs peuvent toujours l’emprunter. Si le changement n’est pas rétrocompatible (un « hard fork »), la route se divise en deux chemins distincts. Les voyageurs doivent choisir quel chemin suivre, et ceux qui empruntent des chemins différents ne peuvent plus interagir entre eux.
Dans le contexte de la blockchain, le terme « règles » désigne le protocole de consensus : quelles transactions sont valides, comment les blocs sont structurés, quelle est la taille maximale d’un bloc, comment le « gas » est calculé, comment les récompenses sont distribuées. Chaque nœud du réseau applique ces règles lors de la validation des blocs. Lorsque les règles changent, les nœuds qui ont adopté les nouvelles règles et ceux qui continuent d’utiliser les anciennes peuvent ne pas s’accorder sur la validité des blocs. La manière dont ce désaccord est résolu détermine si la bifurcation est une « soft fork » (le réseau reste unifié) ou une « hard fork » (le réseau se scinde).
Soft forks
Un « soft fork » renforce les règles existantes. Les blocs valides selon les nouvelles règles le sont également selon les anciennes, mais certains blocs qui étaient valides selon les anciennes règles ne le sont plus selon les nouvelles. Cela signifie que les nœuds mis à jour appliquent une validation plus stricte, tandis que les nœuds non mis à jour continuent d'accepter les nouveaux blocs, car ceux-ci ne contreviennent pas aux anciennes règles.
BitcoinLa mise à jour « Segregated Witness » (SegWit) de 2017 est l'exemple classique d'un « soft fork ». SegWit a modifié la manière dont les signatures des transactions étaient stockées, réduisant ainsi la taille effective des transactions et permettant la mise en place du Lightning Network. Les nœuds non mis à jour acceptaient toujours les blocs SegWit, car ceux-ci étaient valides selon les anciennes règles de limitation de taille. Les nœuds mis à jour appliquaient des règles supplémentaires concernant l'organisation des données de signature, mais cela restait invisible pour les anciens nœuds.
Les « soft forks » sont généralement considérés comme plus sûrs que les « hard forks », car ils ne risquent pas de diviser la chaîne. Tant qu’une majorité de mineurs ou de validateurs adopte les nouvelles règles, la chaîne reste unifiée. Les nœuds non mis à jour peuvent ne pas comprendre ou valider les nouvelles fonctionnalités, mais ils ne rejettent pas les blocs, de sorte que le réseau reste une chaîne unique. L'inconvénient des « soft forks » est qu'ils sont limités dans ce qu'ils peuvent accomplir. Comme les nouvelles règles doivent être rétrocompatibles, les changements fondamentaux du protocole (tels que la modification de la structure des blocs, du modèle de compte ou du mécanisme de consensus) sont généralement impossibles à mettre en œuvre sous forme de « soft forks ».
Hard forks
Un « hard fork » assouplit ou modifie fondamentalement les règles, rendant les nouveaux blocs invalides selon les anciennes règles. Les nœuds qui n’ont pas été mis à jour rejettent les nouveaux blocs, et le réseau se scinde en deux chaînes : l’une suivant les nouvelles règles et l’autre les anciennes. Les deux chaînes partagent le même historique jusqu’au point de bifurcation et divergent à partir de ce point.
La plupart des « hard forks » sont des mises à jour planifiées et coordonnées, dans le cadre desquelles l’ensemble de la communauté accepte d’adopter les nouvelles règles. Le passage d’ Ethereum de la « Proof of Work » à la « Proof of Stake » (The Merge, septembre 2022) a constitué un « hard fork ». Tous les opérateurs de nœuds, fournisseurs de staking, plateformes d'échange et développeurs d'applications se sont coordonnés pour mettre à jour leur logiciel avant le bloc désigné. La communauté étant unie, l'ancienne chaîne « Proof of Work » (brièvement commercialisée sous le nom d'« EthereumPoW ») n'a bénéficié que d'un soutien minime et est rapidement tombée en désuétude.
EthereumLes mises à jour régulières du réseau (Shanghai, Dencun et autres) constituent également des « hard forks », activés à des numéros de blocs ou à des horodatages prédéterminés. L'ensemble de l'écosystème est mis à jour à l'avance, et les anciennes règles sont abandonnées. Ces « hard forks » coordonnés relèvent de la maintenance courante et ne constituent pas des événements controversés.
Hard forks controversés
Les bifurcations les plus spectaculaires surviennent lorsque la communauté ne parvient pas à s'accorder sur l'orientation du protocole et que les deux camps bénéficient d'un soutien suffisant pour maintenir une chaîne indépendante. Ces « hard forks » conflictuels donnent naissance à deux blockchains actives, chacune dotée de sa propre communauté, de ses mineurs/validateurs, de la valeur de son token et de son equipe de développement.
Le fork controversé le plus célèbre est celui d’ Ethereum Classic. En 2016, une faille dans le contrat intelligent de The DAO a été exploitée, entraînant le détournement de millions de dollars en ETH. La communauté d’ Ethereum a débattu de l’opportunité de procéder à un hard fork pour annuler ce vol. La majorité s’est prononcée en faveur du fork, créant ainsi une nouvelle chaîne (aujourd’hui Ethereum) sur laquelle les fonds volés ont été restitués. Une minorité a rejeté le fork pour des raisons philosophiques (en faisant valoir que « le code fait loi » et que la blockchain ne devrait jamais être modifiée rétroactivement), et a continué à exploiter la chaîne d’origine, qui est devenue l’ Ethereum Classic (ETC). Les deux chaînes coexistent encore aujourd’hui, Ethereum étant de loin la plus importante et la plus valorisée.
Bitcoin Cash est un autre fork très controversé. En 2017, la communauté d’ Bitcoin a débattu de la manière d’augmenter le débit des transactions. Une faction était favorable à l’augmentation de la taille des blocs de 1 Mo à 8 Mo. Une autre faction s’opposait à l’augmentation de la taille des blocs, préférant le soft fork SegWit et des solutions de scalabilité hors chaîne telles que le Lightning Network. Le désaccord était irréconciliable et, en août 2017, le camp des partisans des gros blocs a procédé à un fork d’ Bitcoin , donnant naissance à Bitcoin Cash (BCH). Le BCH a ensuite connu un nouveau fork en 2018, se scindant en Bitcoin Cash et Bitcoin SV.
Que se passe-t-il lors d'un fork ?
Lorsqu’un « hard fork » se produit, chaque détenteur de la cryptomonnaie d’origine se retrouve soudainement en possession du même montant sur les deux chaînes. Si vous déteniez 10 ETH avant la scission entre Ethereum etEthereum Classic, vous disposiez de 10 ETH sur la nouvelle chaîne et de 10 ETC sur l’ancienne. Cette duplication des actifs peut entraîner une complexité économique, notamment des attaques par rejeu, dans lesquelles une transaction valide sur une chaîne est rediffusée sur l’autre chaîne.
Pour les développeurs, un fork implique de choisir la chaîne à prendre en charge (ou de décider de prendre en charge les deux), de mettre à jour le logiciel des nœuds, de vérifier que les contrats intelligents fonctionnent correctement selon les nouvelles règles et de communiquer ces changements aux utilisateurs. Pour les opérateurs de nœuds, un fork nécessite de mettre à niveau le logiciel client avant le bloc du fork afin de suivre la chaîne prévue. Les nœuds qui ne sont pas mis à niveau restent sur l'ancienne chaîne, diffusent des données obsolètes et risquent de provoquer des dysfonctionnements dans les applications.
Quelle est la différence entre un « soft fork » et un « hard fork » ?
La principale différence réside dans la rétrocompatibilité. Un « soft fork » renforce les règles d’une manière que les anciens logiciels acceptent encore, ce qui permet au réseau de rester une seule et même chaîne. Un « hard fork » modifie les règles d’une manière que les anciens logiciels rejettent, ce qui peut diviser le réseau en deux chaînes. Le tableau ci-dessous compare les deux concepts côte à côte.
Attribut
Soft fork
Hard fork
Modification du règlement
Renforce les règles existantes
Assouplit ou redéfinit les règles
Rétrocompatible
Oui
Non
Nœuds non mis à niveau
Accepte toujours de nouveaux blocs
Refuser les nouveaux blocs
Résultat en chaîne
Le réseau reste unifié
Le réseau peut se scinder en deux chaînes
Nouvel actif créé
Non
Oui, les détenteurs reçoivent des jetons sur les deux chaînes
Exemple
Bitcoin SegWit (2017)
The Merge, « Ethereum Classic » : une séparation
Ces deux types de « fork » constituent le moyen par lequel une blockchain évolue au fil du temps. Les « soft forks » présentent moins de risques mais ont une portée limitée, tandis que les « hard forks » permettent d'apporter des modifications plus profondes au protocole, au prix d'une mise à jour obligatoire et synchronisée de tous les participants.
Qu'est-ce qu'un fork accidentel ou temporaire ?
Toutes les bifurcations ne constituent pas nécessairement une modification délibérée du protocole. Des bifurcations accidentelles se produisent lorsque deux validateurs produisent des blocs concurrents presque simultanément, ce qui entraîne une brève division du réseau quant au bloc qui prolonge la chaîne. Le réseau résout ce problème en l'espace d'un ou deux blocs en convergeant vers la chaîne valide la plus lourde, et le bloc orphelin est écarté. Cette division de courte durée est étroitement liée à une réorganisation de la blockchain.
Ces bifurcations temporaires sont normales et généralement invisibles pour les utilisateurs, mais les applications qui considèrent les blocs non confirmés comme validés peuvent afficher des transactions qui disparaîtront par la suite. Attendre la finalité avant de considérer les fonds comme définitivement acquis constitue la mesure de protection standard contre toute action sur un bloc qui serait supprimé lors d'une réorganisation.
Qu'est-ce qu'une attaque par rejeu lors d'un fork ?
Lorsqu’un hard fork crée deux chaînes partageant un historique commun, une transaction signée pour l’une des chaînes peut également être valide sur l’autre, car le compte, le solde et le schéma de signature sont identiques au point de scission. Un attaquant peut rediffuser (rejouer) votre transaction sur la deuxième chaîne afin de transférer des fonds que vous n’aviez pas l’intention de transférer. Les forks bien gérés intègrent une protection contre la relecture, telle qu’un identifiant de chaîne unique, de sorte qu’une transaction ne soit valide que sur le réseau auquel elle est destinée. Les opérateurs de portefeuilles et de nœuds doivent s’assurer que la protection contre la relecture est bien en place avant d’effectuer des transactions après une scission controversée.
Comment les développeurs se préparent-ils à une bifurcation de la blockchain ?
La préparation d'un fork planifié repose principalement sur le choix du moment opportun et la réalisation de tests. La liste de contrôle ci-dessous présente les étapes que la plupart des équipes suivent avant un hard fork programmé.
Étape
Que faire ?
Pourquoi est-ce important ?
Suivre le calendrier
Notez le bloc de bifurcation ou l'horodatage
Si vous ratez ça, vous restez avec l'ancienne chaîne
Mettre à jour les clients
Mettez à jour le logiciel du nœud au préalable
Les anciens clients refusent les nouveaux blocs
Test sur testnet
Vérifier la conformité des contrats aux nouvelles règles
Détecte rapidement les modifications qui entraînent des incompatibilités
Vérifier la protection contre la lecture ultérieure
Vérifier que l'identifiant de la chaîne est unique
Empêche la relecture inter-chaînes
Utiliser une infrastructure gérée
Confier les mises à niveau à un prestataire
Élimine les points de défaillance uniques
Les équipes qui s'appuient sur le RPC géré évitent la majeure partie de ce travail, car le fournisseur met à niveau les nœuds avant leur activation. Pour les applications pilotées par les événements, Webhooks et Streams fournissent des données post-fork sans gestion manuelle des clients.
Foire aux questions
Est-ce qu'on reçoit des pièces gratuites lors d'un hard fork ?
Si un « hard fork » donne naissance à une deuxième chaîne persistante, les détenteurs de l’actif d’origine conservent un solde équivalent sur la nouvelle chaîne au moment du fork. C’est ainsi que les détenteurs d’ Ethereum Classic et d’ Bitcoin Cash ont reçu leurs pièces. Le nouvel actif n’a de valeur que si la chaîne issue du fork bénéficie d’un véritable soutien de la communauté et du marché, ce qui n’est jamais le cas pour la plupart des forks.
Qu'est-ce qui est le plus sûr : un soft fork ou un hard fork ?
Les « soft forks » présentent généralement moins de risques, car elles préservent l'unité du réseau et n'exigent pas que tous les participants effectuent la mise à jour simultanément. Les « hard forks » sont plus puissantes mais plus risquées, car les nœuds qui ne parviennent pas à effectuer la mise à jour se retrouvent bloqués sur l'ancienne chaîne, et les scissions controversées peuvent fragmenter la communauté.
Quelle est la différence entre un « fork » et une « reorg » ?
Une « fork » correspond à une divergence au niveau des règles du protocole ou de l'historique de la chaîne, tandis qu'une « reorg » consiste, pour le réseau, à remplacer des blocs récemment ajoutés par une branche concurrente. Une « fork » accidentelle de courte durée est résolue par une « reorg », tandis qu'une « hard fork » est un changement permanent des règles pouvant donner naissance à deux chaînes distinctes et durables.
Une bifurcation de la blockchain peut-elle être annulée ?
Un hard fork planifié ou controversé devient définitif dès lors que les deux chaînes bénéficient d'un soutien indépendant, car chaque réseau continue de produire des blocs selon ses propres règles. Les forks accidentels, en revanche, se résolvent automatiquement en l'espace d'un ou deux blocs, à mesure que le réseau converge vers une seule chaîne canonique.
Quel est l'impact d'un fork sur mon application ?
Lors d'une bifurcation planifiée, votre nœud doit exécuter une version mise à jour du logiciel pour continuer à suivre la chaîne canonique, sans quoi il diffusera des données obsolètes. Le recours à un fournisseur RPC géré qui gère les transitions liées aux bifurcations garantit que vos points de terminaison continuent de renvoyer des données canoniques tout au long de la mise à jour, sans que vous ayez à intervenir.
Comment « Quicknode » gère les fourches
QuicknodeL'equipe , qui fait partie de l'infrastructure, surveille tous les hard forks planifiés sur plus de 80 réseaux pris en charge et veille à ce que les nœuds soient mis à niveau avant l'activation du fork. Ainsi, les développeurs qui utilisent Quicknode n'ont pas besoin de gérer eux-mêmes les mises à niveau des clients ni de prendre le risque que leurs applications se retrouvent du mauvais côté d'un fork. Lorsqu'une chaîne subit un hard fork planifié, Quicknode gère la transition de manière transparente, et vos points de terminaison RPC continuent de fournir des données à partir de la chaîne canonique mise à niveau.
En cas de bifurcations controversées où les deux chaînes continuent de fonctionner, Quicknode évalue le soutien de la communauté, la sécurité et la demande des développeurs avant de décider d’ajouter ou non la nouvelle chaîne à la liste des réseaux pris en charge. Grâce à l’infrastructure multi-chaînes de Quicknode, l’ajout de la prise en charge d’une chaîne issue d’une nouvelle bifurcation relève d’une décision infrastructurelle et ne constitue pas une charge de développement pour les clients.
Quicknode Streams gère les transitions de bifurcation de manière fluide en transmettant les données dans l'ordre de finalité, garantissant ainsi qu'aucune ambiguïté temporaire de la chaîne pendant la période d'activation de la bifurcation n'entraîne la transmission de données erronées vers votre pipeline. La gestion intégrée de la réorganisation couvre les cas limites pouvant survenir lors des blocages liés à l'activation de la bifurcation.