BITCOIN IN ITALIANO

BLOG


Quali sono le proprietà chiave di Bitcoin?

Traduzione dell'originale di Jameson Lopp - Pubblicato il 03 gen 2020

Cos'è Bitcoin? Molti hanno tentato di rispondere a questa domanda, ma credo che la nostra ricerca in tal senso sia destinata a continuare per sempre. Il continuo sviluppo del protocollo è il punto in cui si verifica effettivamente l'avanguardia della ricerca su cosa sia Bitcoin e la discussione su ciò che dovrebbe sforzarsi di essere.

Può essere difficile per i nuovi arrivati capire quale tipo di proposte hanno maggiori probabilità di essere accettate per Bitcoin perché ci sono molte regole non scritte riguardanti le modifiche al protocollo. Alcune di queste regole sono più sul lato filosofico, alcune sono più sul lato ingegneristico e di sicurezza, e alcune sono una miscela dei due.

Consenso, non comando e controllo

Non c'è autorità in Bitcoin - anche i principi delineati in questo articolo non sono affatto autorevoli, sono semplicemente osservazioni fatte da me e da altri partecipanti all'ecosistema.

Come si apportano modifiche al sistema? Per cambiare il codice del consenso dobbiamo in qualche modo ottenere il consenso umano per cambiare le regole del sistema. Il processo di proposta di miglioramento di Bitcoin è descritto qui. Non è perfetto, ma la costruzione del consenso è un processo complicato.

Johnson Lau ha fatto un buon lavoro descrivendo i diversi tipi di fork (mezzi per apportare modifiche al consenso della macchina) in questo post e Paul Sztorc ha scritto a lungo sui diversi livelli di coercizione che sono possibili con i fork.

Come sono state apportate le modifiche storicamente?

Chi può accettare o rifiutare le modifiche proposte? A livello di sviluppatore, l'obiettivo è ottenere un "consenso approssimativo", il che significa che non è necessario un accordo al 100%, ma è necessario sviluppare qualsiasi proposta al punto che non ci sono obiezioni ragionevoli rimanenti contro l'implementazione.

Come misuriamo il supporto per le modifiche al sistema? Gli sviluppatori discuteranno tra loro e altri partecipanti all'ecosistema che potrebbero essere interessati da una proposta. Chiunque stia prestando attenzione agli sforzi di sviluppo in corso è invitato a fornire input tramite discussioni su mailing list, archivi di codici, social media, ecc.

In definitiva, la governance del protocollo non avviene tramite una modalità top-down ben definita. Piuttosto, inverte i modelli tradizionali di governance attraverso l'applicazione dal basso verso l'alto.

Minimizzazione della fiducia

“Bitcoin è denaro elettronico P2P che è prezioso rispetto ai sistemi legacy a causa dell'autonomia monetaria che offre ai suoi utenti attraverso la decentralizzazione. Bitcoin cerca di affrontare il problema alla radice con la valuta convenzionale: tutta la fiducia necessaria per farlo funzionare. Non che la fiducia giustificata sia un male, ma la fiducia rende i sistemi fragili, opachi e costosi da utilizzare. I fallimenti della fiducia si traducono in crolli sistemici, la cura della fiducia crea disuguaglianza e vincoli di monopolio e si può abusare dei punti di strozzatura della fiducia che sorgono naturalmente per negare l'accesso al giusto processo.

Attraverso l'uso di prove crittografiche e reti decentralizzate, Bitcoin riduce al minimo e sostituisce questi costi di fiducia. Con la tecnologia disponibile, ci sono compromessi fondamentali tra scala e decentralizzazione. Se il sistema è troppo costoso, le persone saranno costrette a fidarsi di terze parti piuttosto che far rispettare in modo indipendente le regole del sistema. Se l'utilizzo delle risorse della blockchain di Bitcoin, rispetto alla tecnologia disponibile, è troppo grande, Bitcoin perde i suoi vantaggi competitivi rispetto ai sistemi legacy perché la convalida sarà troppo costosa (prezzando molti utenti), costringendo nuovamente la fiducia nel sistema. Se la capacità è troppo bassa ei nostri metodi di transazione troppo inefficienti, l'accesso alla catena per la risoluzione delle controversie sarà troppo costoso, spingendo nuovamente la fiducia nel sistema".
- Greg Maxwell

Anche lo sviluppatore di Bitcoin Matt Corallo ha scritto sull'importanza di questa proprietà:

