Satoshi Nakamoto
traduzione in italiano di Jeanclaude Nordi
Sommario:
Una versione peer-to-peer di denaro elettronico permette di gestire direttamente pagamenti online da un’entità ad un’altra senza passare tramite un istituto finanziario.
Le firme digitali offrono una soluzione parziale al problema in quanto richiedono comunque l’intervento di un garante per evitare che lo stesso soggetto possa utilizzare più volte la stessa moneta per diverse transazioni.
Una rete peer to peer potrebbe essere la soluzione , eliminando la necessità dell’intervento di un soggetto garante.
La rete creerebbe una catena continua di transazioni codificate temporalmente formando un registro che non può essere modificato senza fornire una chiave.
La catena di transazioni più lunga non solo serve a confermare la correttezza nella registrazione delle transazioni ma serve a provare che proviene dalla maggioranza della rete.
Fintanto che la maggioranza della rete è controllata da nodi che non attaccano la rete genereranno la catena più lunga bloccando gli eventuali attacchi.
La rete stessa richiede una struttura minima. Le comunicazioni sono scambiate senza garanzia di consegna e i nodi possono inserirsi o lasciare la rete quando vogliono, accettando la catena più lunga al rientro come prova di quello che è successo in loro assenza.
- Introduzione
Il commercio elettronico su Internet fa affidamento quasi esclusivamente ad istituti finanziari che fanno da garanti nella gestione dei pagamenti.
Nonostante questo sistema funzioni bene per la maggior parte delle transazioni, ha un limite intrinseco relativo alle transazioni basate sulla fiducia.
Le transazioni infatti non possono essere completamente irreversibili in quanto le istituzioni finanziarie devono necessariamente gestire e mediare eventuali conflitti. Il costo di questa mediazione incrementa il costo delle transazioni, limitando la dimensione minima delle transazioni possibili ed escludendo la possibilità di effettuare transazioni irreversibili per servizi irreversibili (es. bene digitale già scaricato).
La possibilità che una transazione possa venire revocata richiede un certo livello di fiducia tra le parti: i venditori sono costretti a richiedere maggiori informazioni di quanto sarebbe necessario. Una certa percentuale di frodi è comunque accettata come inevitabile.
Queste incertezze e costi possono essere evitati con lo scambio di contante ma non esiste un modo per effettuare una transazione a distanza senza un terzo soggetto garante.
E’ necessario un sistema di pagamento elettronico basato su una prova crittografica piuttosto che sulla fiducia permettendo a due soggetti di effettuare una transazione economica senza l’ausilio di un garante.
Transazioni non reversibili proteggerebbero i venditori dalle frodi e fondi depositati in garanzia (routine escrow) potrebbero tutelare gli acquirenti.
In questo documento viene proposto un meccanismo per risolvere il problema della doppia spesa che prevede la codifica temporale delle transazioni tramite un server distribuito in una rete di computer che serva a garantire la correttezza della successione temporale.
Il sistema è sicuro fintanto che i suoi nodi controllano la maggioranza della potenza di calcolo rispetto ad ogni altro eventuale nodo attaccante.
2) TRANSAZIONI
Si definisce moneta elettronica una catena di firme digitali. Ogni proprietario trasferisce la moneta al successivo proprietario generando un codice composto dalla transazione di provenienza, dalla propria firma digitale e dalla chiave pubblica del ricevente . Chi riceve il pagamento può facilmente verificare tutte le transazioni relative alla proprietà della moneta.
Chi riceve il pagamento non può verificare però che la stessa moneta sia già stata spesa. Una soluzione al problema sarebbe quella di introdurre un’autorità centrale di fiducia, detta Zecca, che controlli ogni transazione.
La Zecca avrebbe il compito di verificare ogni transazione intermediando il pagamento e garantendo che la stessa moneta non sia già stata utilizzata in precedenza. Il problema di questa soluzione è che il destino dell’intero sistema monetario dipende dall’unico soggetto che gestisce la zecca, che agirebbe come una banca.
Una soluzione alternativa sarebbe quella di considerare esclusivamente la prima transazione ricevuta, escludendo tutte quelle successive effettuate dal medesimo proprietario.
L’unico modo per escludere le transazioni successive è che tutte le transazioni siano pubbliche. Nel modello della Zecca , solo questa è al corrente di tutte le transazioni e decide quale sia arrivata per prima.
Per ottenere lo stesso risultato senza un terzo garante è necessario che tutte le parti siano a conoscenza di tutte le transazioni e possano concordare sulla sequenza cronologica di ricezione delle transazioni.
Chi riceve il pagamento deve avere la prova che la maggioranza dei nodi abbia concordato che quella fosse effettivamente la prima transazione ricevuta.
3) Server di marcatura temporale (Timestamp server)
La soluzione proposta parte da un server di marcatura temporale che segnerebbe tutte le transazioni gerarchicamente pubblicandole esattamente come farebbe un quotidiano o un utente su Usenet. Il marcatore temporale proverebbe che i dati esistevano al momento dell’operazione, codificandoli in un hash. Ogni marcatura includerebbe quella precedente, creando una catena continua dove le transazioni successive rinforzerebbero quelle precedenti.
4) Prova di lavoro (POW proof of work)
Per implementare un server di marcatura temporale distribuito su una rete di più nodi è necessario un sistema di “prova di lavoro” simile ad Hashcash di Adam Back piuttosto che quello di un quotidiano o quello di Usenet.
La prova di lavoro consiste nel codificare più volte con l’algoritmo SHA -256 un documento utilizzando un valore casuale (c.d. nonce) fino a che il risultato non sia un hash con un certo numero di zeri all’inizio. Il lavoro medio cresce esponenzialmente in proporzione al numero di zeri richiesti ed è verificabile effettuando un’unica funzione hash.
Una volta effettuato il lavoro per la generazione del risultato che soddisfi questi requisiti il blocco non può più essere modificato se non rifacendo tutto il lavoro. Dopo che siano stati aggiunti altri blocchi il di rigenerazione dovrebbe includere la rigenerazione di tutti i blocchi successivi.
Questo sistema risolve il problema della maggioranza nel processo di decisione. Se la maggioranza fosse basata sulle teste (in questo caso legate al numero di indirizzi IP) potrebbe essere facilmente ottenuta da chiunque con un numero sufficiente di IP.
La prova del lavoro è invece basata sul voto di ogni singola CPU. La maggioranza è rappresentata dalla catena più lunga, che rappresenta il maggior sforzo per ottenere il risultato finale. Se la maggioranza della potenza delle CPU è controllata da nodi onesti questi produrranno più velocemente la catena più lunga rispetto ad eventuali attaccanti.
Per modificare un blocco precedente un attaccante dovrebbe eseguire nuovamente la “proof of work” del bocco e quella di tutti i blocchi successivi. La probabilità che un attaccante più lento possa riuscirci diminuisce esponenzialmente ogni volta che un nuovo blocco viene aggiunto.
Per compensare l’incremento della velocità dell’hardware la difficoltà della “proof of work” è incrementale ed è determinata dalla media del numero di lavorazione dei blocchi per ora. Quando questo incrementa anche la difficoltà cresce.
5)