Ciao grazie per la risposta
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".
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
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:
{
"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