Delle molte proprietà di Bitcoin, l'assenza di fiducia o la capacità di utilizzare Bitcoin senza fidarsi di nient'altro che del software open source che esegui, è di gran lunga la regina. Più specificamente, l'interesse per Bitcoin sembra derivare quasi esclusivamente dal desiderio di evitare di dover fidarsi di terze parti o combinazioni di terze parti. Questa non dovrebbe essere una novità per nessuno, ma capire esattamente perché questa mancanza di fiducia è così importante (e quali forme assume) è fondamentale per costruire e aggiornare la tecnologia Bitcoin.

Avere un requisito per ridurre al minimo la fiducia è una proprietà fondamentale che abilita molti degli altri principi trattati in questo post. Questi principi possono essere intesi come provenienti e diretti a un obiettivo di scarsa fiducia. Non saremo mai in grado di raggiungere il 100% di sfiducia poiché nessuno ha le risorse per controllare tutto il software e l'hardware che utilizzano per interagire con la rete. Tuttavia, possiamo avvicinarci ragionevolmente in modo da essere fiduciosi che gruppi di partecipanti trasparenti e allineati agli incentivi non colludono a scapito del resto dell'ecosistema.

Decentralizzazione

Un sistema aperto come Bitcoin non manterrà le proprietà desiderate descritte in questo post se diventa sufficientemente centralizzato in modo che gli aspetti della rete possano essere controllati da individui o cartelli. La decentralizzazione è il mezzo, non il fine. Distribuendo il potere il più ampiamente possibile, riduciamo al minimo la fiducia richiesta in una singola entità perché sappiamo che nessuna singola entità può interferire con il nostro utilizzo del sistema.

“Molte persone liquidano automaticamente la valuta elettronica come una causa persa viste tutte le società che hanno fallito dagli anni '90. Spero che sia ovvio che è stata solo la natura centralizzata di quei sistemi a condannarli. Penso che questa sia la prima volta che proviamo un sistema decentralizzato e non basato sulla fiducia."

Esistono molte dimensioni potenziali della centralizzazione e possono essere difficili da quantificare:

Una centralizzazione elevata in una determinata metrica non è necessariamente un killer del sistema, ma dovremmo considerare che un sistema è forte solo quanto il suo punto più debole. Pertanto, qualsiasi modifica al sistema dovrebbe avere cura di evitare il consolidamento del potere lungo qualsiasi asse possibile.

Resistenza alla censura

Nessuno dovrebbe avere il potere di impedire ad altri di interagire con la rete Bitcoin. Nessuno dovrebbe avere il potere di bloccare a tempo indeterminato la conferma di una transazione valida. Sebbene i minatori possano scegliere liberamente di non confermare una transazione, qualsiasi transazione valida che paghi una commissione competitiva dovrebbe alla fine essere confermata da un minatore economicamente razionale.

Pseudonimato

Non dovrebbe essere richiesta alcuna identificazione ufficiale per possedere o utilizzare Bitcoin. Questo principio rafforza la resistenza alla censura e la fungibilità del sistema, poiché è più difficile selezionare transazioni da considerare "contaminate" quando il sistema stesso non tiene traccia degli utenti. Questo principio può essere esteso anche alla consapevolezza che il sistema non richiede nemmeno che i suoi utenti siano umani.

Codice sorgente aperto (Open Source)

Il codice sorgente del client Bitcoin dovrebbe essere sempre aperto a chiunque lo possa leggere, modificare, copiare e condividere. Il valore di Bitcoin si basa sulla trasparenza e sulla verificabilità del sistema. La capacità di controllare qualsiasi aspetto del sistema garantisce che non dobbiamo fidarci di entità specifiche per agire onestamente. I partecipanti all'ecosistema sono incentivati ad agire in modo onesto perché sanno che saranno penalizzati per comportamenti scorretti. Se il codice utilizzato per interagire con il sistema non può essere verificato di per sé, qualsiasi funzionalità di controllo abilitata dal codice diventa inutile.

Collaborazione aperta

Sebbene chiunque sia il benvenuto a condurre ricerca e sviluppo privatamente, qualsiasi tentativo di apportare modifiche al protocollo, in particolare modifiche non compatibili con le versioni precedenti, dovrebbe avvenire all'aperto piuttosto che a porte chiuse. Bitcoin appartiene all'umanità, quindi è importante che le modifiche proposte siano aperte al commento pubblico. Il processo di proposta di miglioramento di Bitcoin è il modo consigliato per suggerire modifiche, anche se, poiché nessuna autorità può imporre che il processo venga seguito, non è un requisito.

