Ciao grazie per la risposta, ora me la studio attentamente, conosco il funzionamento della trx e del resto pero il dubbio nasceva dal fatto che credevo che durante il periodo in cui la transazione è "lavorata" dal miner ma ancora non inclusa nel blocco o ancora meglio propagata a tutti i nodi, questi non conoscono l'effettivo stato quindi il wallet potrebbe spendere non facendo apposta - facendola apposta laddove ci sia intenzione da parte dello sviluppatore .- lo stesso UTXO.
La mempool è diverso da pending credo perchè il pending è lo stato in cui la trx è stata considerata dal miner il mempool ancora no.
Non ero a conoscenza che se la transazione sta in mempool allora sia il wallet che i nodi rifiutassero ulteriori trx con input presi dalla UTXO giò in uso
Gli altri meccanismi descritti non ne ero a conoscenza adesso me li studio
Quindi in sostanza il wallet quando deve recuperare gli UTXO per creare dei nuovi input in una trx controlla parallelamente se gli stessi sono inclusi in qualche trx che attualmente è in pending o in mempool?
Fatico a comprendere questa domanda.
Lo stato pending non esiste, non capisco di cosa parli. 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.
La mempool e' una cosa privata, ogni nodo ha la sua, ogni nodo decide indipendentemente quali transazioni inserire nella sua mempool. Ovviamente il nodo non ha nessun'interesse a tenere tx non valide, e, se e' "onesto", non vuole propagare tx non valide. Una tx che doublespende un UTXO non e' valida, quindi il nodo la rifiuta, e non la propaga.
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.