Il y a quelques jours, un développeur de Bitcoin Core a publié une demande de modification visant à supprimer la limite de taille par défaut des données dans les sorties OP_RETURN. Une discussion s’en est suivie parmi les développeurs et de larges pans de la communauté Bitcoin, discussion parfois animée et difficile à suivre. Alors que les mainteneurs de Bitcoin Core semblent avoir pris une décision pour aller de l’avant avec le changement proposé, d’autres critiquent l’absence de consensus et les conséquences potentielles que ce changement pourrait avoir sur le réseau.

Dans cet article, nous voulons prendre un peu de recul par rapport au bruit ambiant et apporter un contexte utile sur le concept général du stockage de données sur la blockchain Bitcoin, c’est-à-dire des données qui ne sont pas directement liées à un véritable paiement en Bitcoin. Nous examinerons différentes approches possibles pour y parvenir, le fonctionnement réel d’OP_RETURN, et ce dont traite vraiment cette discussion récente. Entrons dans le vif du sujet !

Données arbitraires sur la blockchain Bitcoin

L’idée de stocker des données sur la blockchain Bitcoin est aussi ancienne que le réseau lui-même. Cependant, le débat sur le sujet s’est intensifié ces dernières années, avec un intérêt croissant (et une opposition croissante aussi) pour le stockage de grandes quantités de texte, d’images, voire de vidéos sur la blockchain.

Débattre de la question de savoir si une donnée est du « spam » ou une « transaction économique » peut vite devenir très subjectif, voire un peu philosophique. Bien sûr, il existe de nombreuses transactions dont la justification économique saute aux yeux, comme un paiement vers l’adresse d’un commerçant connu, ou un retrait depuis le wallet d’une plateforme d’échange. Certains qualifieraient ces paiements de « vraies » transactions Bitcoin. Mais ce n’est pas toujours aussi simple. Une transaction envoyée depuis et vers votre propre wallet est-elle économiquement pertinente ? Comment savoir si une adresse Bitcoin est une « vraie adresse » et non un autre message caché ? Y a-t-il seulement une différence ?

Du spam… partout !

Le protocole Bitcoin offre de nombreux endroits où stocker des données « non transactionnelles ». Par exemple, les mineurs peuvent utiliser la transaction coinbase pour stocker un message texte, l’exemple le plus célèbre étant Satoshi Nakamoto lui-même dans le bloc Genesis :

The Times 03/Jan/2009 Chancellor on brink of second bailout for bank

D’autres peuvent (mal)utiliser les clés publiques et les adresses elles-mêmes pour stocker des données. En général, vous supposez qu’une clé publique est bien dérivée d’une clé privée contrôlée par quelqu’un. Mais comment pourriez-vous le savoir ? Personne ne vous empêche d’encoder un message texte dans quelques clés publiques, puis de leur envoyer une petite quantité de bitcoin. En réalité, c’est exactement ce que font les utilisateurs du protocole STAMP — en gonflant pour toujours l’ensemble UTXO de Bitcoin avec des sorties qui ne pourront probablement jamais être dépensées.

Deux sorties standard, dont l’une contient un message arbitraire au lieu d’un hash de clé publique

Mais ce n’est pas tout : le protocole Ordinals, devenu populaire en 2023, utilise l’extension « witness » des blocs Bitcoin — là où l’on trouve habituellement les signatures numériques — pour stocker de très grandes quantités de données. Il existe même une incitation à utiliser cette partie d’un bloc Bitcoin, en raison d’une remise effective sur les frais liée à la manière dont l’espace de stockage est calculé pour les transactions SegWit. Par exemple, le bloc 774628 faisait presque 4 Mo, contenant une seule image haute résolution de Julian Assange.

Faire défiler les données witness de cette transaction peut prendre un bon moment !

On se rend vite compte que, si vous voulez stocker des données arbitraires sur la blockchain Bitcoin, vous le pouvez tout à fait. Il existe plusieurs façons de le faire, et la seule limite pratique est la taille maximale d’un bloc, soit 4 Mo. Et jusqu’ici, nous n’avons même pas encore parlé des sorties OP_RETURN !

Une vérité dérangeante ?

La plupart des champs dans les transactions et les blocs Bitcoin qui ne sont pas directement imposés par les règles du protocole peuvent être remplis de données arbitraires, sans lien avec leur usage prévu. C’est une conséquence inévitable, parce que déterminer si des données sont pertinentes exige une interprétation subjective — ce qui n’est pas toujours possible, surtout dans un réseau non régulé et décentralisé comme Bitcoin.

