Alcuni giorni fa, uno sviluppatore di Bitcoin Core ha pubblicato una richiesta di modifica per rimuovere il limite di dimensione predefinito dei dati negli output OP_RETURN. Ne è seguita una discussione tra sviluppatori e ampie parti della comunità Bitcoin, che in certi momenti è diventata accesa e difficile da seguire. Sebbene i manutentori di Bitcoin Core sembrino aver deciso di procedere con la modifica proposta, altri criticano la mancanza di consenso e le potenziali conseguenze che il cambiamento potrebbe avere sulla rete.

In questo articolo vogliamo prendere le distanze dal rumore e offrire un po’ di contesto utile sul concetto generale di memorizzare dati sulla blockchain di Bitcoin, ovvero dati non direttamente legati a un pagamento in Bitcoin. Esamineremo i diversi approcci che si possono adottare per ottenere questo scopo, come funziona davvero OP_RETURN e di cosa tratta esattamente questa recente discussione. Iniziamo!

Dati arbitrari sulla blockchain di Bitcoin

L’idea di memorizzare dati sulla blockchain di Bitcoin è antica quanto la rete stessa. Tuttavia, i dibattiti su questo tema si sono intensificati negli ultimi anni, con un crescente interesse (e opposizione) verso la possibilità di archiviare grandi quantità di testo, immagini o perfino video sulla blockchain.

Discutere se un certo dato sia “spam” o una “transazione economica” può diventare rapidamente qualcosa di soggettivo e persino un po’ filosofico. Naturalmente, esistono molte transazioni la cui motivazione economica è chiaramente evidente, come un pagamento all’indirizzo di un commerciante noto o un prelievo da un wallet di un exchange. Alcuni potrebbero definire queste transazioni come “vere” transazioni Bitcoin. Ma non è sempre così semplice. Una transazione tra due wallet della stessa persona è economicamente rilevante? Come si può sapere se un indirizzo Bitcoin è un “vero indirizzo” e non un messaggio nascosto? E poi: questa distinzione esiste davvero?

Spam… ovunque!

Il protocollo Bitcoin offre numerosi punti in cui è possibile memorizzare dati “non legati a transazioni”. Ad esempio, i miner possono utilizzare la transazione coinbase per inserire un messaggio di testo, come ha fatto lo stesso Satoshi Nakamoto nel blocco Genesis:

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

Altri potrebbero (mal)utilizzare le chiavi pubbliche e gli indirizzi stessi per memorizzare dati. Normalmente, si presume che una chiave pubblica sia effettivamente derivata da una chiave privata sotto il controllo di qualcuno. Ma come si può esserne certi? Nessuno può impedirti di codificare un messaggio di testo in alcune chiavi pubbliche e inviare loro una piccola quantità di bitcoin. Ed è proprio questo che fanno gli utenti del protocollo STAMP – contribuendo a gonfiare permanentemente il set UTXO di Bitcoin con output che probabilmente non potranno mai essere spesi.

Due output standard, di cui uno contiene un messaggio arbitrario invece di un hash di chiave pubblica.

Ma non è finita qui: il protocollo Ordinals, diventato popolare nel 2023, utilizza l’estensione “witness” dei blocchi Bitcoin – ovvero la parte dove di solito si trovano le firme digitali – per memorizzare grandi quantità di dati. Esiste persino un incentivo a utilizzare questa sezione di un blocco Bitcoin, grazie a uno sconto effettivo sulle commissioni derivante dal modo in cui viene calcolato lo spazio di archiviazione nelle transazioni SegWit. Ad esempio, il blocco 774628 era quasi di 4 MB e conteneva un’unica immagine ad alta risoluzione di Julian Assange.

Scorrere i dati witness di questa transazione potrebbe richiedere un bel po’ di tempo!

Diventa subito evidente che, se vuoi memorizzare dati arbitrari sulla blockchain di Bitcoin, puoi farlo senza problemi. Esistono diversi modi per farlo, e l’unico limite pratico è la dimensione massima di un blocco, pari a 4 MB. E finora non abbiamo nemmeno menzionato gli output OP_RETURN!

Una scomoda verità

La maggior parte dei campi nelle transazioni e nei blocchi Bitcoin che non sono direttamente regolati dalle regole del protocollo possono essere riempiti con dati arbitrari, scollegati dallo scopo previsto. Si tratta di una circostanza inevitabile, poiché stabilire se un dato è “rilevante” richiede un’interpretazione soggettiva – cosa non sempre possibile, soprattutto in una rete non regolamentata e decentralizzata come Bitcoin.

