Double spending
Se un miner inserisce in un blocco una transazione già presente in un altro blocco, si crea un nuovo «ramo» della blockchain. Infatti lo stesso output sarebbe presente in due blocchi diversi e potrebbe quindi essere speso due volte (double spending). Quando un blocco andrà ad aggiungersi ai precedenti riconoscerà solo uno dei due blocchi come «sano» e non includerà nel proprio Merkle tree transazioni con bitcoin provenienti dal blocco «malato». Di conseguenza nessun nodo (nessun utente) accetterà i bitcoin provenienti dagli output registrati nel blocco malato. Se al blocco malato vengono aggiunti altri blocchi, verrà a crearsi un vero e proprio ramo alternativo della blockchain (blockchain fork). Fra i due rami della blockchain, il ramo che rimane più corto sarà considerato quello malato. Infatti, dato che chi dispone di maggiore potenza di calcolo ha più probabilità di creare nuovi blocchi, la «fazione» di minatori che ha più potenza computazionale costruirà il ramo più lungo, qualificandolo come ramo sano. Nessuno accetterà più le transazioni con input proveniente dal ramo malato perché non vorrà incorrere nel rischio che non vengano mai inserite in un blocco e quindi che non siano mai confermate.
Quando un ramo è considerato morto i minatori potranno recuperare le transazioni valide in quel blocco (cioè quelle registrate esclusivamente in quel blocco) per costruire il Merkle tree di un nuovo blocco nel ramo sano della blockchain. In questo modo le transazioni «sane» presenti in un blocco malato potranno tornare a essere riconosciute valide e i relativi output essere accettati come nuovi input. Per evitare la possibilità che un miner possa spendere i bitcoin ottenuti con la generazione di un blocco «malato», contenente una o più transazioni già spese, il protocollo bitcoin prevede che i miners non possano spendere i bitcoin ottenuti dal blocco (tramite commissioni o coinbase) prima che vengano aggiunti altri 100 blocchi a quello.
Normalmente, nessun miner ha interesse a inserire transazioni doppie in un nuovo blocco perché rischia di vedere il blocco rifiutato dal resto della rete. Se così fosse, nessuno accetterà i bitcoin guadagnati col blocco tramite le commissioni e la transazione coinbase e il miner avrebbe solo sprecato energia elettrica per il calcolo dei vari hash senza guadagnarci nulla.
« Back to Glossary Index