Skip to content
Tous les guides sur les options et contrats à terme
Sorties de transactions Bitcoin11 min read

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.

Illustration sans texte : les données d’une sortie s’arrêtent à une barrière, tandis que les données witness d’une entrée rejoignent la chaîne
Comparaison des données OP_RETURN d’une sortie et des données witness d’une entrée ; elles occupent des champs distincts et suivent des règles différentes

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 1 / 3

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