introduzione
La trasparenza del sistema è la chiave per il normale funzionamento della blockchain. La cosiddetta trasparenza significa che ogni nodo della rete può conservarne una copia e ha il diritto di verificare se ci sono violazioni. In molti registri distribuiti, chiunque può caricare un block explorer e sfogliare i blocchi, le transazioni e gli indirizzi nella rete.
Dal punto di vista della privacy, questo approccio non è l’ideale. In sistemi come Bitcoin, ogni transazione può essere collegata a transazioni precedenti. I token sono tecnicamente non fungibili, il che significa che ogni token è legato a una transazione specifica. Nessuno può impedirti di inviare Bitcoin, ma se quelle monete passano attraverso un indirizzo inserito nella lista nera, l'altra parte ha il diritto di rifiutare la transazione.
Nel peggiore dei casi, una mancanza di omogeneità può avere conseguenze profonde sulle fondamenta del sistema. Le monete pulite ottengono un premio, mentre le prime monete perdono valore a causa di problemi storici.
La privacy di Bitcoin è spesso sopravvalutata. Infatti sia i token che gli utenti del sistema sono tracciabili. Le persone sono abituate a operare in modo anonimo (mostrando un indirizzo pubblico invece di un nome), ma questo approccio presenta alcuni inconvenienti. Con precisione sempre maggiore, analisi all'avanguardia aggregano entità attraverso la rete per la deanonimizzazione.
Le transazioni riservate sono un mezzo aggiornato per promuovere transazioni veramente private.
Cos'è una transazione riservata?
Il concetto di transazioni riservate (CT) è stato proposto per la prima volta nel 2013 da Adam Back, CEO di Blockstream, ed è stato successivamente ampliato ed esteso dallo sviluppatore Bitcoin Gregory Maxwell. Nella prima parte, Maxwell ha delineato i problemi menzionati di "omogeneizzazione" e "anonimato debole" e ha proposto soluzioni corrispondenti. Ha sottolineato che l'importo della transazione può essere nascosto nella rete più ampia e solo i partecipanti alla transazione possono conoscere il valore specifico.

In circostanze normali (le transazioni possono essere visualizzate pubblicamente), i nodi possono facilmente verificare che la quantità di monete ricevute superi l’importo inviato. Ad esempio, Alice vuole inviare 0,3 BTC a Bob, utilizza l'output non speso (chiamiamolo "1 BTC") e lo divide in due parti: 0,3 BTC a Bob e 0,69 BTC da rispedire al portafoglio personale (il resto i fondi vengono estratti man mano che vengono pagate le commissioni minerarie).
Per gli altri nodi è una questione di semplice algebra: 1 > 0,3+0,69, le firme sono tutte corrette e l'input di Alice non viene consumato altrove, quindi la transazione deve essere valida. Dopo che l'importo è stato nascosto, le cose si sono complicate. Come determiniamo se un importo sconosciuto è maggiore o uguale alla somma di altri due importi sconosciuti?
Una panoramica dei principi crittografici coinvolti
Per nascondere i dati è necessario applicare alcune tecniche di crittografia. Tuttavia, il metodo tradizionale è simile alla conservazione dei documenti in una cassaforte: una volta chiusi, non possono essere estratti finché non vengono aperti. Le transazioni riservate funzionano in modo simile a una cassaforte digitale, dove i contenuti sono nascosti e la proprietà dei beni può essere verificata da estranei.
La risposta sta nella “crittografia omomorfica”, un meccanismo chiamato promessa di Pedersen. Questo tipo di crittografia consente agli estranei di eseguire operazioni sui dati crittografati per vari scopi senza poter visualizzare il contenuto specifico.
È possibile utilizzare un hash regolare per inviare i dati che si desidera visualizzare. Supponiamo che tu voglia annunciare un concorso sui social media per vincere 0,01 BTC indovinando il tuo exchange preferito. I partecipanti potrebbero essere scettici riguardo al concorso perché puoi sicuramente guardare le loro risposte dopo il concorso e scegliere uno scambio che nessuno ha menzionato.
Puoi farlo fornendo ai tuoi fan un hash: una stringa apparentemente casuale di numeri e caratteri (corrispondente a un input specifico), passando la risposta attraverso una funzione specifica (cioè specificando lo scambio) e infine ottenendo l'output. Prendiamo come esempio l’algoritmo SHA256:
f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191In base al valore hash riportato sopra, non conosci l'input specifico e non puoi ottenere l'input precedente lavorando all'indietro attraverso la funzione. Ma se sai che l'input è "Binance", puoi facilmente determinare che il suo hash corrisponde a quello sopra elencato. In questo modo, i fan si sentiranno più a loro agio sapendo che non cambierai la tua risposta alla fine del gioco, il che comporterebbe un risultato completamente diverso.
In realtà, questo metodo non è assolutamente sicuro. Sebbene i fan non possano decodificare l'algoritmo, possono creare un elenco di scambi e abbinare gli hash uno per uno finché non ottengono la risposta corretta. Per evitare tali operazioni, possiamo aggiungere dati casuali, chiamati "fattore di mascheramento", ai dati che devono essere sottoposti ad hashing.
Se inseriamo "Binance è il mio scambio preferito rispetto a qualsiasi altro scambio 2#43Wr", sarà difficile per i concorrenti indovinare il risultato (dopo tutto, non possono provare innumerevoli volte per soli 0,01 BTC).
Con le promesse di Pedersen possiamo aggiungere input dopo la promessa. Maxwell lo spiegò così:

C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)
dove BF si riferisce al fattore di mascheramento e D si riferisce ai dati
I prossimi passi riguardano la crittografia a curva ellittica e le prove di intervallo, ma l'idea di base è eseguire l'elaborazione dell'impegno di Pedersen sull'indirizzo. Al momento dell'invio dei fondi, il sistema genererà due "impegni" aggiuntivi (l'indirizzo di cambio e l'indirizzo di destinazione per la restituzione dei fondi).
Nessuno conosce l'importo inviato, ma si può verificare che il cambio e l'impegno di destinazione (il lato sinistro dell'equazione di Maxwell) siano uguali all'indirizzo originale (il lato destro dell'equazione). Se il calcolo è corretto, è sufficiente dimostrare che l'input e l'output sono uguali, indicando che la transazione dell'utente è valida.
Quali risultati possono ottenere le transazioni riservate
Se in Bitcoin vengono implementate transazioni riservate, è possibile creare un sistema più privato. Gli input e gli output del sistema verranno nascosti e le entità nel registro verranno offuscate, ma i nodi potranno comunque verificarne l'autenticità. Con una privacy notevolmente migliorata, l’analisi della catena non può rivelare la storia di una determinata unità, rendendo Bitcoin effettivamente fungibile.
Per quanto riguarda la possibilità di integrare nell'accordo le "transazioni riservate", al momento sembra improbabile. Con l’aggiunta di questa funzionalità, la dimensione delle transazioni sarà maggiore rispetto alle transazioni normali, il che creerà naturalmente una maggiore domanda di mercato dato lo spazio limitato dei blocchi. Inoltre, la maggioranza dei partecipanti alla rete deve accettare di modificare il codice, cosa che in passato ha rappresentato un problema.
Riassumere
Alcune criptovalute hanno ripetuto in una certa misura le transazioni riservate nelle sidechain Bitcoin. Ad esempio, Monero integra perfettamente le transazioni riservate con la struttura della "firma ad anello" per ottenere anonimato e omogeneità. Anche la privacy sia della sidechain di Liquid che di MimbleWimble è stata notevolmente migliorata.
Le transazioni riservate presentano molti vantaggi, ma affrontano anche il problema dell’aumento del volume di elaborazione. Le criptovalute affrontano da tempo sfide in termini di scalabilità e produttività del livello di base, e anche grandi volumi di transazioni impediranno a molte persone. Tuttavia, i difensori della privacy sostengono che sia necessario nascondere gli importi delle transazioni e i partecipanti affinché le criptovalute diventino valute veramente omogenee.