La questione dell'organizzazione volontaria e le dinamiche di potere che ne derivano possono portare alla percezione che persone o gruppi specifici siano autorità, ma questa è un'illusione di potere.

Senza autorizzazione

Nessun gatekeeper arbitrario dovrebbe essere in grado di impedire a chiunque di partecipare alla rete (come transactor, nodo, miner, ecc.). Questo è il risultato della riduzione al minimo della fiducia, della resistenza alla censura e dello pseudonimato.

Indifferenza legale

Bitcoin dovrebbe essere indifferente alle leggi degli stati nazione, proprio come gli altri protocolli Internet. I regolatori dovranno capire come rispondere alla funzionalità abilitata dalla tecnologia basata su Bitcoin, non il contrario.

Fungibilità

La fungibilità è una proprietà importante della moneta sana. Se ogni utente avesse bisogno di eseguire analisi di contaminazione su tutti i fondi ricevuti, l'utilità del sistema diminuirebbe in modo significativo.

Tutti gli UTXO dovrebbero essere ugualmente spendibili. Purtroppo al momento non è così e ci sono servizi che tracciano UTXO "contaminati" legati ad attività criminali. L'effetto collaterale di ciò è che utenti innocenti possono rimanere coinvolti in azioni di sequestro a causa della spesa di UTXO che sono solo diversi salti rimossi da un UTXO "contaminato".

La fungibilità richiede privacy; la privacy deriva dall'avere un ampio insieme di utenti tra i quali non è possibile distinguere la proprietà della transazione. Ci sono, sfortunatamente, molte minacce note alla privacy degli utenti di Bitcoin e, di conseguenza, Bitcoin nel suo stato attuale è tutt'altro che perfettamente fungibile.

Compatibilità in avanti

Bitcoin supporta la firma di transazioni senza trasmetterle; esiste il principio secondo cui qualsiasi transazione attualmente possibile firmata ma non trasmessa dovrebbe rimanere valida e trasmessa. Un buon esempio di ciò sono le transazioni con nLocktime che non sono valide per la conferma fino a dopo il tempo specificato dalla transazione; questo potrebbe essere utilizzato per eredità o altri scopi ritardati. La modifica di questa regola potrebbe avere ripercussioni pericolose: un numero inconoscibile di transazioni non trasmesse potrebbe diventare non valido. Nessuno vuole essere responsabile della distruzione della ricchezza di qualcuno perché una regola su cui un utente faceva affidamento è stata estratta da sotto di loro.

Il fatto che Bitcoin si sia attenuto a questo principio dà a tutti fiducia nel protocollo. Chiunque può mettere al sicuro i propri fondi con qualunque schema immagina e distribuirlo senza bisogno di autorizzazione. Finché seguono le regole del protocollo, il peggio che potrebbe accadere è che i nodi smettano di trasmettere determinate transazioni per impostazione predefinita.

Minimizzazione delle risorse

Per mantenere bassi i costi di verifica, lo spazio sul blocco è scarso. In quanto tale, dovrebbe essere costoso per chiunque occupare molto spazio nel blocco. Un principio importante qui è incoraggiare la spesa (consumare) UTXO e scoraggiare la creazione di UTXO. Questo principio può cambiare se l'ecceso di UTXO cessa di essere un problema a causa degli accumulatori UTXO.

La convalida dovrebbe essere economica perché supporta la minimizzazione della fiducia se più utenti possono permettersi di controllare il sistema; la convalida a buon mercato rende anche costosi gli attacchi di esaurimento delle risorse. Bitcoin fornisce il meccanismo per rifiutare rapidamente blocchi non validi prodotti a basso costo. Questo è il principio fondamentale dell'hash cash: costringere l'attaccante a pagare a caro prezzo per creare spam. Scaricando prima l'intestazione del blocco da 80 byte, un nodo può ottenere la prova del lavoro ed eseguire una convalida corretta e rapida prima di sincronizzare le transazioni del blocco.

Dovremmo anche dare la priorità all'uso efficiente dello spazio di blocco archiviando solo i dati minimi richiesti per convalidare operazioni complesse piuttosto che archiviare ed eseguire operazioni complesse sulla blockchain stessa.

Verifica > Calcolo

