OP_RETURN su Bitcoin: data carrier, nulldata e output non spendibili
Scopri come OP_RETURN registra dati pubblici, perché l’output non può essere speso, come la policy di relay di Bitcoin Core 31.1 differisce dal consenso e cosa cambia rispetto alle inscription in witness.
In questa guidaOP_RETURN inserisce i dati nello script di blocco
Breve sintesi
OP_RETURN permette di aggiungere dati pubblici allo script di un output Bitcoin. Bitcoin Core considera non spendibili gli output il cui script inizia con OP_RETURN e li esclude dall’insieme UTXO. I limiti di relay attuali sono policy locali dei nodi, non un limite di payload imposto dal consenso a tutta la rete.
OP_RETURN inserisce i dati nello script di blocco
Un output Bitcoin contiene un importo e uno script di blocco chiamato scriptPubKey. Un output OP_RETURN, classificato anche come nulldata, inizia con l’opcode OP_RETURN e può poi inserire una sequenza di byte. Quando la transazione entra in un blocco, quei byte vengono registrati pubblicamente come parte dell’output. Questo schema non crea un livello dati separato, un saldo di token o un messaggio privato.
Perché l’output non può essere speso di nuovo
OP_RETURN è un opcode che fa fallire l’esecuzione quando viene raggiunto. Un tentativo di spendere un output con uno script che inizia così non può soddisfare lo script. Bitcoin Core lo classifica quindi come non spendibile e può ometterlo subito dall’insieme UTXO, senza conservare una moneta che non potrà mai essere usata. Vedi l’implementazione in script.h di Bitcoin Core 31.1. Bitcoin Core 31.1 script implementation.
Lo script è più grande del payload
Un limite per i data carrier non conta necessariamente solo i byte dell’applicazione. Lo script raw dell’output comprende opcode OP_RETURN, istruzione di push e codifica della lunghezza, oltre al payload. Un payload di 80 byte può richiedere uno script di 83 byte: un byte di opcode, due per l’intestazione OP_PUSHDATA1 e 80 di dati. Le vecchie indicazioni sugli «80 byte» spesso intendono il payload; le opzioni recenti possono misurare tutto lo script.
Policy predefinita dei data carrier in Bitcoin Core 31.1
Bitcoin Core 31.1 attiva -datacarrier per impostazione predefinita. -datacarriersize ha un limite predefinito di 100.000 byte e somma le dimensioni degli scriptPubKey raw di tutti gli output data carrier della transazione. Più output NULL_DATA condividono lo stesso limite, che include opcode e codifica del push. Core 30.0 ha sostituito il precedente limite di 83 byte di script con un limite aggregato di 100.000 byte e ha permesso più output; Core 31.1 mantiene questa policy. Vedi le opzioni di Core 31.1, l’implementazione della policy e le note di rilascio 30.0.

Il relay e il consenso rispondono a domande diverse
Ogni nodo può disattivare il relay dei data carrier o ridurre il proprio limite locale; altri nodi e versioni software possono avere impostazioni diverse. Se un nodo rifiuta una transazione nel mempool, può semplicemente non volerla inoltrare in base alla propria policy, non significa automaticamente che il consenso la vieti. Bitcoin Core applica il limite nella verifica di standardness e controlla separatamente le regole di consenso quando valida un blocco. Core consensus transaction checks. See Bitcoin Core 31.1 mempool standardness implementation.
Il valore dell’output si perde; la commissione si calcola a parte
Un output OP_RETURN può avere un valore, ma non è recuperabile e resta inutilizzabile. I wallet spesso gli assegnano zero. Se gli vengono assegnati 1.000 sat, non diventano automaticamente una commissione per il miner. La commissione è la somma degli input meno la somma di tutti gli output. I byte dello script consumano peso della transazione e possono aumentare la commissione a parità di sat/vB. Consulta la guida alle commissioni Bitcoin.
Più output dati non moltiplicano il limite
Bitcoin Core 31.1 permette più output NULL_DATA standard, ma somma le dimensioni dei loro script entro lo stesso limite per transazione. Dividere il payload non aumenta lo spazio e ogni output aggiunge dati e peso del blocco. Il relay dipende anche dal peso, dalle commissioni e da altre policy di standardness. L’accettazione da parte di un wallet o explorer non garantisce la propagazione su tutta la rete.
OP_RETURN è diverso da un’inscription Taproot in witness
I dati OP_RETURN sono nello scriptPubKey di un output quando si crea la transazione. I dati witness SegWit sono serializzati separatamente per ogni input; BIP 141 li descrive come dati stack associati a ciascun input. Una spesa Taproot tramite script path può rivelare script e control block nel witness dell’input. Il software Ordinals può interpretare un formato envelope come inscription secondo una convenzione applicativa: è un meccanismo diverso dall’output nulldata. Consulta BIP 141, BIP 341 e la guida [Bitcoin Ordinals e inscription](/learn/bitcoin-ordinals-inscriptions-satoshi-numbering-witness-data-explained).
Controlla policy, valore e privacy prima di usarlo
Verifica la versione di Bitcoin Core e le impostazioni locali su cui fai affidamento. Calcola separatamente dimensione dello script raw completo, peso della transazione, valore destinato all’output non spendibile e commissione del miner. Il consenso non attribuisce un significato a byte arbitrari; controlla che il protocollo o il destinatario riconosca il formato. I dati registrati sulla chain sono pubblici: non inserire password, informazioni personali o file riservati. Per output e resto, consulta la guida a UTXO e coin control Bitcoin.
Domande frequenti
Q1Il consenso Bitcoin limita OP_RETURN a 80 byte di dati?
No. Gli 80 byte descrivono il payload di un vecchio esempio di policy di standardness, non un limite universale di consenso. Bitcoin Core 31.1 usa per impostazione predefinita 100.000 byte aggregati di script dati; ogni nodo può modificare la policy.
Q2Un OP_RETURN più grande aumenta la commissione della transazione?
Può farlo. I byte dello script aumentano il peso della transazione e quindi la commissione a parità di sat/vB. I sat assegnati all’output non spendibile si perdono separatamente e non sono una commissione del miner.
Q3OP_RETURN è uguale a un’inscription Ordinals?
No. OP_RETURN è in uno script di output e rende l’output non spendibile. Una tipica inscription Taproot inserisce contenuto nei dati del percorso script del witness d’ingresso, interpretati dal software Ordinals secondo le proprie convenzioni.
Fonti e approfondimenti
Segnala un problema
Prepareremo un’e-mail con il link a questo articolo. Mark riceverà la segnalazione solo dopo l’invio
Controllo rapido
Hai finito la guida? Verifica ciò che hai capito con 3 domande
Domanda 01
Che cosa misura il -datacarriersize predefinito di Bitcoin Core 31.1?
Scegli una risposta per vedere la spiegazione
Glossario delle opzioni
A call or put whose strike is near the underlying price; it has little intrinsic value and often substantial sensitivity to time and volatility.
Leggi la guida completaCall optionA contract that gives its holder the right, but not the obligation, to buy the underlying at the strike before or at expiration under the contract terms.
Leggi la guida completaPut optionA contract that gives its holder the right, but not the obligation, to sell the underlying at the strike before or at expiration under the contract terms.
Leggi la guida completa