OP_RETURN sur Bitcoin : data carriers, nulldata et sorties impossibles à dépenser
Découvrez comment OP_RETURN inscrit des données publiques, pourquoi la sortie ne peut pas être dépensée, en quoi la politique de relais de Bitcoin Core 31.1 diffère du consensus et ce qui la distingue des inscriptions witness.
Dans ce guideOP_RETURN place les données dans le script de verrouillage
Bref résumé
OP_RETURN permet d’ajouter des données publiques au script de sortie d’une transaction Bitcoin. Bitcoin Core considère les sorties dont le script commence par OP_RETURN comme impossibles à dépenser et les exclut de l’ensemble UTXO. Les limites actuelles de relais relèvent de la politique de chaque nœud, pas d’une limite de payload imposée par le consensus à tout le réseau.
OP_RETURN place les données dans le script de verrouillage
Une sortie Bitcoin contient un montant et un script de verrouillage appelé scriptPubKey. Une sortie OP_RETURN, aussi classée nulldata, commence par l’opcode OP_RETURN et peut ensuite pousser une suite d’octets. Une fois la transaction incluse dans un bloc, ces octets sont publiquement enregistrés dans la sortie. Cette forme ne crée ni couche de données séparée, ni solde de jeton, ni message privé.
Pourquoi la sortie ne peut pas être dépensée à nouveau
OP_RETURN est un opcode qui fait échouer l’exécution lorsqu’on l’atteint. Une tentative de dépenser une sortie dont le script commence ainsi ne peut donc pas satisfaire le script. Bitcoin Core la classe comme impossible à dépenser et peut l’omettre immédiatement de l’ensemble UTXO. La vérification figure dans le script.h de Bitcoin Core 31.1. Bitcoin Core 31.1 script implementation.
Le script est plus grand que le payload
Une limite de data carrier ne compte pas nécessairement que les données de l’application. Le script de sortie brut comprend l’opcode OP_RETURN, l’instruction de push avec son encodage de longueur et le payload. Un payload de 80 octets peut former un script de 83 octets : un octet pour l’opcode, deux pour l’en-tête OP_PUSHDATA1 et 80 pour les données. Les anciennes références à « 80 octets » parlent souvent du payload, tandis que les nouveaux réglages peuvent mesurer le script entier.
Politique par défaut des data carriers dans Bitcoin Core 31.1
Bitcoin Core 31.1 active -datacarrier par défaut. -datacarriersize vaut 100 000 octets et additionne les tailles des scriptPubKey bruts de toutes les sorties porteuses de données d’une transaction. Plusieurs sorties NULL_DATA partagent cette limite, qui inclut aussi l’opcode et l’encodage du push. Core 30.0 a remplacé l’ancienne limite de 83 octets de script par une limite agrégée de 100 000 octets et autorisé plusieurs sorties ; Core 31.1 conserve ces paramètres. Consultez les options de Core 31.1, l’implémentation de la politique et les notes de version 30.0.