Un sottoinsieme del principio di minimizzazione delle risorse. Per la logica complessa, è auspicabile che l'esecuzione di detta logica venga eseguita dal minor numero di persone possibile; chiunque altro stia eseguendo un nodo di convalida completo sulla rete non dovrebbe preoccuparsi di ogni singolo passaggio della logica, ma piuttosto dovrebbe essere semplicemente soddisfatto che la logica sia stata eseguita correttamente. La correttezza è più importante della completezza.

"Usa la blockchain per ciò che sa fare meglio."

Andrew Poelstra

La massima ottimizzazione possibile per qualsiasi sistema è evitare di eseguire calcoli in primo luogo. Le blockchain sono utili per l'archiviazione di dati con timestamp per scopi di controllo; memorizzare una prova di calcolo che può essere controllata da chiunque se ne frega dovrebbe essere sufficiente, invece di richiedere a ogni partecipante di calcolare la logica per le transazioni che non li riguardano.

Convergenza

Dati due client Bitcoin a caso, se si connettono a un singolo peer onesto, dovrebbero alla fine convergere sulla stessa punta della catena. Ad esempio, Bitcoin ABC ha infranto questo principio istituendo una regola di riorganizzazione della catena massima di 10 blocchi. Di conseguenza, se ci fosse una partizione di rete e un paese come la Cina fosse tagliato fuori dal resto di Internet, quei miner continuerebbero a estrarre una catena diversa e quando le reti fossero ricongiunte i due fork della catena non convergerebbero nella catena con la prova di lavoro più cumulativa.

Tutte le operazioni di transazione devono essere deterministiche. Dovrebbe essere possibile eseguire una transazione in un modo solo se lo stato del sistema è lo stesso; i fattori esterni al sistema non dovrebbero avere effetto sui suoi calcoli. Allo stesso modo, non dovresti avere script che funzionano in due modi diversi su due macchine diverse. L'unica soluzione a questo è l'isolamento: i contratti e le transazioni intelligenti devono essere indipendenti da elementi non deterministici.

Le modifiche al protocollo non dovrebbero creare la possibilità che le transazioni vengano invalidate dalle riorganizzazioni della blockchain. Non solo le operazioni di transazione dovrebbero essere deterministiche, ma dovrebbero essere senza stato. Ad esempio, vedere la proposta OP_BLOCKNUMBER fatta nel 2010.

Diverse persone hanno proposto codici operativi che potrebbero rendere non valida una transazione dopo un reorg. Le proposte sono generalmente richieste di essere riprogettate per essere sempre valide in avanti utilizzando il design OP_CLTV, ma a volte è indesiderato o poco pratico e si suggerisce che potrebbe essere accettabile avere un codice operativo che ingombrare una transazione per cento blocchi simile a una transazione coinbase o OP_CSV 100 blocchi.

Immutabilità della transazione

Ogni blocco aggiuntivo aggiunto alla catena dopo un dato blocco dovrebbe rendere molto meno probabile che il blocco dato venga reso orfano da una riorganizzazione della catena. Sebbene il protocollo consenta riorganizzazioni arbitrarie della catena di lunghezza, le riorganizzazioni lunghe sarebbero probabilmente dannose in quanto alcuni software o nodi potrebbero non essere in grado di gestirle con garbo. Inoltre, le riorganizzazioni più lunghe di 100 blocchi potrebbero essere ulteriormente distruttive a causa del fatto che le transazioni coinbase spese cessano di esistere, distruggendo efficacemente il valore.

Sebbene tecnicamente non possa esserci alcuna garanzia di immutabilità, possiamo garantire che diventi poco costoso annullare una transazione dopo che è stata sufficientemente sepolta sotto una prova sufficiente del lavoro.

Resistenza alla negazione del servizio

Non dovrebbe essere possibile per un peer remoto effettuare una richiesta a un nodo Bitcoin che consuma una quantità eccessiva di risorse. Un esempio di funzionalità che infrange questo principio sono i filtri SPV bloom, che in condizioni contraddittorie possono essere utilizzati per consumare un sacco di I / O del disco su un peer di destinazione facendogli scansionare molti dati di blocco. Puoi vedere molte delle regole di protezione DoS qui se cerchi "comportamento scorretto" nella pagina. Le azioni considerate dannose danno vari punteggi e se un peer supera il punteggio massimo di comportamento scorretto, il tuo nodo si disconnetterà per prevenire ulteriori abusi.

Evitare le condizioni di gara

