E se la blockchain potesse mantenere un segreto?

L'autore ospite Mr. Haysberg spiega come Midnight utilizza prove a conoscenza zero per verificare le transazioni senza rivelare dati privati.

By SongMarketCap

Midnight News - E se la blockchain potesse mantenere un segreto?

Immagina che il tuo conto bancario funzionasse così: ogni pagamento che hai mai effettuato, ogni stipendio che hai ricevuto, ogni saldo, visibili a chiunque abbia una connessione internet.

Il tuo vicino. Il tuo capo. Un estraneo che vuole derubarti.

È così che funzionano la maggior parte delle blockchain oggi.

Il 4 novembre, @MidnightNtwrk ha pubblicato una breve frase che a mio avviso riassume la direzione in cui stiamo andando: non devi più scegliere tra pubblico e privato. C'è una terza opzione.

Questo articolo spiega quella opzione a parole semplici. Se sei nuovo nel mondo crypto, capirai. Se costruisci, in ogni sezione c'è anche uno strato più profondo per te.

Il problema: due scelte sbagliate

Per anni, le blockchain ti hanno dato due opzioni.

  • Catene pubbliche: chiunque può verificare che tutto sia corretto. Ottimo per la fiducia. Ma tutta la tua vita finanziaria è in mostra, per sempre.

  • Sistemi privati: i tuoi dati sono nascosti. Ma ora devi fidarti di chi gestisce il sistema e perdi l'apertura che ha reso utile la blockchain in primo luogo.

Scegli l'apertura oppure scegli la privacy. Era questo l'accordo.

La terza opzione

Midnight divide il problema in due.

La rete in sé rimane pubblica. Chiunque può verificarla e anche il suo token NIGHT rimane pubblico. I tuoi dati personali restano sul tuo dispositivo. Non vengono mai pubblicati sulla chain.

Invece dei tuoi dati, la chain riceve una prova: un piccolo pezzo di matematica che afferma "le regole sono state rispettate" senza mostrare che cosa c'era dentro.

L'app decide cosa può essere rivelato e a chi. Una banca, un revisore, un partner. Solo ciò che serve.

Un modo semplice per immaginarlo: mostrare a un buttafuori che hai più di 18 anni senza mostrare il tuo nome, il tuo indirizzo o la tua data di nascita esatta.

Per gli esperti: questa prova è una prova a conoscenza zero. Il consenso e NIGHT vivono sul registro pubblico, mentre lo stato dell'app può essere diviso in parti pubbliche e private e solo le prove sulla parte privata toccano la chain.

Elegantna autorska kartica za Midnight News

Compact: il linguaggio alla base

Per creare app di questo tipo, gli sviluppatori hanno bisogno di un modo per indicare "questa parte è pubblica, questa parte è privata". Su Midnight quello strumento è un linguaggio di programmazione chiamato Compact. Ne ho parlato in dettaglio in Private by Default Ep. 4.

Cosa conta per tutti:

  • Assomiglia molto a TypeScript, uno dei linguaggi più popolari al mondo, quindi gli sviluppatori non partono da zero.

  • Non serve essere un crittografo. Indichi ciò che è privato e ciò che è pubblico e gli strumenti gestiscono la matematica pesante.

  • È open source, quindi chiunque può ispezionarlo.

Per gli esperti: Compact è fortemente e staticamente tipizzato e limitato, quindi i contratti non possono andare in loop all'infinito. Le release pubbliche sono su github.com/midnightntwrk/compact.

Come funziona un'app Midnight: il ristorante

Ogni contratto Compact ha tre parti. Il modo più semplice per immaginarle è pensare a un ristorante.

  • La vetrina (ledger). Ciò che tutti possono vedere dalla strada. Informazioni pubbliche archiviate sulla chain.

  • La ricetta segreta (witnesses). Chiusa in cucina. Informazioni private che restano sul tuo dispositivo.

  • Le regole della cucina (circuits). Il processo che trasforma gli ingredienti in un piatto. Su Midnight queste regole diventano prove, così i clienti possono fidarsi che il piatto sia stato preparato correttamente senza mai vedere la ricetta.

