Deux clients Bitcoin en concurrence pour l’activation de Taproot

2
973

Taproot, mise à jour du protocole Bitcoin introduisant des smart contracts compacts tout en offrant plus de confidentialité, se rapproche de l’activation. Le code de Taproot lui-même a déjà été inclus dans la dernière version majeure de Bitcoin Core (Bitcoin Core 0.21.0), qui est actuellement l’implémentation de référence de facto du protocole Bitcoin. L’étape suivante consiste à activer ce code.

En raison de désaccords techniques et philosophiques sur la façon dont le protocole devrait être mis à jour, la discussion sur l’activation de Taproot s’est transformée en un long débat parfois houleux. Ce débat a accouché de deux méthodes d’activation différentes, intégrées dans deux logiciels clients qui pourraient même, dans certains scénarios, être incompatibles l’un avec l’autre.

Voilà l’histoire de ces deux méthodes d’activation Taproot, leurs différences et les scénarios à envisager.

Retour en arrière

L’activation de Taproot fait l’objet de discussions depuis début 2020. Après plus d’un an de débats sur la liste de diffusion Bitcoin development, sur un canal IRC dédié et d’autres forums de discussion encore, un consensus approximatif semblait s’être formé autour de la proposition d’amélioration 8 (BIP 8) pour activer le soft fork. Cette proposition laisse aux mineurs un certain délai pour signaler qu’ils sont prêt à l’activation.

Le seul point de discorde qui persistait encore concernait ce qui devrait se passer si trop peu de mineurs signalaient qu’ils étaient prêts une fois le délai atteint, ce qui se traduit dans le paramètre Lock-in On Timeout (LOT). Si LOT est défini sur « false » (LOT = false), la mise à jour est annulée quand le délai expire et un nouveau mécanisme d’activation peut être envisagé. Si LOT est défini sur « true » (LOT = true), les nœuds, à partir de ce point, n’accepteront que les blocs créés par des mineurs qui signalent Taproot et rejetteront tous les autres. Si suffisamment de blocs sont créés par des mineurs qui signalent Taproot, cela garantit l’activation.

Sans entrer dans le détails des arguments des uns et des autres autour du paramètre Lock-in On Timeout (ces arguments sont résumés ici), le débat était dans l’impasse. Pour éviter cela, d’autres propositions ont été envisagées, comme une activation « flag day » sans signalisation de la puissance de hachage. Mais plus important encore, certains partisans de LOT = true ont décidé de lancer un client pour cette activation : un fork de Bitcoin Core 0.21.0 qui activerait Taproot en utilisant LOT = true indépendamment de la version de référence de Bitcoin Core.

A la dernière minute cependant, un compromis entre différentes factions a été trouvé dans une proposition intitulée Speedy Trial [essai rapide]. Speedy Trial offre une fenêtre courte de trois mois aux mineurs pour signaler qu’ils sont prêts pour la mise à niveau. Si 90% des mineurs signalent leur disponibilité, Taproot s’active un peu plus tard dans l’année après un certain délai pour donner aux utilisateurs suffisamment de temps pour effectuer la mise à niveau.

Les partisans de LOT = true ont accepté Speedy Trial essentiellement parce que la proposition mobilise un délai suffisamment court pour ne pas gêner l’activation LOT = true, tandis que les promoteurs de LOT = false ont accepté Speedy Trial parce qu’il met en œuvre de LOT = false, mais simplement sur un délai plus court. La solution ne correspondait pas exactement à ce que l’un ou l’autre parti avait espéré, mais elle était acceptable par tous.

La paix régna jusqu’à ce que les détails concernant Speedy Trial soient finalisés. Un nouveau point de désaccord apparut alors, concernant la compatibilité de Speedy Trial avec le client LOT = true.

La scission idéologique originelle entre « LOT = true » et « LOT = false » ainsi que le désaccord sur les détails de mise en œuvre de Speedy Trial ont aujourd’hui mené à deux clients d’activation Taproot différents : « Bitcoin Core 0.21.1 » et le client LOT = true, nommé « Bitcoin Core 0.21.0 -based Taproot Client 0.1 ».

BITCOIN CORE 0.21.1

