introduzione
È spesso considerato fondamentale per il funzionamento di una blockchain che il sistema sia trasparente. Ciò significa che ogni nodo della rete può archiviare una copia e verificare che nessuna regola venga infranta. Per molti registri distribuiti, chiunque può caricare un block explorer online che consenta loro di effettuare ricerche tra blocchi, transazioni e indirizzi.
Sul fronte della privacy, questo non è l’ideale. In un sistema come Bitcoin, ogni transazione può essere ricollegata a quella precedente. Le monete non sono tecnicamente fungibili, il che significa che ciascuna può essere legata a transazioni specifiche. Nessuno può impedirti di inviare bitcoin, ma possono rifiutarsi di accettare la tua transazione se quelle monete sono precedentemente passate attraverso un indirizzo nella lista nera.
Nello scenario peggiore, la mancanza di fungibilità potrebbe avere un impatto profondo sulle fondamenta stesse del sistema. Le monete pulite potrebbero valere un premio, mentre quelle più vecchie avrebbero meno valore data la loro storia.
La privacy in Bitcoin è spesso sopravvalutata. Non solo è possibile rintracciare le monete, ma anche gli utenti. Godono dello pseudonimo (gli indirizzi pubblici sono visibili al posto dei nomi), ma questo non è privo di difetti. Sofisticate tecniche di analisi possono, con crescente precisione, raggruppare gli indirizzi nel tentativo di deanonimizzare le entità della rete.
Un aggiornamento proposto per rendere le transazioni veramente private è Transazioni riservate.
Cosa sono le transazioni riservate?
Le transazioni riservate (CT) sono state discusse per la prima volta dal CEO di Blockstream Adam Back nel 2013 e sono state successivamente ampliate dallo sviluppatore Bitcoin Gregory Maxwell. Maxwell ha delineato i problemi menzionati nella prima sezione (fungibilità e pseudonimia debole) e ha proposto una soluzione. Gli importi trasferiti potrebbero essere protetti dalla rete più ampia in modo che solo le parti interessate possano sapere quanto è stato inviato.

In circostanze normali (con transazioni visibili pubblicamente), è facile per un nodo verificare che l’importo ricevuto non superi l’importo inviato. Se Alice vuole inviare 0,3 BTC a Bob, prende un output non speso (chiamiamolo 1 BTC) e lo divide in due parti: 0,3 da inviare a Bob e 0,69 da rispedirgli (con il resto perso come una tassa mineraria).
Questa è semplice algebra per gli altri nodi: 1 supera 0,3 + 0,69, le firme sono tutte corrette e gli input di Alice non sono già stati spesi altrove, quindi la transazione deve essere valida. Quando gli importi sono accecati, tuttavia, le cose non sono così banali. Come inizi a valutare se un importo sconosciuto è uguale o superiore alla somma di altri due importi sconosciuti?
Una panoramica della crittografia coinvolta
Per nascondere i dati è necessaria la crittografia. Tuttavia, i metodi tradizionali sono simili a mettere i documenti in una cassaforte: una volta chiusi al suo interno, diventano inutilizzabili finché non vengono rimossi. Ciò di cui abbiamo bisogno affinché le transazioni riservate funzionino è una cassaforte digitale il cui contenuto non venga rivelato, ma le cui proprietà possano essere verificate da un estraneo.
La risposta sta nello specifico nella crittografia omomorfica, in uno schema chiamato impegno Pedersen. Questo tipo di crittografia consente a un estraneo di eseguire operazioni su dati crittografati (che non possono vedere) per una serie di scopi.
È possibile utilizzare un hash regolare per impegnarsi nei dati che si desidera rivelare in seguito. Supponiamo che tu voglia indire un concorso sui social media, dove chi indovinerà il tuo exchange preferito vincerà un premio di 0,01 BTC. I partecipanti potrebbero essere scettici perché potresti semplicemente guardare le risposte dopo la chiusura del concorso e scegliere uno scambio che non è stato menzionato.
Quello che potresti fare è fornire ai tuoi follower un hash: una stringa di numeri e caratteri apparentemente casuali che si associa a un input specifico. Passi il tuo scambio attraverso una funzione per ottenere un determinato risultato. Illustreremo con l'algoritmo SHA256:
f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191Guardando questo, non hai idea di quale sia stato l'input. Né è possibile invertire la funzione per ottenerlo. Se sai che l'input era “Binance”, però, puoi facilmente verificare che il suo hash corrisponda a quello sopra elencato. In questo modo, i tuoi follower hanno la certezza che non cambierai la tua risposta alla fine del concorso: ciò produrrebbe un risultato completamente diverso.
Realisticamente, però, questo non è molto sicuro. Anche se i tuoi follower non possono decodificare l'algoritmo, possono creare un elenco di possibili scambi, sottoponendoli a hashing su ognuno di essi finché non ottengono una corrispondenza. Possiamo ridurre la probabilità che ciò accada aggiungendo alcuni dati casuali chiamati fattore di accecamento ai dati che sottoporremo ad hashing.
Se inseriamo "Binance è il mio scambio preferito, lo amo più di ogni altro scambio 2#43Wr", diventa molto più difficile per un avversario indovinarlo (e per 0,01 BTC, è certamente improbabile che qualcuno ci provi).
Un impegno Pedersen ci consente di aggiungere gli input dietro gli impegni. Come illustra Maxwell:

