Come la blockchain è stata usata nel corso degli anni per conservare dati arbitrari non relativi a movimentazioni di bitcoin.
Fin dalla nascita di Bitcoin è diventato presto evidente che, per come è stata strutturata, la blockchain di Bitcoin è la fonte di dati digitali più resiliente a disposizione dell’umanità. Infatti, non solo i dati della blockchain sono distribuiti su decine di migliaia di computer in tutto il mondo, ma esiste anche un incentivo per gli utenti Bitcoin a continuare a conservare e mantenere una copia della blockchain nel tempo.
L’incentivo non è direttamente economico, nessuno viene pagato per far girare un nodo sul proprio computer, ma avere una copia della blockchain in locale permette di poter verificare autonomamente, senza bisogno di terze parti, se una determinata transazione Bitcoin è valida o meno. Ciò è fondamentale per far si che la ricezione di pagamenti Bitcoin possa essere realmente trustless indipendente da un qualunque servizio esterno.
Fino a che Bitcoin continuerà a essere usato, un gran numero di copie della blockchain facilmente accessibili continuerà a esistere da qualche parte nel mondo, rendendo le informazioni scritte al suo interno molto più persistenti di qualsiasi altra alternativa per la conservazione di dati digitali. Questa caratteristica ha reso la blockchain molto interessante per tutti coloro che erano intenzionati a scrivere un messaggio o caricare un’immagine che restasse accessibile all’umanità per tempi molto lunghi, idealmente per l’eternità.
Incidere messaggi arbitrari sulla blockchain, che non rappresentano una movimentazione di bitcoin, è considerato da molti come spam o addirittura un attacco verso la rete. Chi spende risorse per mantenere attivo un nodo Bitcoin sul proprio computer lo fa principalmente per rimanere aggiornato sullo stato della blockchain e tenere traccia dei legittimi possessori di ogni bitcoin in circolazione. Questi utenti non sono interessati a consumare banda, memoria, potenza di calcolo e spazio su disco solo per conservare i messaggi di estranei, rendendoli accessibili in futuro ad altri.
Pertanto, l’uso improprio di Bitcoin danneggia coloro che stanno cercando di utilizzarlo per lo scopo originale: effettuare pagamenti tramite un sistema monetario neutrale, incensurabile e non confiscabile.
Come scrivere sulla blockchain
Ma se Bitcoin è nato per servire solo casi d’uso finanziari, come è possibile usarlo come muro virtuale su cui incidere messaggi e immagini? Ci sono diverse metodologie a disposizione, la prima delle quali è stata usata da Satoshi Nakamoto stesso nel genesis block di Bitcoin.
Nel blocco 0 infatti, è stata incisa la celebre frase ”The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”, corrispondente al titolo del The Times del 3 gennaio 2009 e usata per dimostrare che il genesis block era stato effettivamente minato il 3 gennaio e non mesi (o anni) prima, cosa che avrebbe permesso a Satoshi di preparare una catena di blocchi molto lunga in anticipo, in modo quindi di essere in grado, più avanti, di effettuare dei double spend, pubblicandola dopo aver eseguito delle transazioni sulla catena pubblica più corta. Forse per caso o forse volutamente, il messaggio ha anche una componente politica, in quanto evidenzia i fallimenti di un sistema finanziario che necessita regolarmente di bailout.
Da un punto di vista tecnico, il messaggio nel genesis block di Bitcoin è stato inserito nell’input della transazione che assegna il block reward, noto come ‘coinbase‘ (da non confondere con l’omonimo exchange). Dato che la transazione di reward non trasferisce bitcoin esistenti, ma ne genera di nuovi, il campo input è tecnicamente superfluo e può essere utilizzato dal miner per inserire dati a propria discrezione.
Satoshi non è stato l’unico a utilizzare la coinbase per inserire messaggi sulla blockchain. Già nel 2011, la mining pool Eligius (poi rilanciata con il nome Ocean) iniziò a inserire preghiere nella coinbase, a dimostrazione della forte fede cattolica del suo gestore, il noto sviluppatore Bitcoin Luke-jr. Questo evento causò numerose controversie, non tanto per l’idea di considerarlo spam sulla blockchain, ma piuttosto per il contenuto dei messaggi, che non era condiviso da molti.
Scrivere sulla blockchain senza essere miner
La pratica di scrivere messaggi all’interno della coinbase di un blocco è accessibile solo ai miner. Pertanto, un utente normale deve affidarsi ad altre tecniche se desidera ottenere il medesimo risultato. Una delle prime metodologie sviluppate a tal fine è quella di creare ‘finti’ indirizzi Bitcoin. Questi indirizzi non vengono generati a partire da una chiave privata, ma hanno il solo scopo di contenere una stringa con dati arbitrari al loro interno.
Tra i primi esempi di questo sistema c’è l’iscrizione di una fotografia di Nelson Mandela, realizzata in suo ricordo poco dopo la sua morte nel 2013. Per farlo, l’immagine è stata divisa in brevi stringhe esadecimali, che sono state poi inserite negli output di transazioni Bitcoin. Queste stringhe, visibili sotto forma di indirizzi in un block explorer, possono essere assemblate per ricostruire l’immagine originale.
Ad esempio, l’indirizzo 15gHNr4TCKmhHDEG31L2XFNvpnEcnPSQvd (che compare per la prima volta in blockchain in questa transazione) corrisponde all’esadecimale 334E656C736F6E2D4D616E64656C612E6A70673F, che convertito in unicode produce la stringa 3Nelson-Mandela.jpg?, cioè il nome del file dell’immagine.
Questo metodo di scrivere dati arbitrari sulla blockchain è particolarmente problematico. Oltre a occupare spazio sul disco di chi gestisce un full node Bitcoin, tali iscrizioni occupano spazio non prunabile. I nodi Bitcoin permettono agli utenti di non conservare vecchie transazioni e vecchi blocchi una volta validati, risparmiando così spazio su disco senza compromettere la sicurezza.
L’obiettivo di un nodo è infatti ottenere una visione dell’UTXO set (Unspent Transaction Output), cioè quali indirizzi hanno un saldo positivo e possono movimentare Bitcoin in ogni momento. Creando output sulla blockchain utilizzati non per spendere bitcoin in futuro, ma solo come storage di dati, si impone ai nodi un costo maggiore. Questi output non sono prunabili, poiché il nodo non può sapere se sono spendibili o meno, e di conseguenza è obbligato a dedicare loro spazio su disco permanentemente.
Si noti che questo non è un problema solo dei nodi attuali, ma è un costo che riguarderà anche ogni futuro nodo Bitcoin, almeno fino a che qualche nuovo sviluppo tecnologico permetterà ai nodi di comprimere lo stato della blockchain (e.g. zero knowledge proofs).
L’avvento degli OP_RETURN
Per mitigare il problema delle iscrizioni non prunabili, nel 2014, con la versione 0.9 di Bitcoin Core, è stato introdotto il supporto per le transazioni con output OP_RETURN. Secondo le regole di validazione di Bitcoin questa nuova tipologia di output non può essere spesa, anche se contiene dei bitcoin. In tal modo, i nodi possono essere certi che l’informazione contenuta nell’output non sia rilevante per ricostruire lo stato della rete e possono quindi eliminarla dal disco. Gli output OP_RETURN sono adatti per incidere dati arbitrari, poiché minimizzano le esternalità negative sulla rete.
Tuttavia, prima di essere prunato, il contenuto di un output OP_RETURN deve essere scaricato e validato da ogni nodo. Per evitare abusi, la dimensione massima dell’output in fase di relay della transazione è stata limitata a 83 byte (inizialmente era 40 byte), una quantità ritenuta sufficiente per coprire i casi d’uso più ‘legittimi’, come la pubblicazione di hash e metadati.
Negli anni, vari protocolli hanno fatto leva sugli output OP_RETURN per supportare nuovi casi d’uso non legati alla semplice movimentazione di bitcoin, come ad esempio i primi protocolli di tokenizzazione su Bitcoin, tra cui troviamo Counterparty che fu anche oggetto di molte critiche per come usava lo spazio sulla blockchain, o applicazioni non finanziarie come Eternity Wall, servizio per scrivere messaggi indelebili sulla blockchain, e Open Timestamp, protocollo di notarizzazione efficiente di documenti su Bitcoin.
Ordinals e input Taproot
Più recentemente, con le iscrizioni Ordinal nel 2023, si è diffusa una nuova metodologia per scrivere grandi quantità di dati sulla blockchain. Le Ordinal Inscriptions sfruttano alcune caratteristiche delle transazioni Taproot per inserire dati nel campo witness (i.e. l’input) della transazione, dove non vi sono limiti di byte. Ciò permette di inserire non solo brevi stringhe ma volendo anche interi file, con l’unico limite di dimensione costituito dai 4MB del blocco Bitcoin. Questa metodologia sfrutta inoltre il cosiddetto ‘witness discount‘, un sistema che riduce le commissioni per i byte all’interno del campo witness di una transazione Segwit rispetto ai byte nel campo output.
Come nel caso degli OP_RETURN, i dati scritti dentro il campo witness sono prunabili dai nodi, ma non essendoci limiti molto bassi di spazio viene incentivata l’iscrizione di interi file invece che di più sintetici hash. Gli Ordinal hanno dimostrato di vivere di momenti di popolarità altalenante, con periodi in cui picchi di utilizzo del protocollo hanno riempito i blocchi su Bitcoin causando un aumento significativo delle commissioni da pagare per tutta la rete, attirando quindi l’antipatia di molti utenti.
L’illusione di eternità
L’unico motivo per pagare il costosissimo spazio sulla blockchain per inserire immagini e messaggi è l’idea che queste inscrizioni possano rimanere per sempre.
Per massimizzare questa speranza, il protocollo STAMP ha addirittura fatto un passo indietro tecnologicamente, rinunciando alla comodità degli OP_RETURN e ai vantaggi di spazio e commissioni offerti dalle Ordinal Inscriptions. Ha scelto di usare i bare multisig come tecnica di inscrizione di immagini. I bare multisig erano il primo tentativo di implementare transazioni multifirma su Bitcoin, ma non sono stati ampiamente adottati a causa della loro complessità di utilizzo (i primi wallet multisig sono emersi solo con l’introduzione di P2SH). Hanno tuttavia la capacità di creare output molto grandi che rispettano le regole di relay del network. Tali output possono essere utilizzati per inserire dati nella blockchain, ma sono output apparentemente spendibili e quindi entrano a far parte dell’UTXO set, rendendoli non prunabili dai nodi. Questa non prunabilità è proprio la caratteristica ricercata dagli sviluppatori di STAMP, poiché assicurerebbe che tutti i nodi Bitcoin siano obbligati a conservare i dati di chi ha effettuato l’iscrizione.
Questa tecnica non solo è estremamente parassitaria, ma potrebbe rivelarsi anche inutile nel lungo termine, dato che potrebbero emergere nuove metodologie di pruning. Ad esempio, si potrebbero sviluppare software specializzati che mappano tutte le iscrizioni note e consentono ai nodi di eliminare i dati ad esse correlati. Inoltre, potrebbero essere sviluppati futuri sistemi di compressione della blockchain e dell’UTXO set attraverso l’uso di zero knowledge proofs, rendendo l’idea di uno storage eterno sui computer di terzi ancora una volta illusoria.
Cosa categorizza una transazione come spam?
Fin dai primi esempi di iscrizione di dati sulla blockchain, si è sviluppato un dibattito su se tali transazioni debbano essere considerate spam. Da un lato, si potrebbe sostenere che le uniche cose richiesta da una transazione Bitcoin siano rispettare le regole di protocollo e il pagamento di una commissione appropriata. Dall’altro, è evidente che chi decide di dedicare risorse per mantenere attivo un nodo Bitcoin non lo fa con l’intenzione di fornire storage gratuito per le immagini di sconosciuti. Il semplice fatto di essere compatibili con il protocollo e di pagare una commissione adeguata non è una condizione sufficiente per essere considerati non-spam. Analogamente, anche le telefonate insistenti di un call center, che rispettano il protocollo di telefonia e pagano la bolletta telefonica, sono comunque considerate spam.
Alla fine, la percezione dello spam è indubbiamente soggettiva. Un anziano solo potrebbe persino apprezzare una telefonata da un call center, così come un millennial annoiato potrebbe essere contento di avere il JPEG di un’immagine pixelata sul proprio nodo. Da un certo punto di vista, chi possiede un nodo potrebbe considerare tutte le transazioni non relative al proprio wallet come inutile spam che sarebbe meglio non esistesse. Tuttavia, nel momento in cui si decide di installare un nodo Bitcoin, si accetta implicitamente di poter ricevere fino a 4MB per blocco di dati potenzialmente irrilevanti. Che questi dati codifichino inutili JPEG o transazioni tra persone dall’altra parte del mondo che non conosciamo, alla fine, non fa una grande differenza.
L’assunzione fondamentale di Bitcoin per garantire che le risorse richieste dal protocollo siano utilizzate per scopi produttivi si basa sull’idea che, in un libero mercato delle commissioni, gli utilizzatori produttivi possano offrire di pagare di più rispetto a quelli con casi d’uso a basso valore. Se continuiamo a osservare attività che consideriamo di basso valore, ciò può essere dovuto o alla mancanza di sufficienti utenti che impiegano Bitcoin per fini ad alto valore aggiunto, capaci di riempire i blocchi, o al fatto che i blocchi stessi siano troppo grandi.
Modificare la dimensione del blocco Bitcoin richiederebbe un soft fork, difficile da implementare. Pertanto, il modo migliore per ridurre lo spam sulla blockchain è incentivare più attività ad alto valore, come grossi settlement, in modo tale che non ci sia spazio per casi d’uso di dubbia utilità.