Glossario / Transazioni e commissioni
Transazione con dati nulli
Noto anche come Transazione con dati, Transazione OP_RETURN, Null data transaction, OP_RETURN.
- Che cos'è una transazione con dati nulli?
- Una transazione con dati nulli contiene un output che memorizza un breve messaggio invece di denaro, contrassegnato come dimostrabilmente non spendibile così che i nodi possano scartarlo dall'insieme dei bitcoin spendibili.
La gente voleva scrivere cose nella blockchain molto prima che esistesse un modo sicuro per farlo. Il modo sicuro è un output che inizia con OP_RETURN, che fallisce immediatamente se qualcuno prova a spenderlo, così i nodi completi possono eliminarlo dalla memoria invece di tenerne traccia per sempre. Quasi tutti questi output contengono zero satoshi, e il mittente paga solo per i byte.
Come funziona
Un output con dati nulli è uno script di blocco che non può mai essere soddisfatto, ed è esattamente questo il punto.
Lo script inizia con l'opcode OP_RETURN ed è seguito da un push di dati. Poiché l'opcode interrompe lo script nel momento in cui viene raggiunto, nessuna combinazione di firme può sbloccare l'output, e i nodi sono liberi di lasciarlo fuori dall'insieme degli output non spesi che tengono in memoria. Quell'insieme è la cosa costosa che un nodo completo mantiene, ed escluderne la zavorra è l'intera giustificazione della funzionalità.
Bitcoin Core ha reso standard un solo output di questo tipo nella versione 0.9.0, pubblicata a marzo 2014, con un payload limitato a 40 byte. Il limite è salito a 80 byte di dati durante il 2015, che il nodo conta come 83 byte di script una volta inclusi l'opcode e il prefisso del push. La versione 30.0, pubblicata a ottobre 2025, ha rimosso il limite predefinito e la restrizione di un solo output per transazione, dopo una discussione lunga e accesa su se la politica di relay dovesse davvero cercare di scoraggiare l'archiviazione di dati. Bitcoin Knots ha mantenuto i valori predefiniti più severi, quindi le due implementazioni di nodo più usate ora dissentono di proposito, e chi gestisce un nodo sceglie una parte scegliendo il software.
Il cambiamento è di politica, non di consenso. I dati in un output OP_RETURN sono sempre stati validi; la discussione ha sempre riguardato solo se i nodi ordinari dovessero trasmetterli.
Dove lo vedi
Guarda un blocco qualsiasi su un explorer e troverai output con dati nulli elencati con valore zero e uno script mostrato come OP_RETURN seguito da esadecimali.
L'utente intensivo più antico è Omni Layer, il protocollo che ha emesso la prima versione di Tether su bitcoin, che codificava così le sue istruzioni. Servizi di marcatura temporale come OpenTimestamps inseriscono l'hash di un documento in un output, così in seguito puoi dimostrare che il documento esisteva prima di quel blocco. Runes, il protocollo di token lanciato al blocco dell'halving il 20 aprile 2024, mette l'intero insieme di istruzioni in un unico output con dati nulli, ed è per questo che quel blocco e quelli successivi ne erano pieni.
Per chi compra bitcoin, l'effetto pratico è indiretto ma reale. Gli output di dati competono per lo stesso spazio nel blocco del tuo pagamento, e una raffica di essi aumenta la commissione che devi pagare per ottenere la conferma. È il meccanismo dietro la maggior parte dei picchi di commissioni degli ultimi anni.
Transazione con dati nulli vs OP_RETURN
OP_RETURN è un opcode; una transazione con dati nulli è un'intera transazione che contiene un output che lo usa. La distinzione conta quando si legge la configurazione di un nodo, perché le impostazioni di Bitcoin Core prendono il nome dalla categoria di transazione e non dall'opcode: -datacarrier decide se tali transazioni vengono trasmesse, e -datacarriersize stabilisce quanto può essere grande il payload. Cercare OP_RETURN nella documentazione non porterà a quelle opzioni.
Transazione con dati nulli vs inscription
Le inscription mettono i loro dati in un posto del tutto diverso. Un'inscription ordinal nasconde il suo payload dentro uno script witness taproot, che riceve lo sconto di peso SegWit e può arrivare a megabyte, mentre un output con dati nulli viene addebitato a peso pieno ed è stato storicamente limitato a 80 byte. Questa differenza di prezzo e dimensione spiega perché immagini e oggetti da collezione siano arrivati come inscription e non come dati OP_RETURN, e perché le due cose suscitino discussioni molto diverse sull'appesantimento della blockchain.