Transaction Malleability
Malleabilità della transazione
Transaction Malleability
Malleabilità della transazione
Difficoltà: avanzato
Argomento: tecnologia
DEFINIZIONE
La Transaction Malleability è un problema per sviluppatori e utenti che desiderano fare riferimento a una transazione precedente in una nuova transazione di spesa prima che la transazione precedente sia stata confermata sulla blockchain.
Questo problema sorge perché, per spendere i bitcoin creati da una transazione precedente, la transazione di spesa deve fare riferimento al txid della transazione precedente. Se questo txid può cambiare, il riferimento fallirà e la transazione di spesa sarà resa non valida.
In particolare, la malleabilità delle transazioni è stata un problema che ha impedito l'adozione del Lightning Network, che si basa sullo scambio di transazioni Bitcoin non confermate.
Una transazione può essere "malleata" in due modi:
- innanzitutto, dopo che una transazione è stata firmata, è possibile aggiungere ulteriori dati a uno ScriptSig, la parte della transazione che contiene la firma e altri dati utilizzati per sbloccare i bitcoin;
- in secondo luogo, è possibile modificare la firma stessa, contenuta all'interno di ScriptSig. Queste opzioni sono entrambe possibili perché una firma non può firmare se stessa e quindi non può rendersi immutabile. Poiché lo ScriptSig e le firme che contiene fanno parte della preimmagine txid, se vengono modificati, il txid cambierà.
Come SegWit ha risolto la malleabilità delle transazioni:
SegWit elimina questa possibilità rimuovendo tutti i dati dallo ScriptSig.
Ciò si ottiene spostando i dati ScriptSig, solitamente firme e chiavi pubbliche, nel Witness, una nuova parte delle transazioni SegWit che non viene sottoposta ad hashing per calcolare il txid.
Gli input di ScriptSig per SegWit vengono quindi resi immutabili dopo la firma e i dati necessari per sbloccare bitcoin, che non sono immutabili, sono contenuti nel Witness. Ciò significa che lo ScriptSig non può essere modificato, e quindi il txid non può essere modificato senza invalidare l'intera transazione.
aggiornato il 2021-12-18