Spero di spiegarmi ...
Da quello che ho capito puoi firmare solo una transazione in ingresso e dirottarla su altro address. Se io svuoto le transazioni in ingresso non possono in alcun modo firmare transazioni che ancora non sono avvenute o sbaglio qualcosa?
Ossia: se ho BTC su un address rischio solo se non sposto le transizioni in ricezione. Se lo svuoto e lo riempio non dovrebbe esserci modo per prendere i BTC.
Il rischio è il seguente:
- tu vuoi prelevare dei btc da A e metterli su un tuo indirizzo x
- A prepara una transazione da A e x, la firma ma non la trasmette
- A prepara una seconda transazione, dal tuo indirizzo x (ovvero dall'output della transazione del punto precedente, di cui adesso ha già pronto il txid) di nuovo ad A,
fa l'hash di questa seconda transazione e ti invia questa transazione incompleta
stringa di 64 caratteri- tu firmi la stringa (in questo modo A completa l'"assemblaggio" della seconda transazione)
- A trasmette la prima transazione, tu ricevi i btc e quindi A può dire di averti pagato
- un'ora dopo A trasmette anche la seconda transazione e si riprende i btc che ti aveva inviato (a meno che tu non li abbia spostati subito; faccio notare per inciso che in realtà c'è un caso ancora peggiore, A potrebbe trasmettere alla rete le due transazioni contemporaneamente e queste potrebbero essere convalidate nello stesso blocco! ->
http://bitcoin.stackexchange.com/questions/1726/can-multiple-transactions-transferring-the-same-bitcoin-be-done-in-one-block)
Ovviamente qualora nell'indirizzo su cui vuoi essere pagato ci fossero già altri output non spesi di altre transazioni, A sarebbe in grado con questo stratagemma non solo di riprendersi i propri btc ma anche di svuotare completamente il contenuto del tuo indirizzo (preparando una transazione ad hoc).
Tutti i dati necessari per fare una transazione (txid di transazioni che hanno portato i btc nel nostro indirizzo, l'indirizzo stesso) sono pubblici; ciò che distingue il legittimo proprietario di un indirizzo da tutti gli altri è solo la possibilità di firmare la transazione (operazione che tra l'altro comporta la comunicazione della chiave pubblica, altrimenti non avrebbe senso chiedere a qualcuno di firmare qualcosa se poi non si è in grado di verificare la firma).
Da notare infine che in tutto questo A non verrebbe nemmeno a conoscenza della chiave privata di x, ma visto che la funzione della chiave privata è solo quella di firmare (e di produrre la relativa chiave pubblica per la verifica) non cambierebbe nulla (se non che l'indirizzo x rimarrebbe sicuro dopo il furto, bella consolazione
)