Bitcoin Core 0.21.1, que nous nommerons simplement « Bitcoin Core » dans le reste de cet article, est la prochaine version mineure du client logiciel Bitcoin Core. Il est développé et approuvé par la plupart des contributeurs réguliers du projet. (Une version candidate de Bitcoin Core 0.21.1, qui pourrait bientôt être confirmée comme version officielle, a été publiée hier. Quoi qu’il en soit, une version officielle suivra sous peu.)

Bitcoin Core a choisi Speedy Trial pour l’activation de Taproot. Cela signifie que la période de signalisation des mineurs commencera en même temps que la première période de difficulté de deux semaines après le 23 avril, ce qui pourrait se situer autour du 2 mai. La période de signalisation expirera à la fin de la dernière période de difficulté de deux semaines avant le 11 août.

Si au moins 90% des mineurs signalent qu’ils sont prêts pour la mise à niveau dans l’une des périodes de difficulté de deux semaines entre ces deux dates, Taproot s’activera au bloc 709632, qui devrait être créé en novembre prochain.

Si 90% des mineurs n’ont pas signalé Taproot à la fin de la période de signalisation, la mise à niveau sera annulée. Les développeurs réévalueront alors la situation et proposeront une méthode d’activation différente dans une future version de Bitcoin Core. Cependant, la méthode d’activation alternative n’a pas encore été décidée.

BITCOIN CORE 0.21.0-BASED TAPROOT CLIENT 0.1

Bitcoin Core 0.21.0-based Taproot Client 0.1, que pour le reste de cet article nous appellerons « Bitcoin Taproot » , est le client LOT = trueBitcoin Taproot est un fork de Bitcoin Core 0.21.0, la dernière version majeure de Bitcoin Core, mais qui intègre le paramètre LOT = true (BIP 8) pour l’activation de Taproot. Le projet a été lancé par Mechanic et Shinobi, deux développeurs anonymes, et Luke Dashjr, développeur de Bitcoin Core et principal responsable de Bitcoin Knots. Luke est le contributeur le plus notable et le plus expérimenté du projet. (Précisons que si le nom du client contient « Bitcoin Core » , la plupart des contributeurs de Bitcoin Core réguliers n’approuvent pas ce client.)

La période de signalisation de Bitcoin Taproot commencera au bloc Bitcoin 681408, qui devrait être extrait autour du 2 mai : c’est (presque certainement) le même bloc qui marquera le début de la période de signalisation Speedy Trial. La période de signalisation de Bitcoin Taproot s’achèvera au bloc 760032, qui devrait être créé en octobre 2022.

Si au moins 90% des mineurs signalent qu’ils sont prêts pour Taproot tout au long de l’une des périodes de difficulté de deux semaines entre ces deux blocs, la mise à niveau s’activera au bloc 709632 au plus tard ou deux semaines après que le seuil de signalisation est atteint. Pour le dire autrement, Taproot s’activerait au plus tôt en novembre de cette année (comme avec Speedy Trial de Bitcoin Core), mais pourrait encore s’activer jusqu’à un an plus tard, en novembre 2022.

Mais la principale différence avec Bitcoin Core c’est que Bitcoin Taproot utilise la paramètre LOT = true. Là où Speedy Trial de Bitcoin Core expirerait simplement si le nombre de mineurs qui signalent leur disponibilité est insuffisant, les clients Bitcoin Taproot finiront par rejeter les blocs issus de mineurs qui ne signalent pas leur disponibilité. A partir de là le seuil de signalisation sera rapidement atteint et l’activation de Taproot est garantie.

DIFFÉRENCES

Il existe trois différences entre Bitcoin Core et Bitcoin Taproot.

La première différence est (sans doute) mineure. Bitcoin Core utilise des dates et des heures pour marquer le début et la fin de la période de signalisation, tandis que Bitcoin Taproot n’utilise que des hauteurs de bloc. La plupart des développeurs de Bitcoin Core considèrent cela comme une différence minime, voire insignifiante ; si triviale que certains ont pensé que cela pouvait être décidé par un tirage au sort, mais ils ont finalement opté pour l’utilisation des dates et des heures. Luke Dashjr, le contributeur le plus notable de Bitcoin Taproot, a cependant une forte préférence pour l’utilisation de hauteurs de bloc.

