Pagina 1 di 2

Algoritmo Bitcoin

MessaggioInviato: 24 feb 2017, 14:51
da aldofad
Ciao a tutti,
ho visto che si è già parlato di bitcoin nel forum da un punto vista qualitativo-utente.
Mi permetto ora di chiedere nella sezione matematica se gentilmente qualcuno ha voglia di chiarire il funzionamento del sistema bitcoin da un punto di vista prettamente matematico e informatico.
Sto cominciando a documentarmi su questo argomento e non riesco a fare il punto. Ad esempio, ho capito che un "miner" si occupa di generare un codice hash per un blocco di transazioni vuote che saranno usate successivamente dalla rete. Per tale compito dispendioso il miner ottiene una piccola ricompensa in bitcoin.
Fino a qui ci sono?
Abbiate pazienza, grazie e un saluto a tutto il forum

Re: Algoritmo Bitcoin

MessaggioInviato: 24 feb 2017, 15:24
da rugweri
Dovresti parlarne con Foto Utentem_dalpra, che mi pare stia scrivendo degli articoli in merito.

Re: Algoritmo Bitcoin

MessaggioInviato: 5 mar 2017, 17:03
da m_dalpra
aldofad ha scritto:Ciao a tutti,
ho visto che si è già parlato di bitcoin nel forum da un punto vista qualitativo-utente.
...
Sto cominciando a documentarmi su questo argomento e non riesco a fare il punto. Ad esempio, ho capito che un "miner" si occupa di generare un codice hash per un blocco di transazioni vuote che saranno usate successivamente dalla rete. Per tale compito dispendioso il miner ottiene una piccola ricompensa in bitcoin.


Carissimo Foto Utentealdofad,
sono settimane che volevo scrivere un articolo a tal proposito, quindi colgo l'occasione di questa tua domanda per dare una prima spiegazione.

Il minatore è colui che si occupa di convalidare le transazioni.
A tutti gli effetti è come un "impiegato" della banca che controlla che i bonifici siano corretti.
Secondo me il nome è sbagliato o comunque furviante, dovevano chiamarlo "VALIDATORE", ma pazienza.

Vediamo le due cose fondamentali che deve fare il minatore (ad esempio prendiamo bitcoin) :
1. PROCEDURA DI VALIDAZIONE
Deve prendere un tot di transizioni (cioè pagamenti, bonifici) in attesa di conferma, posizionate nella MEMPOOL (https://blockchain.info/charts/mempool-count).
Un tot significa : fino a riempire uno spazio di circa 1 MB.
A questo punto deve controllare che le transizioni siano congruenti con i blocchi precedenti della blockchain (cioè che qualche furbo non si sia inventato di generare "soldi" dal nulla, o fare un double-spending con la stessa cifra).

2. LOTTERIA
Poi, deve generare l'Hash del nuovo blocco (il contenitore delle ultime di transazioni).
Questo Hash deve rispondere alle caratteristiche richieste dal sistema (di solito deve iniziare con 5 Zeri).
Ad esempio il bitcoin Block #455867 ha questo Hash
0000000000000000001f827d050caeac5b815328849dd25dfd8d2fefc4de61e1

Se il minatore riesce in questo difficile compito, il blocco è confermato ed entra a far parte della Blockchain.
E gli utenti si vedono passare la propria operazione da PENDING a CONFERMATA.
E il minatore si prende 12,5 Bitcoin, generati a nuovo dal sistema.
....buona parte dei quali vanno per pagare la sua bolletta elettrica !!!

Se invece il calcolo è sbagliato deve riprovare inserendo nel Header del blocco un campo fittizzio (nonce) con dei numeri sparati a caso finché non riesce ad azzeccare la "lotteria", cioé l'hash corretto.
Sempre che un altro minatore, in qualche altra parte del mondo, non sia più veloce di lui.

A questo punto si cancella tutto e si ricomincia dal punto 1.

Ultime 2 cose :
a) Di solito ci vogliono circa 10 minuti affinché un minatore bitcoin riesca a calcolare l'Hash corretto.
Mentre per Ethereum bastano 15 secondi.
b) I minatori non devono scrivere software : usano quelli Open-Source creati dagli sviluppatori della moneta.

Per vedre il contenuto dei blocchi si può usare il block-explorer della relativa moneta elettronica.
Ad esempio https://blockchain.info/ , oppure https://etherscan.io/
ecc...

Per vedere come funziona l'algoritmo di Hash SHA256 di bitcoin, puoi vedere qui su Wikipedia
https://it.wikipedia.org/wiki/Secure_Hash_Algorithm

Spero di averti aiutato.
Ringrazio Foto Utenterugweri per avermi gentilmente segnalato la questione.

Re: Algoritmo Bitcoin

