Salve a tutti ragazzi,
alcuni dubbi che nn mi sono chiari e che ho appuntato durante lo studio del sistema bitcoin:
1, nel caso A debba inviare dei bitcoin verso B, il wallet deve recuperare tutte le UTXO fino ad arrivare, o superare, alla somma da inviare, ora immagino che il wallet tenga traccia di tutte le transazioni precedenti (hash della trx) a questo punto se è wallet fullnode, scorre tutta la blockchain alla ricerca dei UTXO.
E' questa la procedura oppure adotta un meccanismo diverso? In questo caso quanto tempo impiega?
Dipende dalla velocità di connessione, dalla velocità del tuo hard disk.
Può richiedere ore o giorni, per sincronizzare un nodo.
Una volta sincronizzato deve giusto continuare ad aggiornare ricevendo i nuovi blocchi creati.
Se lo spegni, e lo riaccendi dopo un giorno, ovviamente non deve ripartire da capo, ma deve scaricare gli ultimi blocchi non scaricati.
2. Se invece il wallet non è di tipo fullnode ho letto che non scarica tutta la blockchain ma solo gli header, in questo caso come fa a recuperare le UTXO?
O si connette al server del servizio che ha creato il wallet, o usa il sistema SPV, dove semplicemente si connette a vari nodi a caso, e li interroga chiedendogli informazioni.
3. Analizzando la struttura dell'header di un blocco
https://en.bitcoin.it/wiki/Block_hashing_algorithma.hash di tipo sha256 che viene calcolato dal miner dove sta?
b. è un sha256 o un doppio sha256?
c. oppure il miner quando trova il nonce per cui l hash che viene calcolato rispecchia le caratteristiche diverse invia il blocco e gli altri nodi usano queste info x calcolarsi anche loro l hash e verificare che sia effettivamente corrispondente alle caretteristiche del "protocollo"
L'hash è incluso nel blocco, ed è doppio sha256.
4. se ho ben capito in un sistam di pagamento decentralizzato c'è un problema fondamentale che è quello di non permettere il double spendind
a questo punto se A genera una transazione verso B e supponendo che il miner la inserisca nel prox blocco, a questo:
a. In un sistema di pagamento reale supponiamo al bar dove pago un caffe con bitcoin al barista basta che la transazione sia stata presa in carico dalla rete per poter emettere scontrino opppure deve aatendere che la transazione sia inclusa in blocco e quindi attendere almeno 10 minuti?
Teoricamente si, ma da qualche anno non è più possibile, perché visto che c'è un limite di spazio sui blocchi (1 MB), ora alcune transazioni rimangono fuori, e fintanto che rimangono fuori è ancora più facile effettuare il double spend.
b. in questi 10 minuti visto che non è stato emesso il blocco A non potrebbe spendere nuovamente i btc usati per il pagamento del caffe?
Chi invia i soldi, fintanto che non sono confermati su un blocco, può continuare a spenderli all'infinito. Saranno tutte transazioni però non confermate.
Di fatto però, potrebbe per tutto il tempo in cui non sono confermate, prendersi caffè a gratis, se i baristi le accettassero senza conferme.
Al tempo, quando c'era spazio sul blocco, comunque difficilmente qualcuno avrebbe fatto questa furbata, perché comunque il commerciante se ne rende conto del double spend, e quindi in quei 10 minuti, il tizio dovrebbe fare proprio di corsa per riuscire a bersi il caffè, uscire velocemente dal bar ed effettuare il double spend.
Ora che invece i blocchi sono pieni, e le tx possono richiedere anche varie ore per confermarsi, è molto più facile fregare con sicurezza il barista ... perché magari anche dopo ore e ore non si ricorderà nemmeno più chi e che gli ha pagato.
Altra caratteristica di un sistema di pagamento distribuito è che x evitare il double spending tutti i nodi abbiano una copia del registro delle transazioni, ma a questo punto c'è il problema del consenso, leggo che in btc questo prb viene risolto tramite il pow, cioè i nodi partecipano alla risoluzione di un prblema e gli altri eventualmente confermano questa soluzione, ma non credo che questo basti mi potete aiutare a capire?
Grazie
Sono i nodi-miner che fanno questo lavoro, e richiede tanta energia elettrica, che ha sempre un grosso costo perché è limitata.
Questo vuol dire che per scrivere i blocchi, è richiesto un costo appunto.
Questo vale anche per riscriverli, quindi un miner che vuole riscrivere la storia, dovrà spendere un sacco di energia elettrica per poterlo fare, e quindi non è incentivato a farlo.
Detto in modo molto semplice.