Post
Topic
Board Italiano (Italian)
Re: Wallet e double spending
by
pf55351
on 14/06/2018, 13:35:36 UTC
Ciao grazie per la risposta

Quote
Lo stato pending non esiste, non capisco di cosa parli.
Pending è sinonimo di unconfirmed, cioè transazione che sono state inoltrate alla rete sono verificate a livello di SCRIPT ma non sono state ancora incluse in nessun blocco, cioè nessun miner le ha "considerate".

Quote
Ogni miner seleziona le transazioni che vuole dalla sua mempool, le ordina, e calcola il merkle root. Ma questo merkle root,e' personale, ogni miner lo calcola indipendentemente, e un miner con molta potenza di hash, spesso, ne calcola pure piu' di uno, in modo da parallelizzare la ricerca del blocco tra i vari asics. Quindi tu non lo sai se il miner sta realmente lavorando alla tua transazione. Non lo sa nessuno su che transazioni stanno lavorando i miner. E' una informazione inutile comunque.
Chiaro

Quote
Le connessioni fra i nodi della rete bitcoin, formano una rete mesh, quindi una informazione per raggiungere tutti i nodi ha bisogno di tempo, che si chiama tempo di propagazione, o ritardo di propagazione.
 
Le tecniche di doublespend degli UTXO consistono nello sfruttare i ritardi di propagazione delle tx(spesso pochi secondi o meno), nella rete.


Ok, credevo che finche la transazione non venisse inclusa in un blocco e aggiunta alla blockchain, durante quel periodo, min 10 minuti,  si potesse procedere cmq con un double spend, mentre mi stai dicendo, se ho capito bene, che il periodo è solo quello di propagazione della transazione a tutti i nodi della rete, corretto?

Ad esempio se faccio una trx di 1 btc da A a B (supponiamo che i costi di fee siano a zero), A per poter spendere nuovamente 1 btc ha il temppo di propagazione della transazione a tutti i nodi della rete e non quel tempo piu il tempo di elaborazione del blocco dove questa transazione sarà inclusa.
Cioè sempre nello stesso esempio supponiamo che il wallet di A recuperi questi UTXO:

Code:
{
    "unspent_outputs":[
        {
            "tx_age":"1322659106",
            "tx_hash":"e6452a2cb71aa864aaa959e647e7a4726a22e640560f199f79b56b5502114c37",
            "tx_index":"12790219",
            "tx_output_n":"0",
            "script":"76a914641ad5051edd97029a003fe9efb29359fcee409d88ac", (Hex encoded)
            "value":"5000661330"
        }
    ]
}

e A invii a B 5000 satoshi e la transazione viene propagata

Il risultato appena riportato rimarrà valido e quindi c'è una possibilità di double spending finche la transazione non si sarà propagata su tutti i nodi o finche la transazione non è inclusa in un blocco?

Il dubbio è che finchè la trx non è confermata e quindi inclusa in un blocco, sicuramente B non potrà spendere quanto ricevuto, ma A potrà fare il furbo e provare a usare una somma già "teoricamente" spesa ma ancora non confermata?

Spero di essere stato piu chiaro Smiley