Les forks

“Fork” est un terme que vous avez sans doute déjà entendu dans le monde des logiciels ou de la crypto-monnaie mais savez-vous ce qu’il veut dire ? Ce terme anglais fait référence à une division en plusieurs branches, appelée embranchement. Pour la blockchain, cela signifie que la chaîne de blocs est divisée en deux chaînes distinctes. Pour un logiciel open-source c’est deux branches de sont git qui ne seront jamais “mergées”.

On utilise en général le terme chaîne de blocs pour parler de la plupart des registres des crypto-monnaies. Un bloc correspond à un groupe de transactions horodaté qui est validé par les participants de la chaîne qui valide son ajout Chaque bloc est lié au bloc précédent ce qui permet à la chaîne “d’avancer” à chaque écriture et aux blocs de ne pas pouvoir être retirés ou modifiés ensuite.

Par exemple, sur le réseau Bitcoin,  les validations ont lieu par le calcul d’une preuve de travail pour un mineur qui recevra alors sa récompense, les fameux “BTC”. 

Le mineur doit démontrer qu’il a trouvé le résultat d’un problème mathématique complexe, ce qui a nécessité de  dépenser de l’énergie pour réaliser des calculs. En trouvant la solution  au contexte pour rattacher le bloc au bloc précédent il fait sa “preuve de travail”. S’il est le premier à trouver alors il remporte les BTC en partageant sa solution et son bloc avec les nœuds du réseau qui le vérifient et le “valide”. À noter qu’il peut aussi être très chanceux et trouver la solution par pur hasard, il y a régulièrement des anecdotes de petits “setup” de miner qui battent les plus grandes fermes de minage.

Si le bloc n’est pas accepté par l’ensemble des validateurs alors deux branches existent dès le bloc suivant, un fork est né. 

Les types de forks

Il est possible qu’un fork se produise en raison d’une divergence des règles de consensus entre validateurs. Dans ce cas, il s’agit d’un fork hard, qui signifie une séparation de la chaîne qui est généralement permanente. Par conséquent, un changement non rétrocompatible des règles de consensus (en n’utilisant pas la même version du logiciel de validation par exemple) qui peut entraîner ce type d’embranchement est également désigné par le terme hard fork. De plus, selon cette logique, le soft fork est une modification du protocole qui peut être utilisée à l’avenir et ne crée un embranchement que si la majorité de la puissance de calcul (pour l’exemple du bitcoin) du réseau ne l’utilise pas.

Le Soft Fork

Pour une mise à jour légère, un soft fork sera utilisé. Les nouvelles règles n’empêchent pas les blocs précédents de rester acceptables. Il est affirmé que la modification est rétrocompatible. La blockchain la plus ancienne fonctionnera toujours avec la blockchain la plus récente. Ce type d’embranchement a déjà été effectué sur le Bitcoin. Il n’y a bien alors qu’une seule chaîne mais le contenu des blocs peut être utilisé différemment.

Les mineurs doivent accepter un certain niveau de consensus pour faire évoluer cet ordre. En général, la majorité d’entre eux doivent suivre les nouvelles règles. Le BIP 66 ou le P2SH (Pay to Script Hash) qui ont permis de mettre en place le système de multi-signatures font partie des soft forks qui ont eu lieu sur le protocole Bitcoin.

Cela peut être comparé à une simple mise à jour. Le principe est identique ici : votre smartphone va mettre à jour son système d’exploitation, mais vous n’aurez pas besoin de changer de téléphone pour utiliser ce SE.

Illutration de Bitstack

Bitcoin est une blockchain qui se caractérise par le fait que la rétrocompatibilité est totale : vous pouvez faire tourner un nœud avec la première version du logiciel de validation, il fonctionnera encore.

Le Hard Fork

En revanche, un hard fork implique une transformation importante afin de réaliser des transformations significatives du protocole de la blockchain initiale. Il est important que les développeurs et la communauté accordent un large consensus à ces décisions, au risque de diviser le projet en deux. Les règles précédentes ne seront plus compatibles avec les nouvelles.

Il peut être préparé ou litigieux. Si la majorité de la communauté suit le protocole choisi et met à niveau son logiciel, cela sera terminé. C’est le système que Ethereum utilise actuellement dans son évolution du plan Casper (avec la Byzantine, la Constantinople, etc.).

Si la question est controversée, il y aura une division et deux chaînes de blocs seront créées pour correspondre à deux crypto-monnaies différentes. C’est généralement le cas lorsque la communauté se divise et qu’une partie veut créer une nouvelle version de la blockchain. Les exemples suivants sont des exemples controversés de hard fork.