En bref, les arguments en faveur de l’utilisation de la hauteur de bloc sont qu’elle […] empêche les attaques de distorsion temporelle (où les mineurs s’entendent sur de faux temps de bloc). La mise à niveau commence définitivement à être appliquée à une hauteur de bloc spécifique indépendamment de la date et de l’heure. Dashjr souligne également que la communauté Bitcoin avait déjà décidé d’utiliser la hauteur de bloc pour l’activation avant même Speedy Trial.

Les arguments en faveur de l’utilisation du temps de bloc sont que cela permet aux humains de planifier un peu plus facilement les dates, que cela nécessite moins de changements de code par rapport aux précédentes activations de soft fork et, dans certains cas, que cela facilite l’exécution des simulations sur certains réseaux de test.

La deuxième différence, plus importante, est que la période de signalisation Speedy Trial de Bitcoin Core ne dure qu’environ trois mois, tandis que la période de signalisation de Bitcoin Taproot est de 18 mois. Alors que les périodes de signalisation pour Bitcoin Core et Bitcoin Taproot commenceront très probablement en même temps, la période de signalisation de Bitcoin Taproot durera jusqu’à 15 mois de plus.

La troisième et plus grande différence est que la période de signalisation Speedy Trial de Bitcoin Core expirera simplement si les mineurs n’ont pas signalé leur état de préparation avant la fin de la période de trois mois (à partir de là une stratégie d’activation différente peut être envisagée), tandis que Bitcoin Taproot utilise LOT = true pour finalement n’accepter que les blocs signalant Taproot, ce qui garantit son activation.

INCOMPATIBILITÉS

Au début Bitcoin Core et Bitcoin Taproot seront compatibles l’un avec l’autre. Ils coexisteront sur le même réseau, accepteront (et rejetteront) les mêmes blocs et génèreront la même blockchain.

Cela restera le cas si les mineurs activent Taproot avant la date limite de Speedy Trial. Dans ce cas, les nœuds Bitcoin Core et Bitcoin Taproot commenceront tous les deux à appliquer la mise à niveau Taproot au bloc Bitcoin 709632 (autour de novembre).

Mais si les mineurs ne signalent pas qu’ils sont prêts avant la date limite de Speedy Trial, Bitcoin Core et Bitcoin Taproot pourraient devenir incompatibles. Il existe au moins deux scénarios dans lesquels cela pourrait se produire :

De toute évidence, si une majorité de mineurs ne parvient pas à signaler leur soutien avant la fin de la période de signalisation de Bitcoin Taproot (octobre 2022), les nœuds Bitcoin Taproot commenceront à rejeter les blocs issus de mineurs qui ne signalent pas Taproot, mais les nœuds Bitcoin Core les accepteront toujours. En d’autres termes, la blockchain se diviserait entre les nœuds Bitcoin Taproot et les nœuds Bitcoin Core. La scission pourrait potentiellement durer, ce qui signifie qu’il y aurait un « coin split » : deux blockchains et, en conséquence, deux monnaies différentes.

De façon moins évidente, une majorité de mineurs pourraient, après la période de signalisation Speedy Trial et avant la fin de la période de signalisation Bitcoin Taproot, signaler leur état de préparation sans réellement prévoir d’appliquer les règles de Taproot. Cela ne rendrait pas en soi les nœuds Bitcoin Taproot et Bitcoin Core incompatibles. Mais ils auraient une interprétation différente du protocole Bitcoin : Bitcoin Taproot appliquerait les règles Taproot alors que Bitcoin Core ne le ferait pas.

Cela pourrait également diviser le réseau si une transaction Taproot invalide est minée. Les nœuds Bitcoin Taproot rejetteraient le bloc qui inclut cette transaction, tandis que les nœuds Bitcoin Core l’accepteraient : ils n’appliqueraient pas les règles de Taproot. Si une majorité de mineurs continuait à s’appuyer sur le bloc Taproot invalide, cela entraînerait également un « coin split » .

Rien de tout cela ne pourrait se produire de si tôt. Dans le pire scénario, un scission ne serait possible une scission qu’en novembre de cette année. La période de signalisation Speedy Trial se terminant en août, cela laisserait au moins trois mois à Bitcoin Taproot ou Bitcoin Core pour résoudre l’incompatibilité – ou aux utilisateurs et mineurs de Bitcoin pour agir en conséquence.

Traduction d’un article d’Aaron Van Wirdum à lire dans Bitcoin Magazine