Bitcoin Forum
November 07, 2024, 02:31:18 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Dubbi vari - Double Spendig - Consensus - Wallet etc etc  (Read 169 times)
pf55351 (OP)
Jr. Member
*
Offline Offline

Activity: 51
Merit: 1


View Profile
June 11, 2018, 08:28:46 AM
 #1

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?

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?

3. Analizzando la struttura dell'header di un blocco
https://en.bitcoin.it/wiki/Block_hashing_algorithm

a.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"

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?

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?

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
HostFat
Moderator
Legendary
*
Offline Offline

Activity: 4270
Merit: 1209


I support freedom of choice


View Profile WWW
June 11, 2018, 09:17:01 AM
 #2

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_algorithm

a.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.

NON DO ASSISTENZA PRIVATA - https://t.me/hostfatmind/
pf55351 (OP)
Jr. Member
*
Offline Offline

Activity: 51
Merit: 1


View Profile
June 11, 2018, 10:44:22 AM
 #3

Ciao Grazie per la risposta;

Quote
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.

Ok questo per la sincronizzazione del wallet con la blockchain. Ma nel momento in cui il wallet deve eseguire una transazione per recuperare l'amount da inviare fa una ricerca puntuale sull'intera blockchain andando a contrallare blocco per blocco e ovviamente transazione per transazione o ci sono modi piu veloci? Ad esempio utilizza degli opportuni comandi?


[quote ]

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.
[/quote]

Nel caso si colleghi al server di servizio cosa chiede tutte le utxo in base agli address del wallet o delle transazioni?
Mentre il sistema SPV come funziona dove posso trovare una spiegazione?
Il MerkleTree dove viene utilizzato?



a.hash di tipo sha256 che viene calcolato dal miner dove sta?
L'hash è incluso nel blocco, ed è doppio sha256.

Quindi il doppio sha256 nn fa parte dell'header del blocco? dove posso vedere la struttura in formato json di un blocco?



Quote
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.
Quindi se pago in BTC la spesa al supermercato (ipotesi ovviamente) il supermercato non mi farà andare via fino a quando la transazione non è confermata?
Un ipotetica conferma che  è data oggi dai wallet su cellulare o online sono il sinonimo solo che la trx è stata inviata alla rete quindi se il supermercato non sa questa cosa e per lo loro basta il check posso fare spesa gratis ( tralascio l'esistenza di lightnetwork)

Quote
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.
Si ma se la mia transazione verrà confermata dopo 3 giorni io posso continuare a spendere tranquillamente i miei btc corretto?


Quote
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.

che intendi con i blocchi sono pieni, la dimensione del blocco è stata sempre quella. forse che ora ci sono molte piu transazioni rispetto a prima.
Quindi per il funzionamento attuale il pagamento in btc non è ideale per transazioni quotidiane, caffe, giornali, spesa etc etc



Quote
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.
Si ma una volta che il miner emette il blocco gli altri che lo ricevano, calcolano in base alle informazioni nell header  l hash e se coincide con lhash del blocco questo viene confermato?
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!