Potresti essere d’accordo o meno con il concetto generale di memorizzare dati arbitrari sulla blockchain di Bitcoin – e va bene così. Tuttavia, poiché è praticamente impossibile impedirlo, si può argomentare che esistano modi migliori per memorizzare “spam” sulla blockchain di Bitcoin, e modi terribili. Diamo un’occhiata più da vicino.

OP_RETURN

Nonostante il nome complicato, OP_RETURN è probabilmente una delle funzionalità del linguaggio di scripting di Bitcoin più facili da capire – perché fondamentalmente non fa nulla. Quando un nodo Bitcoin verifica una transazione e si imbatte in un output OP_RETURN, lo tratterà come non spendibile immediatamente e passerà oltre.

A prima vista, questa “funzionalità” potrebbe sembrare inutile, ma ci sono due motivi principali per utilizzare gli output OP_RETURN:

  • Bruciare monete: I Bitcoin inviati a un output OP_RETURN sono bloccati per sempre e non possono essere spesi. È un modo provabile di “bruciare monete”, che potrebbe essere occasionalmente utile per motivi legali – o semplicemente per divertimento, nel caso in cui tu abbia perso una scommessa. Per questo motivo, è necessario prestare molta attenzione a non bloccare accidentalmente i propri Bitcoin quando si creano transazioni con OP_RETURN.
  • Contrassegnare i dati come irrilevanti: Quando si tratta di memorizzare dati arbitrari, OP_RETURN funge da indicatore precoce che dice ai nodi di validazione di Bitcoin: “Puoi ignorare tranquillamente ciò che segue”. Poiché l'output sarà sempre invalido, non c'è motivo di memorizzarne il contenuto. Questo è utile per i nodi che non desiderano memorizzare l'intera blockchain di Bitcoin, noti anche come nodi "pruned". Essi possono ignorare e eliminare in sicurezza gli output OP_RETURN insieme ad altri dati, risparmiando spazio su disco e memoria.

Ricordi quando abbiamo parlato di come possa essere tecnicamente difficile determinare se un dato è “irrilevante” o meno? OP_RETURN offre essenzialmente agli utenti la possibilità di prendere quella decisione da soli e comunicarla alla rete. Questo è, senza dubbio, un vantaggio, perché è più efficiente di alcune delle alternative menzionate in precedenza. Anche se gli output OP_RETURN contribuiscono ancora alla dimensione totale della blockchain di Bitcoin, non vengono aggiunti al set UTXO, il che significa che i nodi non devono tenerne traccia continuamente.

I nodi possono ignorare e potare il messaggio dopo la verifica iniziale.

Politiche del Mempool

Ma che dire di questo “limite” OP_RETURN menzionato all'inizio?

Bitcoin Core viene fornito con diverse impostazioni predefinite e opzioni di configurazione che influenzano il comportamento del nodo nella rete. Alcune di queste opzioni riguardano se il nodo debba rilanciare e memorizzare una nuova transazione nel proprio mempool locale – queste sono spesso chiamate politiche del mempool o regole di standardizzazione. La cosa più importante è che la validità di una transazione e la sua possibilità di essere inclusa in un nuovo blocco è una questione completamente separata, determinata dalle regole di consenso, che non sono legate a questa discussione.

