Come per il mining, cosa stanno davvero risolvendo i minatori di bitcoin? Ho letto che stanno risolvendo hash, ma cosa significa veramente. Possiamo vedere cosa stanno risolvendo? Qualcuno può fornire un esempio di ciò che una macchina di mining bitcoin vede per risolvere?
Commenti
- Related: bitcoin.stackexchange.com/q/148/153
- Ok ma QUALI dati stiamo estraendo! Nessuno sembra saperlo. Non ‘ mi interessa come funziona Voglio sapere da dove provengono i dati da quel bit mining che è la decrittografia o la crittografia.
Risposta
Cercano di trovare un nonce casuale (un po di dati casuali) che va in un blocco e fa sì che il blocco abbia un hash (SHA256) che (in binario ) inizia con una certa quantità di 0 “. Più sono zero, più è raro lhash. Un buon risultato di hash” non è prevedibile, quindi devi provare molte volte per trovare un buon nonce.
La quantità di zeri si basa su quanto sia difficile trovare un blocco. In Bitcoin si regola per avere un nuovo blocco ogni 10 minuti (in media, data la velocità con cui vengono trovati i blocchi precedenti).
Interessante: poiché gli hash sono imprevedibili, non importa come cambia il nonce ! La maggior parte delle volte è solo un numero che conta verso lalto da 0!
Risposta
Ecco un estremamente schizzo semplificato del problema, ma dovrebbe dare unidea abbastanza chiara di quale sia il problema.
I dati:
Questo è lhash dellultimo blocco (abbreviato a 30 caratteri):
00000000000001adf44c7d69767585
Questi sono gli hash di alcune transazioni valide in attesa di inclusione (abbreviate).
5572eca4dd4 db7d0c0b845
E questo lhash di una transazione speciale che hai appena creato, che dà 25BTC (la ricompensa attuale) a te stesso:
916d849af76
Creazione del blocco successivo:
Ora, usiamo unapprossimazione grossolana di come potrebbe apparire un nuovo blocco (quello reale usa il formato binario). Contiene lhash del blocco precedente e gli hash di quelle 3 transazioni:
00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--
Ora eseguiamo il mining a mano! Il nostro obiettivo è completare questo blocco con un nonce (un pezzo di spazzatura) tale che lhash del nuovo blocco inizi con 13 zeri (considerando lhash precedente, sembra che 13 zeri sia la difficoltà attuale!).
Mining (cercando di finalizzare questo blocco):
Proviamo con nonce = 1 e calcoliamo lhash del blocco (sto usando lalgoritmo hash md5, ma Bitcoin usa il doppio sha256):
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum 8b9b994dcf57f8f90194d82e234b72ac
Nessuna fortuna, lhash non inizia con uno 0 … Proviamo con nonce = 2
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum 5b7ce5bcc07a2822f227fcae7792fd90
Nessuna fortuna …
…
Se perseguiamo fino a nonce = 16, otteniamo il nostro primo zero iniziale.
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum 03b80c7a34b060b33dd8fbbece79cee3
Per nonce = 208, otteniamo due zeri iniziali!
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum 0055e55df5758517c9bed0981b52ce4a
Continua così … Se finalmente trovi un hash con 13 zeri iniziali … sei un vincitore! Altri minatori ora si baseranno sul tuo blocco, hai appena ricevuto 25 BTC.
Ma dovrai essere veloce!
Torna al passaggio 1 …
Se qualcuno riesce a costruire un blocco prima di te, dovrai ricominciare dallinizio con il nuovo blocco “s hash (quello del vincitore).
Commenti
- Anche il tuo esempio sta concettualmente andando nella giusta direzione, ma il vero successo è quando lhash sha256 dellintestazione è minore del target. Target di esempio:
00000000000001ae00000000000000
è maggiore di00000000000001adf44c7d69767585
< – questo sarebbe un hash valido . - @Reonarudo, non esattamente, questo è uno schizzo molto semplificato di ciò che viene effettivamente fatto. Le transazioni sono fatte con script che sono spesso fatti da indirizzi, puoi trovare maggiori informazioni sul wiki di Bitcoin.
- Questo suona fondamentalmente come un bel riassunto (semplificato), ma a che punto la rete bitcoin lo accetta come il successivo blocco valido, e cosa succede nelleventualità (improbabile) che due diversi miner riuscissero a inviare un blocco valido quasi contemporaneamente?
- Wow, ottima risposta! Ci sono ‘ un paio di cose che ancora non riuscivo a ‘ muovermi: lascia che ‘ s dice che ‘ stai cercando una soluzione per 6 minuti e che arriva una nuova transazione. 1) cosa succede adesso? se devo ricominciare da capo, allora sembra che tutti debbano ricominciare da capo. Allora come può la blockchain garantire di trovare un blocco in ~ 10 minuti? 2) In che modo mi viene comunque questa transazione?3) E se trovo una soluzione per questo blocco e poi mi arriva una nuova transazione da qualche altro nodo che lha accettata per il blocco che ho appena chiuso?
- 1) Sì, tutti ricominciano, se costruisci sopra un vecchio blocco ci sono ‘ poche possibilità che i tuoi blocchi facciano parte della catena più lunga e saranno ignorati dal resto della rete. Non vi è alcuna garanzia che un blocco venga trovato entro 10 minuti, ‘ è solo un risultato statistico medio. 2) Quale transazione? I blocchi vengono trasmessi da chi li ha estratti e ritrasmessi da altri nodi. 3) Niente ti obbliga a includere tutte le transazioni in sospeso, ma più transazioni includi più commissioni puoi riscuotere.
Risposta
Quanto segue è una descrizione della scommessa statistica globale che viene giocata ogni 10 minuti circa. Lintervallo del gioco è controllato dalla difficoltà che indica quanti “hash” sono necessari per intervallo.
In altre parole, le difficulty
e target
definiscono le “probabilità del banco” rispetto alle tue possibilità di ottenere un hash SHA vincente. Il nonce
è larea “scratch off”.
Ogni hash consuma elettricità ed emette calore, che richiede un raffreddamento aggiuntivo.
Questo è ciò che viene fatto con ogni hash:
Passaggio 1
Ad un livello elevato, il software miner prende un elenco di transazioni attive, e poi le raggruppa in qualcosa chiamato “blocco”.
O più precisamente dichiarato: Il software miner nasconde tutte le transazioni in una visualizzazione di riepilogo chiamata “merkle root” e lha hash, che è rappresentativa delle transazioni.
Passaggio 2
Quindi il software di mining lo converte in un formato binario chiamato Block Header , che fa riferimento anche ai blocchi precedenti (chiamati anche catena).
Field Purpose Updated when... Size (Bytes) Version Block version number You upgrade the software and 4 it specifies a new version hashPrevBlock 256-bit hash of the previous A new block comes in 32 block header hashMerkleRoot 256-bit hash based on all A transaction is accepted 32 the transactions in the block Time Current timestamp as seconds Every few seconds 4 since 1970-01-01T00:00 UTC Bits Current target in compact format The difficulty is adjusted 4 Nonce 32-bit number (starts at 0) A hash is tried (increments) 4
Passaggio 3:
Lhardware del minatore cambia una piccola parte di questo blocco chiamata “nonce” .
Passaggio 4:
Lintestazione del blocco viene sottoposto ad hashing e rispetto al target come se fosse semplicemente un numero elevato come 10.000.000> 7.000.000 (i numeri reali sono molto più grandi e in esadecimale). Il target è compresso e memorizzato in ogni blocco in un campo chiamato bit.
Un target espanso ha il seguente aspetto:
Target 0000000000000083ef00000000000000000000000000000000000000000000000
E il lobiettivo è assicurarsi che l hash SHA256 del blocco sia inferiore questo valore. Nellesempio seguente “83ee
” è più piccolo di “83ef
”
Per semplificare questo concetto, puoi ballare lobiettivo contando gli zeri iniziali (come spiega laltra risposta qui). Ecco un esempio:
Ecco un blocco di esempio con transazioni che puoi visualizzare su BlockChain.info. Guarda nellangolo in alto a destra della pagina web per questo hash:
Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf
Lhash precedente era di oggi e ha 14 zeri iniziali. Confrontiamolo con quanto necessario tre anni fa con il blocco 100 che ha 8 zeri iniziali.
Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899
Riepilogo
Quindi, alla fine della giornata, tutto ciò che fa un minatore è:
- Prendi unintestazione di blocco come input
- Cambia il Nonce
- Verifica se lintestazione di blocco hash è inferiore al target. Se lo è, vinci.
- Vai al passaggio 2 (o vai al passaggio 1 se qualcun altro ha vinto il blocco)
Vuoi vedere cosa fa Bitcoin-QT quando trova un blocco? … Lho pubblicato qui. . Le informazioni in questo post lo faranno aiutarti a capire cosa è successo.
Commenti
- Non è ‘ t il nonce (32 bit) lontano troppo piccolo per poter trovare un hash che deve iniziare con 14 zeri iniziali (14×4 = 56 bit)? Trovare un tale hash richiederebbe in media 2 ^ 56/2 tentativi e con 32 bit no nce sono possibili solo 2 ^ 32 tentativi prima che tutti i possibili valori di nonce siano esauriti. Modifica: con lora che cambia ogni secondo, immagino che questo si applichi solo se la frequenza di hash supera i 4 GH / sec (cosa che penso sia …)
- Sì, tu ‘ a destra, … dallURL nellintestazione del blocco:
Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.
Risposta
Il mining fornisce un modo per raggiungere il consenso su come dovrebbe apparire il registro delle transazioni e sapere che nessuno bara.
Questa è la definizione non tecnica del mining .
L “autorità” per la doppia spesa è la blockchain. La blockchain è costituita dalla cronologia di tutti i blocchi nella blockchain più il successivo blocco di transazioni. Il sussidio di ricompensa attualmente è di 25 BTC per la parte che invia il blocco successivo. Ma hey … vorresti quei 25 BTC (del valore attuale di circa $ 825) come vorrei io come tutti gli altri. Quindi, come fai in modo che io non possa imbrogliare e rivendicare il blocco da solo?
Bene, metti in un sistema che tu ed io dobbiamo competere. Questo è ciò che fa la prova di lavoro – fa in modo che quando richiedo la ricompensa sia facile dimostrare che ho davvero fatto il lavoro richiesto. Quindi, per avere il 2% di possibilità di risolvere un blocco, devo dedicare il 2% al lavoro di mining. Non cè modo per me di dedicare meno del 2% di tutto il lavoro e comunque risolvere i blocchi almeno il 2% delle volte (in media).
Di conseguenza, quando una transazione si blocca viene inviato, tutti i colleghi verificano che non ci siano state spese doppie, che sia stata richiesta la giusta quantità di sovvenzione e che il mittente abbia veramente speso il lavoro necessario per quella soluzione. Con queste tre regole, non è necessario che unautorità centrale che gestisce il processo o in grado di controllare il risultato.