Nella conclusione della serie “Alla scoperta del Bitcoin”, Giacomo Zucco esplora i concetti di cronologia univoca, costi di mining e transazioni timechain.

Discovering Bitcoin

Questa è la settima e ultima puntata della serie del bitcoiner Giacomo Zucco “Alla scoperta di Bitcoin: una breve panoramica”. Leggete l’Introduzione alla serie, la parte 1, la parte 2, la parte 3, la parte 4, la parte 5 e la parte 6.

Per concludere la nostra serie “Alla scoperta di Bitcoin”, ci soffermeremo sull’uso delle firme digitali e del paradigma CoinJoin per esplorare i concetti di Bitcoin e timechain, i costi di estrazione e le transazioni off-chain.

Dimostrare l’unicità: la Timechain

Siamo finalmente giunti alla fine della nostra esplorazione del Piano ₿, tornando alla domanda “Quando?” da cui siamo partiti.

È una domanda importante, perché giustifica l’introduzione della cosiddetta “tecnologia blockchain”, un’espressione decisamente abusata che, nel suo significato originario, non faceva altro che dare una risposta a un problema di unicità cronologica (é interessante, a questo proposito, che Satoshi stesso abbia chiamato questa struttura “timechain”, che è anche il termine che useremo qui).

Image placeholder title

Cerchiamo di capire quale problema viene risolto con Bitcoin e la timechain, tornando alla nostra piccola storia. Avete progettato un sistema di denaro digitale in cui l’emissione e la proprietà sono entrambe decentralizzate, sfruttando una sorta di puzzle e firme crittografiche in una combinazione intelligente.

Ma come impedite agli utenti di spendere due volte la stessa UTXO? Se Carlo, un utente disonesto, trasferisce dei sats a un indirizzo controllato da Daniele e poi firma un’altra transazione che ritrasmette quegli stessi sats a un indirizzo controllato da lui stesso, quale transazione verrà applicata dalla rete? Entrambe sarebbero “valide” dal punto di vista della sequenza di firme e script, ed entrambe punterebbero a un’emissione iniziale valida, con una difficoltà PoW corretta.

E come si impedisce ai ” miners ” di mentire sul timestamp (un timbro digitale) corretto, ingannando l’algoritmo di difficulty adjustment per aumentare l’emissione di nuova moneta? Se il miner Marco riesce a risolvere centinaia di puzzle PoW a bassa difficoltà, ma include timestamp falsificati che ritraggono le soluzioni a soli 10 minuti di distanza l’una dall’altra, come può un utente generico, magari connesso da poco al sistema, scoprire e dimostrare tale comportamento disonesto?

Nel precedente esperimento di e-gold, un server risolveva banalmente entrambi i problemi. Ma ora non esiste un server centrale, quindi chi decide la cronologia unica degli eventi?

Se la rete potesse in qualche modo “votare”, potrebbe raggiungere un consenso “democratico” al riguardo. Ma i processi di voto, pur essendo possibili in sistemi con un numero fisso di attori noti (spesso chiamati “federazioni”), non possono funzionare all’interno di insiemi dinamici di attori sconosciuti e anonimi. Non si può semplicemente usare il “numero di nodi” come proxy per i diritti di voto, poiché ogni utente potrebbe fingere di “essere” milioni di nodi diversi in quello che è noto come “attacco sybil”. È necessario un altro modo, “sybil-resistente”, per incoraggiare tutti i nodi a trovare e mantenere il consenso su un’unica storia coerente e immutabile.

Image placeholder title

Purtroppo, una soluzione deterministica e definitiva basata sulla matematica è teoricamente impossibile. Ma una soluzione statistica e asintotica basata sull’economia è praticamente possibile, e siete abbastanza intelligenti da trovarla. L’idea è questa: ogni volta che i miners cercano di risolvere i puzzle PoW, dovrebbero includere nei loro messaggi uno snapshot compatto della timeline transazionale corrente!

Invece dei soli messaggi di emissione, i “blocchi” di informazioni più complessi dovrebbero passare attraverso la funzione di hash. Ognuno di questi blocchi contiene (insieme al messaggio di emissione, data e ora e a un numero casuale necessario per risolvere il puzzle alla difficoltà corretta) la soluzione del blocco precedente (che era stata trovata da altri miners circa 10 minuti prima) e un elenco di transazioni effettuate di recente da altri utenti.