Al momento della scrittura di questo articolo, Bitcoin Core ha un limite predefinito di 80 byte di dati applicato agli output OP_RETURN, limite che può essere modificato in qualsiasi momento con una semplice opzione di configurazione. Questo significa semplicemente che un nodo non rilancerà una transazione con un output OP_RETURN contenente più di 80 byte di dati (o qualsiasi altro valore configurato dall'utente) e non la aggiungerà al proprio mempool di transazioni non confermate. Naturalmente, se una transazione di questo tipo venisse inclusa in un nuovo blocco, il nodo l'accetterebbe comunque, poiché il limite non è una regola di consenso.

In breve, al momento è piuttosto difficile trasmettere transazioni con grandi output OP_RETURN, poiché quasi tutti i nodi non le rilanceranno a causa del limite predefinito di 80 byte. Tuttavia, questa limitazione ha i suoi limiti, che dovremmo tenere a mente per ciò che verrà dopo...

  • Non è una regola di consenso: Poiché le transazioni con output OP_RETURN più grandi sono valide secondo le regole di consenso, possono essere comunque incluse volontariamente dai miner. In questo modo, una singola transazione potrebbe anche includere più output OP_RETURN con dimensioni arbitrarie. Questo può essere fatto avvicinando direttamente i miner o collegandosi ad altri nodi che non applicano questa politica, facilitando la propagazione della transazione ai miner. Si noti che i miner generalmente hanno un incentivo finanziario a includere transazioni con commissioni elevate, indipendentemente dal loro contenuto o contesto. Bastano anche solo un miner disposto a farlo.
  • Metodi alternativi: Esistono altri metodi per memorizzare grandi quantità di dati che sono ancora più difficili da evitare, come le iscrizioni nei dati witness o le chiavi pubbliche e gli hash negli output standardizzati, come menzionato in precedenza. Si noti che l'abuso degli output standard per nascondere dati arbitrari è tecnicamente quasi impossibile da prevenire e può rapidamente trasformarsi in un gioco del “gatto e topo”, con nuove regole che portano a metodi ancora più elaborati per nascondere i dati.

Rimuovere il limite

Il principale argomento per rimuovere l'attuale limite di 80 byte è la sua inefficacia nel prevenire realmente la memorizzazione di dati sulla blockchain, come dimostrato da alternative altrettanto efficaci, ma peggiori. Aumentare semplicemente il limite sarebbe un'altra opzione, ma gli stessi argomenti e limiti potrebbero essere applicati a qualsiasi limite superiore, motivo per cui gli sviluppatori di Core propongono una rimozione completa.

Limitare attivamente l'uso degli output OP_RETURN incoraggia anche l'uso di metodi alternativi di archiviazione, portando a incentivi controintuitivi. Migliorare l'usabilità di OP_RETURN migliora sostanzialmente i requisiti di risorse per gli operatori di nodi Bitcoin e l'efficienza complessiva della rete. Già oltre un decennio fa, le note di rilascio di Bitcoin Core contenevano questo stesso ragionamento:

Questo cambiamento non è un endorsement per memorizzare dati nella blockchain. Il cambiamento di OP_RETURN crea un output provabilmente potabile, per evitare schemi di archiviazione dati – alcuni dei quali erano già stati implementati – che memorizzavano dati arbitrari come immagini come output per sempre non spendibili, gonfiando il database UTXO di Bitcoin.

Ora che comprendiamo meglio la logica dietro il cambiamento proposto, possiamo anche dare uno sguardo all'altro lato dell'argomento!

Cosa potrebbe parlare contro il cambiamento proposto?

Mentre i sostenitori del cambiamento enfatizzano l'efficienza e il pragmatismo tecnico, il dibattito intorno a OP_RETURN ha rivelato una serie di controargomentazioni che vanno oltre i dettagli di implementazione. I critici sollevano preoccupazioni sia filosofiche che pratiche, mettendo in discussione se il cambiamento sia in linea con gli obiettivi a lungo termine di Bitcoin e se affronti in modo significativo le vere fonti di spam di dati sulla blockchain.

Una rete finanziaria prima di tutto

La maggior parte dei critici vuole dare priorità alla conservazione di Bitcoin come protocollo finanziario e impedire il suo utilizzo come layer di dati general-purpose. Da questa prospettiva, rimuovere il limite OP_RETURN rischia di normalizzare l'uso non finanziario e inviare un messaggio sbagliato su ciò per cui la blockchain è destinata. Anche se tecnicamente innocuo, sostengono, rimuovere il limite potrebbe attrarre nuovi casi d'uso che sfumano ulteriormente l'ambito previsto di Bitcoin e aumentano la pressione sugli operatori di nodi nel tempo. I scettici si chiedono anche se il cambiamento ridurrebbe effettivamente l'impatto negativo dello spam sulla rete complessiva.


Perché rimuovere la possibilità?

Alcuni sostengono che rimuovere il limite predefinito sia accettabile, mentre rimuovere completamente l'opzione di impostare un limite personalizzato non lo sia. Poiché esiste già una soluzione funzionante per consentire agli utenti di impostare un limite personalizzato per gli output OP_RETURN, si può argomentare che non ci sia motivo di rimuovere questa possibilità per quegli utenti che desiderano comunque utilizzarla. Dopotutto, le politiche del mempool sono qualcosa che ognuno può configurare autonomamente, seguendo il mantra del “il tuo nodo, le tue regole”.

Preoccupazioni sul processo

Anche il modo in cui questa proposta è stata introdotta ha suscitato critiche. La rapidità con cui la pull request è pianificata per essere integrata nella prossima release di Bitcoin Core, insieme alla rimozione delle opzioni di configurazione correlate per gli utenti, ha sollevato preoccupazioni riguardo alla discussione insufficiente. Sebbene il cambiamento non modifichi le regole di consenso, gli oppositori sostengono che modificare i predefiniti consolidati senza un ampio consenso minacci la fiducia e crei un precedente rischioso.

Quando c'è il dubbio, meglio non agire

Per molti, alla fine si tratta di cautela. Il cambiamento affronta un problema che potrebbe non risolvere, comporta potenziali effetti collaterali e manca di un consenso chiaro. In questi casi, sostengono i critici, la strada responsabile è mantenere la politica attuale, lasciare aperte le opzioni e riesaminare la questione solo con giustificazioni più forti, soluzioni differenti o un supporto più ampio. In un sistema come Bitcoin, dove la stabilità e la prevedibilità sono fondamentali, rimanere con lo status quo è a volte la decisione meno rischiosa e più prudente.

Prevenzione dello spam

In generale, la rete Bitcoin ha un meccanismo molto importante per difendersi dallo spam: un mercato delle transazioni con commissioni libere. Con una fornitura costante di spazio disponibile nei blocchi, che è di circa 2-3 MB ogni dieci minuti, la domanda di transazioni regola automaticamente la loro priorità, senza la necessità di decisori centralizzati. Proprio come la domanda e l'offerta portano a un prezzo di Bitcoin in continuo cambiamento, il mercato delle commissioni attribuisce un prezzo alle transazioni. In questo modo, nessuna entità dovrebbe essere in grado di manipolarlo a lungo, poiché nessuno può avere una quantità infinita di bitcoin da pagare per questo.


Conclusione

Come molte discussioni su Bitcoin, non esiste una risposta chiara e definitiva, solo dei compromessi. Mentre il cambiamento proposto potrebbe migliorare tecnicamente la gestione dei dati arbitrari, solleva anche preoccupazioni legittime sugli incentivi a lungo termine, la direzione culturale e il processo decisionale stesso. Che venga visto come un miglioramento pratico o un precedente rischioso, il dibattito riflette la complessità di mantenere un sistema decentralizzato con priorità diverse.

Immagina un futuro in cui una grande parte del mondo crea regolarmente transazioni Bitcoin. Grandi corporazioni e forse anche stati nazionali potrebbero aver bisogno di spostare i loro bitcoin. Gli utenti privati potrebbero dover creare e liquidare regolarmente i loro canali Lightning. In breve, se c'è una domanda molto alta per le transazioni, anche le tariffe delle commissioni saranno molto alte. Si può argomentare che è piuttosto improbabile che ci sarà un mercato significativo per i dati “inutili” sulla blockchain di Bitcoin nel lungo periodo. Proprio come spetta al mercato decidere se Bitcoin ha valore, spetta al mercato delle commissioni decidere se le transazioni hanno valore.

Considerando questo principio generale, la decisione di limitare o meno la dimensione degli output OP_RETURN potrebbe non avere un impatto così grande come si potrebbe pensare a prima vista. Ciò che la rimozione del limite vuole principalmente ottenere è un modo più efficiente di gestire grandi quantità di dati arbitrari. O, in altre parole, scegliere “il male minore” rispetto all'abuso degli output standard per memorizzare i dati.

Serve anche come un ottimo esempio di come i dibattiti sullo sviluppo di Bitcoin possano evolversi e forse portare a una maggiore diversità nelle diverse implementazioni dei nodi Bitcoin e a una maggiore consapevolezza di come funzionano effettivamente le politiche e le regole di consenso. Qualunque cosa accada, ognuno sarà in grado di scegliere e configurare il proprio software del nodo come preferisce, perché alla fine è questo che rappresenta Bitcoin.


Non possiedi ancora un BitBox?

Il BitBox02 è disponibile in due edizioni: l'edizione Multi, che supporta diverse criptovalute e può essere utilizzata come dispositivo per l'autenticazione a due fattori (2FA). L'edizione Bitcoin-only invece offre un firmware focalizzato: meno codice significa una superficie di attacco ridotta, che migliora ulteriormente la sicurezza quando custodisci solo bitcoin.

Acquista BitBox02 nel nostro shop online!


Shift Cypto è un'azienda privata con sede a Zurigo, in Svizzera. Il nostro team di contributori di Bitcoin, esperti di criptovalute e ingegneri della sicurezza crea prodotti che consentono ai clienti di godere di un percorso senza stress dal livello principiante a quello di padronanza nella gestione delle criptovalute. BitBox02, il nostro hardware wallet di seconda generazione, consente agli utenti di memorizzare, proteggere e effettuare transazioni in Bitcoin e altre criptovalute con facilità - insieme al suo compagno software, la BitBoxApp.