Vous pouvez être d’accord ou non avec l’idée générale de stocker des données arbitraires sur la blockchain Bitcoin — et c’est très bien ainsi. Cependant, comme il est pratiquement impossible de l’empêcher, on peut soutenir qu’il existe de meilleures façons de stocker du « spam » sur la blockchain Bitcoin, et des façons terribles. Regardons cela de plus près.

OP_RETURN

Malgré son nom à l’apparence compliquée, OP_RETURN est sans doute l’une des fonctionnalités du langage de script de Bitcoin les plus faciles à comprendre — parce qu’elle ne fait essentiellement rien. Lorsqu’un nœud Bitcoin vérifie une transaction et tombe sur une sortie OP_RETURN, il traite immédiatement cette sortie comme impossible à dépenser, puis passe à la suite.

À première vue, cette « fonctionnalité » peut sembler inutile, mais il existe deux raisons principales d’utiliser des sorties OP_RETURN :

  • Brûler des bitcoins : les bitcoins envoyés vers une sortie OP_RETURN sont verrouillés pour toujours et ne peuvent plus être dépensés. C’est une manière prouvable de « brûler des coins », ce qui peut parfois être utile pour des raisons juridiques — ou simplement pour le plaisir si vous avez perdu un pari. Pour cette raison, vous devez faire très attention à ne pas verrouiller vos coins par accident lorsque vous créez des transactions avec OP_RETURN.
  • Marquer des données comme non pertinentes : lorsqu’il s’agit de stocker des données arbitraires, OP_RETURN agit comme un indicateur précoce qui dit aux nœuds Bitcoin validateurs : « Vous pouvez ignorer en toute sécurité ce qui suit ». Puisque la sortie sera toujours invalide, il n’y a aucune raison de stocker son contenu. C’est idéal pour les nœuds qui ne souhaitent pas stocker l’intégralité de la blockchain Bitcoin, aussi appelés nœuds élagués. Ils peuvent ignorer et supprimer sans risque les sorties OP_RETURN, ce qui économise de l’espace disque et de la mémoire.

Vous vous souvenez quand nous avons expliqué qu’il peut être techniquement difficile de déterminer si une donnée est « non pertinente » ou non ? OP_RETURN donne essentiellement aux utilisateurs la possibilité de prendre eux-mêmes cette décision et de la communiquer au réseau. On peut considérer que c’est une bonne chose, car c’est plus efficace que certaines des alternatives mentionnées plus haut. Même si les sorties OP_RETURN contribuent toujours à la taille totale de la blockchain Bitcoin, elles ne sont pas ajoutées à l’ensemble UTXO, ce qui signifie que les nœuds n’ont pas à les suivre en permanence.

Les nœuds peuvent ignorer et élaguer le message après la vérification initiale

Politiques du mempool

Mais qu’en est-il de cette « limite » OP_RETURN mentionnée au début ?

Bitcoin Core est livré avec plusieurs paramètres par défaut et options de configuration qui influencent le comportement du nœud sur le réseau. Certaines de ces options concernent la question de savoir si le nœud doit relayer et stocker une nouvelle transaction dans son mempool local — on parle souvent de politiques du mempool ou de règles de standardness. Surtout, savoir si une transaction est valide et peut être incluse dans un nouveau bloc est une question entièrement différente, déterminée par les règles de consensus, qui ne sont pas concernées par cette discussion.

Au moment de la rédaction de cet article, Bitcoin Core applique par défaut une limite de 80 octets de données aux sorties OP_RETURN, limite qui peut être modifiée à tout moment via une simple option de configuration. Cela signifie simplement qu’un nœud ne relayera pas une transaction avec une sortie OP_RETURN contenant plus de 80 octets de données (ou toute autre valeur configurée par l’utilisateur), et qu’il ne l’ajoutera pas à son mempool de transactions non confirmées. Bien sûr, si une telle transaction était incluse dans un nouveau bloc, le nœud l’accepterait quand même, puisque la limite n’est pas une règle de consensus.