C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)
Dove BF è il fattore di accecamento e D sono i dati
Ci sono ancora alcuni passaggi da qui che coinvolgono la crittografia a curva ellittica e le prove di portata, ma l'idea di base è che un utente abbia un impegno Pedersen per il proprio indirizzo. Quando si inviano fondi, vengono creati due impegni aggiuntivi (uno per il cambio di indirizzo da restituire all'utente e uno per l'indirizzo di destinazione).
Nessuno sa quanto viene inviato, ma può verificare che gli impegni di cambio e destinazione (il lato sinistro dell’equazione di Maxwell) si sommano all’indirizzo di origine (il lato destro dell’equazione). Se questo viene valutato correttamente, la transazione dell’utente è valida, poiché si può dimostrare che gli input sono uguali agli output.
Cosa possono realizzare le Transazioni riservate?
Se le transazioni riservate dovessero essere implementate in Bitcoin, godremmo di un sistema molto più privato. Sia gli input che gli output verrebbero mascherati dalla rete più ampia e le voci sul registro verrebbero offuscate, ma i nodi potrebbero comunque verificarne l'autenticità. Con questo massiccio aumento della privacy, i bitcoin potrebbero essere effettivamente resi fungibili, poiché l'analisi della catena non rivela più la storia di una data unità.
Per quanto riguarda l’integrazione delle transazioni riservate nel protocollo, al momento non sembra probabile. Con questa funzionalità aggiuntiva, le transazioni sono molto più grandi di quelle standard: dato lo spazio di blocco limitato, ciò non farebbe altro che aumentare la domanda. Sarebbe inoltre necessario che la maggioranza dei partecipanti accettasse di modificare il codice, un compito che tradizionalmente si è rivelato difficile.
Pensieri conclusivi
Le transazioni riservate hanno visto alcune iterazioni in altre criptovalute e sidechain Bitcoin. Ad esempio, Monero li utilizza in combinazione con costrutti chiamati firme ad anello per ottenere l'anonimato e la fungibilità. La sidechain Liquid li implementa per una maggiore privacy e MimbleWimble li estende agli stessi fini.
Per i vantaggi che apportano, le transazioni riservate comportano il compromesso di un’impronta maggiore. Le criptovalute spesso hanno difficoltà con la scalabilità e la produttività a livello di base, e le dimensioni delle transazioni più grandi non piacciono a tutti. Detto questo, i difensori della privacy ritengono che sia essenziale nascondere gli importi delle transazioni e i partecipanti per consentire veramente alla criptovaluta di fungere da denaro fungibile.