Le relais et le consensus répondent à deux questions différentes
Chaque nœud peut désactiver le relais des data carriers ou réduire sa limite locale. D’autres nœuds ou versions logicielles peuvent faire un autre choix. Le refus d’une transaction dans le mempool d’un nœud peut donc simplement refléter sa politique de relais, et non une interdiction du consensus. Bitcoin Core applique la limite de données lors du contrôle de standardness et vérifie séparément les règles de consensus lors de la validation des blocs. Core consensus transaction checks. See Bitcoin Core 31.1 mempool standardness implementation.
La valeur de la sortie est perdue ; les frais sont calculés à part
Une sortie OP_RETURN peut recevoir une valeur, mais celle-ci ne peut pas être récupérée et devient définitivement inutilisable. Les portefeuilles lui attribuent souvent zéro. Si 1 000 sats lui sont affectés, ils ne deviennent pas automatiquement des frais de mineur. Les frais restent égaux à la somme des entrées moins celle de toutes les sorties. Les octets du script consomment du poids de transaction et peuvent augmenter les frais à taux sat/vB égal. Consultez le guide des frais de transaction Bitcoin.
Plusieurs sorties de données ne multiplient pas la limite
Bitcoin Core 31.1 accepte plusieurs sorties NULL_DATA standard, mais additionne leurs scripts dans la même limite par transaction. Répartir le payload ne crée pas de capacité supplémentaire et chaque sortie ajoute des données et du poids de bloc. Le relais dépend aussi du poids, des frais et d’autres règles de standardness. L’acceptation par un portefeuille ou un explorateur ne garantit pas la propagation sur tout le réseau.
OP_RETURN diffère d’une inscription Taproot dans le witness
Les données OP_RETURN se trouvent dans le scriptPubKey de sortie au moment où la transaction est créée. Les données witness de SegWit sont sérialisées séparément pour chaque entrée ; BIP 141 les décrit comme des données de pile associées à une entrée. Une dépense par chemin de script Taproot peut révéler le script et le bloc de contrôle dans le witness de l’entrée. Un logiciel Ordinals peut interpréter un format d’enveloppe révélé comme une inscription selon une convention applicative, ce qui diffère d’une sortie nulldata. Consultez BIP 141, BIP 341 et le guide [Ordinals et inscriptions Bitcoin](/learn/bitcoin-ordinals-inscriptions-satoshi-numbering-witness-data-explained).
Vérifiez la politique, la valeur et la confidentialité avant usage
Identifiez la version de Bitcoin Core et les options locales sur lesquelles vous vous appuyez. Calculez séparément la taille du script de sortie complet, le poids total de la transaction, la valeur de la sortie impossible à dépenser et les frais du mineur. Le consensus ne donne pas de sens à des octets arbitraires ; vérifiez aussi que le protocole ou le destinataire comprend le format. Les données inscrites sur la chaîne sont publiques : n’y mettez ni mot de passe, ni information personnelle, ni fichier confidentiel. Le guide des UTXO et du contrôle des pièces Bitcoin explique les sorties et la monnaie rendue.
Questions fréquentes
Q1Le consensus Bitcoin limite-t-il OP_RETURN à 80 octets de données ?
Non. Les 80 octets décrivent le payload d’un ancien exemple de politique de standardness, pas une limite universelle du consensus. Bitcoin Core 31.1 utilise par défaut une limite agrégée de 100 000 octets de scripts de données, que chaque nœud peut configurer.
Q2Un OP_RETURN plus grand augmente-t-il les frais de transaction ?
C’est possible. Les octets du script ajoutent du poids, ce qui peut augmenter les frais à taux sat/vB égal. Les sats affectés à la sortie impossible à dépenser sont perdus en plus ; ce ne sont pas des frais de mineur.
Q3OP_RETURN est-il la même chose qu’une inscription Ordinals ?
Non. OP_RETURN se trouve dans un script de sortie et rend cette sortie impossible à dépenser. Une inscription Taproot typique place son contenu dans les données de chemin de script du witness d’entrée, que le logiciel Ordinals interprète selon ses propres conventions.
Sources et lectures complémentaires
Signaler un problème
Nous préparons un e-mail avec le lien de cet article. Mark ne reçoit le signalement qu’après son envoi
Vérification rapide
Guide terminé ? Vérifiez vos acquis avec 3 questions
Question 01
Que mesure le -datacarriersize par défaut de Bitcoin Core 31.1 ?
Choisissez une réponse pour voir l'explication
Glossaire des options
Situation dans laquelle le prix d’exercice d’une option est proche du cours de son actif sous-jacent. L’option peut avoir peu de valeur intrinsèque à cet instant tout en conservant une prime liée au temps et à l’incertitude.
Lire le guide approfondioption d’achatContrat qui donne à son acheteur le droit, et non l’obligation, d’acheter le sous-jacent au prix d’exercice selon ses modalités. Le vendeur du contrat assume l’obligation correspondante s’il est exercé et assigné.
Lire le guide approfondioption de venteContrat qui donne à son détenteur le droit, et non l’obligation, de vendre le sous-jacent au prix d’exercice avant ou à l’échéance selon ses modalités.
Lire le guide approfondi