En bref, il est actuellement assez difficile de diffuser des transactions avec de grosses sorties OP_RETURN, car presque tous les nœuds ne les relaient pas à cause de la limite par défaut de 80 octets. Cependant, cette limitation a elle-même ses limites, ce qu’il faut garder à l’esprit pour la suite…

  • Pas une règle de consensus : puisque les transactions avec des sorties OP_RETURN plus grandes restent valides selon les règles de consensus, elles peuvent malgré tout être incluses volontairement par les mineurs. De cette manière, une seule transaction pourrait même inclure plusieurs sorties OP_RETURN de tailles arbitraires. Cela peut se faire soit en approchant directement des mineurs, soit en se connectant à d’autres nœuds qui n’appliquent pas cette politique, ce qui facilite la propagation de la transaction jusqu’aux mineurs. Notez que les mineurs ont généralement un intérêt financier à inclure des transactions à frais élevés, quel que soit leur contenu ou leur contexte. Il suffit qu’un seul mineur soit prêt à le faire.
  • Méthodes alternatives : il existe d’autres méthodes pour stocker de grandes quantités de données qui sont encore plus difficiles à éviter, comme les inscriptions dans les données witness ou les clés publiques et hash cachés dans des sorties standardisées, comme mentionné plus haut. Notez que le détournement de sorties standard pour masquer des données arbitraires est techniquement presque impossible à empêcher, et peut vite se transformer en jeu du chat et de la souris, avec toujours plus de règles qui entraînent des moyens toujours plus élaborés de cacher des données.

Supprimer la limite

Le principal argument en faveur de la suppression de la limite actuelle de 80 octets est son inefficacité à réellement empêcher le stockage de données sur la blockchain, comme le montrent des alternatives tout aussi efficaces mais pires. Relever simplement la limite serait également une option, mais les mêmes arguments et les mêmes limites s’appliqueraient à n’importe quelle limite plus élevée, raison pour laquelle les développeurs de Core défendent une suppression complète.

Limiter activement l’usage des sorties OP_RETURN encourage aussi activement l’usage de méthodes de stockage alternatives, créant des incitations contre-intuitives. Améliorer l’utilisabilité d’OP_RETURN améliore en réalité les besoins en ressources pour les opérateurs de nœuds Bitcoin et l’efficacité globale du réseau. Il y a plus de dix ans, les notes de version de Bitcoin Core présentaient déjà exactement le même raisonnement :

Ce changement n’est pas une approbation du stockage de données dans la blockchain. La modification d’OP_RETURN crée une sortie dont on peut prouver qu’elle est élagable, afin d’éviter des schémas de stockage de données — dont certains étaient déjà déployés — qui stockaient des données arbitraires comme des images dans des sorties impossibles à dépenser pour toujours, gonflant ainsi la base de données UTXO de Bitcoin.

Maintenant que nous comprenons un peu mieux la logique derrière le changement proposé, nous pouvons aussi examiner l’autre côté de l’argument !

Alors, qu’est-ce qui pourrait aller contre le changement proposé ?

Alors que les partisans du changement mettent en avant l’efficacité et le pragmatisme technique, le débat autour d’OP_RETURN a fait émerger toute une série de contre-arguments qui vont au-delà des détails d’implémentation. Les critiques soulèvent des préoccupations à la fois philosophiques et pratiques, en se demandant si ce changement s’aligne avec les objectifs de long terme de Bitcoin et s’il traite réellement les véritables sources du spam on-chain.

D’abord un réseau financier

La plupart des critiques veulent donner la priorité à la préservation de Bitcoin comme protocole financier, et éviter qu’il ne soit utilisé comme couche de données à usage général. De ce point de vue, supprimer la limite d’OP_RETURN risque de normaliser les usages non financiers et d’envoyer un mauvais signal sur la finalité de la blockchain. Même si cela est techniquement inoffensif, ils soutiennent que lever la limite pourrait attirer de nouveaux cas d’usage qui brouilleraient encore davantage le périmètre prévu de Bitcoin et augmenteraient progressivement la pression sur les opérateurs de nœuds. Les sceptiques se demandent aussi si ce changement réduirait réellement de manière significative l’impact négatif du spam sur l’ensemble du réseau.

Pourquoi supprimer cette possibilité ?

Certains estiment que supprimer la limite par défaut est acceptable, mais que supprimer complètement la possibilité de définir une limite personnalisée ne l’est pas. Puisqu’il existe déjà une solution fonctionnelle pour permettre aux utilisateurs de définir leur propre limitation pour les sorties OP_RETURN, on peut soutenir qu’il y a peu de raisons de retirer cette possibilité aux utilisateurs qui souhaitent encore l’utiliser. Après tout, les politiques du mempool sont quelque chose que chacun peut configurer lui-même, conformément au mantra « votre nœud, vos règles ».

Des inquiétudes quant au processus

La manière dont cette proposition a été introduite a également suscité des critiques. La rapidité avec laquelle il est prévu de fusionner la pull request dans la prochaine version de Bitcoin Core, combinée à la suppression d’options de configuration liées pour les utilisateurs, a soulevé des inquiétudes quant à l’insuffisance des discussions. Même si ce changement ne modifie pas les règles de consensus, ses opposants soutiennent que faire évoluer des valeurs par défaut établies de longue date sans accord large affaiblit la confiance et crée un précédent risqué.