Illutration de Bitstack

L’exemple d’Ethereum et d’Ethereum Classic

Le hack du projet TheDAO a eu lieu mi-2016, en particulier le 17 juin.

À l’époque, TheDAO était un smart contract (contrat intelligent) très populaire. En d’autres termes, un logiciel utilisé sur la blockchain Ethereum. Le plan était d’établir une plateforme de financement participatif. Pour obtenir des tokens TheDAO en échange, il était nécessaire d’envoyer des tokens ETH (Ethereum). Ceux-ci permettaient un droit de vote sur les subventions et les investissements pour les projets.

Cependant, un pirate a réussi à voler 3,6 millions d’Ethers en raison d’une faille dans le code du smart contract. C’est une catastrophe pour toute la communauté. Les forums et les espaces d’échange publics sont pris par la panique.

Le concept de créer un fork est proposé, puis approuvé. Il permettra de “rembourser” les personnes qui ont malheureusement perdu leurs ETH en permettant de revenir à l’état de la blockchain avant le hack.

Et c’est là que la communauté commence à se disputer. Bien que Vitalik Buterin et d’autres personnalités importantes du projet soutiennent l’initiative du nouvel ETH, une minorité souhaite conserver la blockchain originale (qui a été piratée) en raison de l’idéologie et des valeurs des crypto-monnaies. La volonté de cette partie de la communauté était de préserver la chaîne de blocs originale afin de rendre hommage aux idées des Cypherpunks.

Ainsi, un hard fork a divisé les partisans de l’ETH. La plupart ont migré vers une nouvelle blockchain, qui est Ethereum actuellement. En revanche, certains puristes continuent d’utiliser la première version de la chaîne de blocs, qui est désormais Ethereum Classic.

L’exemple de Bitcoin et Bitcoin Cash

Il convient de souligner que de nombreux autres forks du Bitcoin ont eu lieu en 2018 tels que celui du Bitcoin Gold ou du Bitcoin Private.

Le fork Bitcoin avec le Bitcoin Cash est l’un des plus connus. Il est plus récent car il s’est déroulé le 1er août 2017.

Pour faire simple, certains membres de la communauté Bitcoin ont pensé qu’activer Segwit sans augmenter la taille des blocs était une erreur. Ils se sont regroupés et ont créé le projet Bitcoin Cash qui multiplie par huit les blocs, passant de 1 à 8 Mo.

Le hard fork du Bitcoin a suivi, créant deux crypto-monnaies distinctes, le Bitcoin et le Bitcoin Cash. Chaque propriétaire de BTC recevait son équivalent en BCH. Les désaccords dans la communauté Bitcoin ont conduit au Bitcoin Cash.

Ainsi, la nouvelle crypto-monnaie ne peut plus être utilisée avec la version originale du Bitcoin. Les blocs ne peuvent pas être utilisés sur la même blockchain car ils ont des tailles différentes. Il est impossible, par exemple, d’envoyer du Bitcoin sur un wallet Bitcoin Cash. 

Le premier fork de l’histoire de la crypto-monnaie

Peu de gens le savent mais la référence aujourd’hui qu’est le Bitcoin (BTC) dans le monde de la crypto-monnaie est en réalité le premier fork de l’histoire de la crypto mais aussi le plus gros.

Car le 15 août 2010 une personne qui à réussi à cracker le système de la blockchain de l’époque a généré un bloc de 184 467 440 737 bitcoins pour trois adresses différentes. Ceci est dû au code qui n’avait pas prévu qu’ une quantité de Bitcoin aussi grande pouvait être générée.

Une nouvelle version du client a été publiée dans les cinq heures qui ont suivi la découverte ; elle contenait une modification des règles de consensus par forçage en douceur qui rejetait les transactions de dépassement de la valeur de sortie (ainsi que toute transaction qui payait plus de 21 millions de bitcoins dans une sortie, quelle qu’en soit la raison). La chaîne de blocs a été forkée. 

Bien que de nombreux nœuds non corrigés aient continué à construire sur la “mauvaise” chaîne de blocs, la “bonne” chaîne de blocs l’a dépassée à une hauteur de bloc de 74691, date à laquelle tous les nœuds ont accepté la “bonne” chaîne de blocs comme source autorisée de l’historique des transactions Bitcoin.

La mauvaise transaction n’existe plus pour les personnes qui utilisent la chaîne la plus longue. Par conséquent, les bitcoins qu’elle a créés n’existent pas non plus. Si la transaction n’existe plus, les 0,5 BTC qu’elle a consommés, eux, existent. Ils semblent provenir d’un robinet et n’ont pas été utilisés depuis.