MessaggioInviato: 6 mar 2017, 1:09
da m_dalpra
Non so esattamente come sia nato il nome di minatore.
in realtà il minatore non gestisce una mole immensa di dati, anzi.
Ogni blocco è solamente 1 MB
e ci stanno dentro circa 2000 pagamenti (le transazioni).
Transazioni che lui deve solo controllare che siano "coperte" dai blocchi precedenti.
Non serve farci nessuna ricerca.
Il lavoro del minatore è quello di calcolare Hash, per cercare di azzeccare quello giusto.

Molti sostengono (e io sono d'accordo) che l'inventore di Bitcoin volesse creare qualcosa del tutto simile all'oro.
Questo perché nell'algoritmo è scritto che "un tot" di bitcoin vengono creati ogni 10 minuti, ma fino al raggiungimento di 21 milioni.

Io, del tutto sinceramente, penso che l'inventore di Bitcoin fosse anche un "buontempone"
Bè, dovete sapere che tutto l'oro del mondo sta in un cubo di 21 metri.
E' una strana coincidenza.
Comunque, l'associazione 21m cubo d'oro <> 21 Milioni di bitcoin è una mia supposizione.

In ogni caso, il minatore se è bravo a fare i conti...si trova la sua "pepita-bitcoin".
;-)

Re: Algoritmo Bitcoin

MessaggioInviato: 9 mar 2017, 18:11
da aldofad
Grazie per le competenti spiegazioni. Avresti la pazienza di spiegarmi anche come avvengono le biforcazioni del blockchain? E' evidente che questo problema/incubo e' dovuto proprio all'assenza di un coordinamento centrale, ossia e' un inevitabile compromesso della stessa architettura peer-to-peer

Grazie!

Re: Algoritmo Bitcoin

MessaggioInviato: 12 mar 2017, 12:43
da m_dalpra
@ Foto Utentealdofad
la parola "biforcazioni" riguarda due diverse problematiche : provo ad esporle entrambe.

Ma l'argomento è molto interessante,
quindi
lo butto giù in un post dentro il blog.

Re: Algoritmo Bitcoin

MessaggioInviato: 13 mar 2017, 0:08
da aldofad
Sei davvero in gamba, complimenti. Mi e' venuta voglia di capirne di piu' e di cercare di fare un esempio semplificato di una blockchain con java

Re: Algoritmo Bitcoin

MessaggioInviato: 13 mar 2017, 0:29
da m_dalpra
Foto Utentealdofad Sono un semplice appassionato.
"Davvero in gamba" mi pare eccessivo....
;-)

Comunque qui trovi la riposta
http://www.electroyou.it/m_dalpra/wiki/ ... blockchain

PS : scrivere il programma mi pare cosa molto lunga. Dovresti scrivere il programma degli utenti (il wallet), poi quello dei nodi e quello dei minatori.
Se lo fai per passatempo, direi che un paio d'anni non ti bastano !!!
Te ne serve solo uno per capire come funziona la crittografia ellittica dei wallet.
Meglio dedicare tempo e risorse per studiare un progetto open-source già funzionante, come ad esempio Hyperledger (Fabric, ecc), ma di sicuro ce ne saranno anche altri.

Re: Algoritmo Bitcoin

MessaggioInviato: 13 mar 2017, 3:25
da aldofad
m_dalpra ha scritto:PS : scrivere il programma mi pare cosa molto lunga. Dovresti scrivere il programma degli utenti (il wallet), poi quello dei nodi e quello dei minatori.
[b]Se lo fai per passatempo, direi che un paio d'anni non ti bastano !!!

No no, figurati, intendo un programmino Pippo e Pluto tanto per avere chiaro il principio, tipo questo ad esempio http://www.programcreek.com/java-api-examples/index.php?source_dir=Curecoin-master/Blockchain.java

Re: Algoritmo Bitcoin

MessaggioInviato: 13 mar 2017, 8:40
da Sjuanez
vado a memoria, perché mi sono interessato ai bitcoin qualche tempo fa.

Il termine minatore è nato per allegoria. Proprio come un minatore o prospettore, il "coniatore" o "cercatore" di bitcoin ne troverà molti con facilità solo in un primo periodo. L'algoritmo è poi chiaramente fatto per rendere sempre più difficile (e costosa) la ricerca.

Per me la cosa evidente è che agli albori te ne facevi qualcuno in casa, mi pare ci riuscissero addirittura con dei raspberry lasciati la notte a "minare".

Poi furono necessarie le potenzialità di calcolo delle più importanti schede video.

Si giunse allo sviluppo di hardware dedicato, i famosi ASIC che voi conoscete molto meglio di me.

Ora è già da un poco che, perfino le più importanti mining farm (cercatele su youtube e rimarrete impressionati! giuro!) sono in difficoltà. Infatti invece di minare gli conviene gestire le transazioni e vivere di commissioni.

O_/ O_/ O_/