Dans le doute, abstenez-vous

Pour beaucoup, il s’agit avant tout de prudence. Ce changement s’attaque à un problème qu’il ne résoudra peut-être pas, entraîne des effets secondaires potentiels et ne bénéficie pas d’un consensus clair. Dans de tels cas, affirment les critiques, la voie responsable consiste à maintenir la politique actuelle, à garder les options ouvertes et à ne revoir la question qu’avec une justification plus solide, d’autres solutions ou un soutien plus large. Dans un système comme Bitcoin, où la stabilité et la prévisibilité sont primordiales, s’en tenir au statu quo est parfois la décision la moins risquée et la plus prudente.

Prévention du spam

De manière générale, le réseau Bitcoin dispose d’un mécanisme très important pour se défendre contre le spam : un marché libre des frais de transaction. Avec une offre constante d’espace de bloc disponible, d’environ 2 à 3 Mo toutes les dix minutes, la demande de transactions régule automatiquement leur priorité, sans nécessiter de décideurs centraux. Tout comme l’offre et la demande entraînent un prix du Bitcoin en évolution permanente, le marché des frais donne un prix aux transactions. De cette manière, aucune entité unique n’est censée pouvoir le manipuler durablement, puisque personne ne peut disposer d’une quantité infinie de bitcoin pour le payer.

Conclusion

Comme souvent dans les discussions autour de Bitcoin, il n’existe pas de réponse clairement juste ou fausse, seulement des compromis. Si le changement proposé peut améliorer techniquement la manière dont les données arbitraires sont gérées, il soulève aussi des préoccupations légitimes concernant les incitations de long terme, l’orientation culturelle et le processus de décision lui-même. Qu’on y voie une amélioration pratique ou un précédent risqué, ce débat reflète la complexité de la maintenance d’un système décentralisé avec des priorités diverses.

Imaginez un avenir où une grande partie du monde crée régulièrement des transactions Bitcoin. De grandes entreprises, et peut-être même des États, pourraient avoir besoin de déplacer leurs coins. Les utilisateurs privés pourraient devoir créer et régler régulièrement leurs canaux Lightning. En bref, s’il existe une très forte demande de transactions, les taux de frais seront eux aussi très élevés. On peut soutenir qu’il est assez peu probable qu’il existe à long terme un marché significatif pour des données « inutiles » sur la blockchain Bitcoin. Tout comme c’est au marché de décider si Bitcoin a de la valeur, c’est au marché des frais de décider si les transactions ont de la valeur.

Compte tenu de ce principe général, la décision de limiter — ou non — la taille des sorties OP_RETURN n’a peut-être pas autant d’impact qu’on pourrait le penser à première vue. Ce que cherche principalement la suppression de la limite, c’est une manière plus efficace de gérer de plus grandes quantités de données arbitraires. Ou, en d’autres termes, choisir le moindre mal par rapport au détournement des sorties standard pour stocker des données.

C’est aussi un excellent exemple de la manière dont les débats autour du développement de Bitcoin peuvent évoluer et peut-être même conduire à une plus grande diversité des différentes implémentations de nœuds Bitcoin, ainsi qu’à une meilleure compréhension du fonctionnement réel des règles de politique et de consensus. Quoi qu’il arrive, chacun pourra choisir et configurer son logiciel de nœud comme il l’entend, parce que c’est au fond ce qu’est Bitcoin.

Vous n’avez pas encore de BitBox ?

Sécuriser vos cryptos n’a pas besoin d’être compliqué. Le hardware wallet BitBox02 stocke hors ligne les clés privées de vos cryptomonnaies. Vous pouvez ainsi gérer vos coins en toute sécurité.

Le BitBox02 existe aussi en version Bitcoin-only, avec un firmware résolument ciblé : moins de code signifie moins de surface d’attaque, ce qui améliore encore votre sécurité si vous stockez uniquement du Bitcoin.

Procurez-vous-en une dans notre boutique !

Shift Crypto est une entreprise privée basée à Zurich, en Suisse. Notre équipe de contributeurs Bitcoin, d’experts en cryptomonnaies et d’ingénieurs sécurité conçoit des produits qui permettent à nos clients de vivre une expérience sereine, du niveau débutant jusqu’à la maîtrise de la gestion des cryptomonnaies. Le BitBox02, notre hardware wallet de deuxième génération, permet aux utilisateurs de stocker, protéger et utiliser facilement Bitcoin et d’autres cryptomonnaies — avec son logiciel compagnon, la BitBoxApp.

This post was translated with the help of AI