Un blocco che contiene transazioni già incluse in blocchi precedenti viene considerato non valido. Un blocco con una data e ora significativamente incompatibile con i blocchi precedenti viene anch’esso scartato.

Con questo trucco, tutti gli attori sono incentivati a convergere su una versione coerente della stessa cronologia. Marco potrebbe includere una transazione valida che contraddice (con una doppia spesa) una transazione precedentemente confermata, o alterare data e ora per ingannare l’aggiustamento della difficoltà, ma in tal caso gli altri nodi rifiuterebbero tale blocco e lui perderebbe il valore della nuova emissione, avendo sprecato tempo ed energia per nulla.

I miners spendono denaro per risolvere gli enigmi, e quindi è abbastanza sicuro che vogliano godere delle ricompense associate, creando blocchi che non vengono rifiutati, almeno negli scenari in cui seguono solo gli incentivi finanziari endogeni al sistema.

Image placeholder title

Da Bitcoin e la timechain alle mining fees

Questa soluzione, per quanto brillante, manca ancora di incentivi per i miners a includere transazioni altrui. Potrebbero semplicemente scegliere di risparmiare la potenza di calcolo necessaria per verificare gli script e le firme (che, sebbene non sia così elevata come quella necessaria per la collisione degli hash, è comunque rilevante) e di includere solo le proprie emissioni valide in blocchi altrimenti vuoti. Inoltre, la quantità decrescente di sats consentita in tali emissioni ridurrebbe (anche scontando un aumento del potere d’acquisto dei sats) l’incentivo a risolvere i blocchi a causa del paradigma dell’offerta controllata – finendo per annullarlo completamente alla fine dell’ultima era, quando non ci sarà inflazione.

Il problema si risolve introducendo delle “commissioni di estrazione”, un piccolo “extra” che gli utenti possono aggiungere alle loro transazioni per incentivare i miners a includere i dati di un’operazione.

Funziona così: il sistema consente ai miners di includere nelle loro transazioni, insieme all’emissione di nuovi sats “coniati” (compatibili con il periodo attuale), anche la differenza in sats tra UTXO creati e utilizzati di tutte le transazioni valide incluse nel blocco. Le commissioni non dipendono mai dall’importo transato, ma solo dalla dimensione della transazione (complessità dello script, numero di firme, ecc.) e dalla priorità desiderata all’interno dei blocchi.

Problemi di scalabilità (e di oscurità)

La tariffa minima di mining necessaria per includere una transazione in un blocco varia a seconda della domanda e dell’offerta di “spazio di blocco”. Dal lato dell’offerta, il numero di transazioni che possono essere aggiunte alla timechain è limitato dalla dimensione massima dei blocchi (meno di 4 megabyte per ogni blocco) e dalla velocità massima dei blocchi (circa uno ogni 10 minuti). Dal lato della domanda, ogni utente ha vincoli e preferenze diverse. Alcuni possono aspettare di più per pagare di meno, altri possono pagare di più per aspettare di meno, alcuni usano portafogli con un’eccellente stima dinamica delle commissioni. In generale, una domanda crescente di spazio per i blocchi implica un aumento delle tariffe di estrazione. Questo limita chiaramente la scalabilità del sistema – in particolare, poiché le commissioni di mining sono indipendenti dalla quantità di valore trasferito, si potrebbe dire che riduce effettivamente la divisibilità.

Inoltre, in generale, l’utilizzo di una timechain implica che ogni nodo della rete debba tenere traccia di tutto per sempre: ogni singola transazione on-chain deve essere scaricata e verificata da ogni soggetto che utilizzerà il sistema , anche molto lontano nel futuro. Un sistema di questo tipo chiaramente non è scalabile. Manca anche di oscurità, poiché ognuno deve conservare per sempre una copia di ogni transazione, consentendo qualsiasi tipo di analisi forense e di tentativo di deanonimizzazione.

Image placeholder title

Sarebbe possibile migliorare la situazione per alcuni utenti, a costo di creare un’altra classe di utenti più “privilegiata”. Ad esempio, se si aumenta la dimensione e la frequenza dei blocchi, l’offerta di spazio per i blocchi aumenta e il suo prezzo diminuisce. Ma il costo di gestione dei nodi, con la capacità di verificare in modo indipendente la validità delle transazioni e dei blocchi, aumenta molto più velocemente di tale offerta, centralizzando la topologia dell’intero sistema.