Le condizioni di gara si verificano quando il comportamento di un sistema dipende dalla sequenza o dalla tempistica di eventi incontrollabili. In un sistema senza autorizzazione distribuito come Bitcoin, gli eventi sono generalmente imprevedibili. Il modello UTXO ci aiuta a evitare le condizioni di competizione perché gli output vengono spesi tutti in una volta: lo stato dell'output di una transazione è binario (speso o non speso).

Questo è un altro motivo per cui le transazioni non dovrebbero avere dipendenze dallo stato del sistema; può creare condizioni di gara e complessità quando lo stato cambia durante una riorganizzazione della blockchain.

Conservatorismo

In cosa consiste veramente il conservatorismo? È così che garantiamo la scalabilità sociale.

"Il segreto del successo di Bitcoin è che il suo prolifico consumo di risorse e la scarsa scalabilità computazionale stanno acquistando qualcosa di ancora più prezioso: la scalabilità sociale."

Il problema inerente a molti sistemi gestiti da esseri umani è che le regole del sistema possono essere applicate arbitrariamente o possono essere soggette a modifiche a discrezione di qualcun altro. Ciò si traduce in sistemi meno affidabili.

"Quando siamo in grado di garantire la funzionalità più importante di una rete finanziaria tramite l'informatica piuttosto che con i tradizionali contabili, regolatori, investigatori, polizia e avvocati, passiamo da un sistema che è manuale, locale e di sicurezza incoerente a uno che è automatizzato, globale e molto più sicuro."

Allineamento degli incentivi

Bitcoin funziona solo perché le regole del sistema creano incentivi affinché i partecipanti siano onesti. I minatori, ad esempio, potrebbero teoricamente riorganizzare la catena in modo da spendere più volte i propri soldi, ma questo sarebbe spararsi sul piede e farebbe perdere valore ai loro investimenti in hardware ed elettricità. È più redditizio per loro spendere le proprie risorse per proteggere onestamente la blockchain.

Ossificazione

C'è una convinzione generale che nel tempo diventerà sempre più difficile apportare modifiche al protocollo di base man mano che l'ecosistema cresce. Questo perché ci saranno sempre meno cambiamenti che sono incontestabili per la più ampia varietà di prospettive e incentivi della base di utenti. Pertanto, sarà più probabile che i miglioramenti debbano avvenire in altri livelli costruiti sopra Bitcoin.

Improbabili modifiche al consenso

Principi contrastanti

I miglioramenti della fungibilità (privacy) che rendono impossibile la verifica dell'offerta di moneta sono improbabili, poiché la degradabilità della verificabilità in cambio di una migliore fungibilità è un compromesso controverso.

A un certo punto potrebbe essere desiderabile rendere alcuni UTXO non spendibili per proteggere la rete, come i fondi P2PK che potrebbero essere vulnerabili agli attacchi quantistici. Qualsiasi proposta del genere sarebbe controversa, ma forse gli utenti la accetterebbero se i suoi benefici superassero in modo significativo i suoi danni.

La validità a prova di futuro non è garantita perché la catena potrebbe essere riorganizzata prima della transazione coinbase in cui il valore è stato originariamente creato. Esiste una regola di maturità coinbase di 100 blocchi per proteggere da tale scenario e la mainnet raramente vede riorganizzazioni più profonde di un blocco al momento della scrittura.

In definitiva, una delle maggiori cause di conflitto nell'ecosistema Bitcoin è il fatto che non può essere tutto per tutti. Farlo sarebbe la rovina di Bitcoin, poiché ci sono compromessi fondamentali tra varie priorità, come ad esempio:

Procedendo insieme a ritmo serrato

"Al fine di consentire agli utenti di continuare a effettuare transazioni e ad avere fiducia in Bitcoin come hanno sempre fatto, la comunità di utenti di Bitcoin deve continuare a far sì che i cambiamenti avvengano solo attraverso il consenso tra il gruppo in continua espansione. Al contrario, al fine di impedire a Bitcoin di ristagnare inutilmente, la sua comunità deve essere disposta a formare un consenso e apportare modifiche che aiutino il sistema che desiderano utilizzare senza danneggiare gli altri e apportare cambiamenti di buon senso, qualunque forma possano assumere. Fondamentalmente, questo significa che tutte le modifiche che non danneggiano l'utilità di Bitcoin per nessuno dei suoi numerosi casi d'uso, mentre aiutano gli altri, dovrebbero essere apportate, ove possibile."
Matt Corallo

- Jameson Lopp