Gli stessi sviluppatori di Midnight lo riassumono in una frase: la logica è pubblica, i dati sono privati e il risultato può essere verificato da chiunque.

Privato per impostazione predefinita

Ecco la parte che mi piace di più. In Compact tutto è privato a meno che tu non scelga diversamente.

Se uno sviluppatore vuole che un'informazione diventi pubblica, deve dichiararlo esplicitamente. Se se ne dimentica, il programma si rifiuta di compilare e indica il punto esatto in cui i dati trapelerebbero.

Per gli esperti: questo avviene con disclose(). Qualsiasi valore proveniente da un witness o da un argomento di un circuit che confluisca nello stato pubblico del ledger, in un valore di ritorno da un circuit esportato o in un altro contratto deve essere racchiuso in disclose(), altrimenti il compilatore lo rifiuta. La documentazione di Midnight lo chiama scherzosamente Witness Protection Program.

La privacy è la cintura di sicurezza. Rendere pubblico è una scelta consapevole.

Perché la privacy è in realtà sicurezza

Il 5 novembre, Sebastien Guillemot (@SebastienGllmt), CTO della Midnight Foundation, ha pubblicato un post sul blog con un'idea forte: su una blockchain la privacy non è un lusso. È sicurezza.

Pensa a che cosa una chain completamente pubblica consegna a un criminale:

  • Un elenco dei wallet più ricchi.

  • L'intera cronologia di chiunque vogliano prendere di mira.

  • Indizi per messaggi di phishing che sembrano reali perché sanno che cosa hai fatto.

Se nessuno può vedere il tuo saldo, nessuno può prenderti di mira per quello.

Come Midnight nasconde il tuo denaro

Potresti pensare: basta offuscare il saldo e il gioco è fatto. Non proprio. Se offuschi il numero 1000 sempre nello stesso modo, un attaccante può offuscare in anticipo numeri comuni e semplicemente abbinarli.

Quindi Midnight fa qualcosa di più intelligente.

Il tuo denaro è suddiviso in note separate, come banconote in un portafoglio, invece di un unico grande totale. Ogni nota è sigillata insieme al suo importo, al tipo di token, alla chiave del proprietario e a un grande segreto casuale. Quel sigillo si chiama note commitment.

Per chi osserva, ogni sigillo sembra rumore casuale. Una nota da 1 token e una nota da 1 milione sembrano uguali.

Per gli esperti: il commitment è un hash su valore, tipo di token, chiave del proprietario e una grande nonce casuale, quindi lo stesso valore nominale produce molti commitment unici e gli attacchi per precomputazione falliscono.

[NEWSBREAK]

Spendere senza mostrare nulla

Se tutto è nascosto, come fa la rete a impedire a qualcuno di spendere lo stesso denaro due volte? Due strumenti:

  • Una prova di proprietà. Quando spendi, dimostri di possedere una nota valida senza rivelare quale nota, quanto contiene o chi sei.

  • Un timbro monouso chiamato nullifier. Ogni nota ne ha uno. Quando spendi, il timbro viene pubblicato. La rete verifica che non sia mai stato usato prima, così la stessa nota non può mai essere spesa due volte. E nessuno può ricondurre il timbro alla nota originale.

Pensa a un braccialetto di un festival che viene perforato al varco. La guardia sa che è stato usato. La guardia non sa chi sei.

Viewing keys: utili, ma proteggile

Midnight ha anche viewing keys.

Una viewing key ti consente di vedere il denaro in arrivo. Non mostra ciò che hai speso né il tuo saldo totale. Non può muovere i tuoi fondi.

Comunque, trattala come una password e condividila solo con app di cui ti fidi.

La versione breve

  • Una rete pubblica che tutti possono verificare.

  • I tuoi dati restano con te.

  • La chain vede sigilli, prove e timbri, non il tuo saldo o la tua cronologia.

  • Gli sviluppatori decidono esattamente dove si trova il confine tra pubblico e privato e gli strumenti impediscono fughe accidentali.

Non pubblico. Non privato. Una terza opzione.

Autore ospite · Mr. Haysberg (Vision & Vibe, @visionandvibehq)

Ascolta: Private by Default Ep. 4, su Compact

Guarda su YouTube