Certo, una nuova classe di nodi specializzati potrebbe servire come una sorta di “messaggio firmato” per gli utenti non validanti, dando loro una qualche garanzia che una transazione sia valida. Dopo tutto, il conio delle monete è stato introdotto per delegare a poche entità specializzate e fidate il costoso compito di verificare le monete di metallo prezioso. Ma, proprio come il conio, questa strategia (nota come “SPV”) implica una forte centralizzazione, con tutti i rischi annessi di interferenze politiche o di censura da parte di personaggi come Mario.

Un nuovo paradigma per la timechain: “Off-Chain”

Esiste un modo intelligente per mitigare i limiti fondamentali di scalabilità dei sistemi di consenso globale senza sacrificarne la decentralizzazione. Lo chiameremo “paradigma off-chain”.

L’idea è semplice: astenersi dall’impegnare ogni transazione in un blocco quando non è strettamente necessario, mantenendo la maggior parte del traffico fuori dalla timechain pubblica (con il suo costoso consenso globale) e utilizzandola solo per la risoluzione dei conflitti e liquidazione periodica.

Questa evoluzione è simile al modo in cui le persone utilizzano i tribunali e i contratti nei sistemi di common law: I tribunali possono creare precedenti pubblicamente vincolanti, raggiungendo una sorta di “consenso legale globale”, ma sono relativamente lenti e costosi, quindi la maggior parte delle parti commerciali di solito sottoscrive solo contratti privati bidirezionali, chiedendo ai tribunali di verificarli e farli rispettare solo quando sorgono conflitti o quando è previsto un regolamento periodico.

I contratti intelligenti avanzati potrebbero essere utilizzati per rendere questo tipo di “ricorso” ridotto alla fiducia. A differenza di un vero e proprio sistema legale, la timechain decentralizzata potrebbe evitare i pregiudizi umani e la corruzione, basandosi principalmente sulla crittografia e sul codice. Diversamente dai certificati di credito discussi nel contesto della virtualizzazione, le transazioni off-chain non sono “virtuali”. Esse sono transazioni effettivamente valide, con un’alta probabilità di essere applicate dal sistema indipendentemente dall’onestà delle parti coinvolte.

Image placeholder title

Ben presto ci si rende conto che questo tipo di paradigma potrebbe migliorare notevolmente anche l’oscurità del sistema. Invece di avere tutti i nodi che registrano tutte le transazioni per sempre, la maggior parte di queste transazioni verrebbe scambiata privatamente tra le sole parti interessate, rendendo l’analisi forense da parte di malintenzionati più difficile, più costosa, meno completa e meno affidabile.

Image placeholder title

L’implementazione principale di questa strategia è una rete secondaria di “canali di pagamento” bilaterali e prefinanziati, in grado di instradare le transazioni attraverso molti anelli in un modo atomico e ridotto al minimo della fiducia. Gli utenti la chiamano con un nome molto poetico: “Lightning Network” (il cui acronimo è spesso incluso nell’etichetta dell’intera suite di protocolli del sistema, denominata “LNP/BP” in analogia allo storico “TCP/IP”).

Ma ci sono altri casi minori dello stesso paradigma; ad esempio, diverse tecniche per tenere lo script vero e proprio fuori dalla timechain fino a quando non è necessario, risparmiando spazio nei blocchi e anche privacy. (La gente chiama queste tecniche con molti nomi strani, come “Taproot”, “Graftroot”, “g*root”, “Scriptless Script” e così via).

Image placeholder title

Con l’introduzione di questi ultimi pezzi di tecnologia, i vostri utenti hanno finalmente tutto ciò che serve per utilizzare il sistema nella vita reale, al fine di riprendersi alcune delle caratteristiche più importanti del denaro. Grazie, “Satoshi”!

Image courtesy of CryptoScamHub

Hai fatto molta strada dalle tue prime scoperte da cavernicolo, in un lontano passato. Ora, solo il futuro potrà dirci se questo tuo Piano ₿ funzionerà. Ad maiora!

Tradotto dall’originale scritto per Bitcoin Magazine