SEZIONE 05.01 – Il compito dei minatori Bitcoin

WEEK 5
Il compito dei Minatori Bitcoin

We already know that Bitcoin relies crucially on mining. But who are the miners? How did they get into this? How do they operate? What’s the business model like for miners? What impact do they have on the environment?
Sappiamo già che il Bitcoin si basa fondamentalmente sull’estrazione mineraria. Ma chi sono i minatori? Come hanno fatto a diventarlo? Come operano? Qual’è il modello di business per i minatori? Che impatto hanno sull’ambiente?

Joseph Bonneau – Postdoctoral Research Associate Princeton University

Sezione 5.1 – Il compito dei Minatori
All right, welcome to the 5th lecture on Bitcoin. Today is gonna be all about mining. So to recap, what have we learned about the miners so far? Well, we’ve heard about the miners quite a bit. And we know that Bitcoin depends on the miners pretty heavily to perform a couple of important roles. Of course, they validate every transaction, they build all the blocks and we know that the minors earn some reward. Who are the minors? How do they get into this? How do they operate? What’s the business model like for minors? What impact are they having on the environment? We’re gonna get to all those questions in today’s lecture.
Va bene, benvenuto alla quinta conferenza su Bitcoin. Oggi sarà tutto per il settore minerario. Quindi, per riassumere, cosa abbiamo imparato finora sui minatori? Bene, abbiamo sentito parlare dei minatori parecchio. E sappiamo che Bitcoin dipende molto dai minatori per svolgere un paio di ruoli importanti. Certo, convalidano ogni transazione, costruiscono tutti i blocchi e sappiamo che i minatori guadagnano qualche ricompensa. Chi sono i minatori? Come entrano in questo? Come operano? Qual è il modello di business che piace ai minatori? Che impatto hanno sull’ambiente? Raggiungeremo tutte quelle domande nella lezione di oggi.
05.01.01
So we’ll start by talking about what Bitcoin minors actually have to do in order to be minors.
And maybe before we get into that, we’ll talk about some historical miners. So, if you’re thinking about becoming a Bitcoin miner, I wouldn’t wanna completely discourage you, but I’d be remiss not to tell you that this is not a get rich quick scheme, this is a very long haul. So looking back at some historical gold rushes, they’re full of stories of young people rushing off hoping to find fortune. A lot of them losing everything that they have. Some of them really striking it rich. But a lot of hardship along the way. This is probably my favorite example from the Klondike gold rush in Alaska in 1898.
This gold rush all happened within a matter of six months, so there was a huge rush to get there for the one summer mining season. And all of these people are trudging up this snowy mountain pass with all of their equipment at the same time. Doesn’t look like the easiest way to get rich, and I’ll argue that Bitcoin mining is starting to look as like a similar proposition.
Quindi inizieremo parlando di cosa devono fare i minatori Bitcoin per esserelo.
E forse prima di addentrarci in questo, parleremo di alcuni minatori storici. Quindi, se stai pensando di diventare un minatore Bitcoin, non vorrei scoraggiarti completamente, ma non saprei dirti che questo non è uno schema per arricchirsi rapidamente, questo è un giro molto lungo. Quindi, guardando indietro ad alcune storiche corse d’oro, sono pieni di storie di giovani che si precipitano fuori sperando di trovare fortuna. Molti di loro perdono tutto ciò che hanno. Alcuni di loro sono davvero straordinari. Ma affrontano molte difficoltà lungo la strada. Questo è probabilmente il mio esempio preferito dalla corsa all’oro del Klondike in Alaska nel 1898.
Questa corsa all’oro è avvenuta nel giro di sei mesi, quindi c’è stata un’enorme corsa per arrivare a quella stagione mineraria estiva. E tutte queste persone stanno arrancando nello stesso tempo su questa montagna innevata con tutte le loro attrezzature. Non sembra il modo più semplice per diventare ricchi, e sosterrò che il mining di Bitcoin sta iniziando ad apparire come una proposta simile.
05.01.02
So what do you have to do to be a Bitcoin miner in six easy steps? Well, you join the network, you become a Bitcoin node, you listen for all of the transactions that people are broadcasting, of course, you have to validate them, you listen for new blocks that people have found, you maintain a view of the current block chain. Of course, you wanna validate all the blocks and all the transactions that are in those blocks.
You start to assemble new valid blocks based on the transactions that you’re hearing. Then you have to work really hard in step four here to find a nonce that will make your block considered valid. That’s the really difficult computational step where all the difficulty really happens for the minors. Finally, if you’re lucky enough to find a block, you have to hope that all of the other miners accept your block, that they validate it and start mining on top of it, and that they don’t accept some competitor’s block instead. And if all that happens in step 6 you finally get to profit, currently to the tune of over 25 Bitcoins per block. Worth about $15,000 US. And so a couple of these steps, all of the validation in particular, are what’s actually useful to the Bitcoin network.
So that’s why we have mining at all. Miners perform this validation step. The rest of it, the profit and the race to find blocks, that’s all just incentive to encourage the miners to do the validation which is necessary for Bitcoin to function as a currency.
Quindi cosa devi fare per essere un minatore Bitcoin in sei semplici passaggi? Bene, ti unisci alla rete, diventi un nodo Bitcoin, ascolti tutte le transazioni che le persone trasmettono, ovviamente, devi convalidarle, ascoltare i nuovi blocchi che le persone hanno trovato, mantenere una visione del attuale catena di blocchi. Certo, vuoi convalidare tutti i blocchi e tutte le transazioni che si trovano in quei blocchi.
Inizi ad assemblare nuovi blocchi validi in base alle transazioni che stai ascoltando. Quindi devi lavorare molto duramente nel passaggio quattro per trovare un nonce che renderà il tuo blocco considerato valido. Questo è il passo computazionale davvero difficile in cui tutte le difficoltà avvengono davvero per i minatori. Infine, se sei abbastanza fortunato da trovare un blocco, devi sperare che tutti gli altri minatori accettino il tuo blocco, che lo convalidino e inizino il mining su di esso, e che non accettino invece il blocco di qualche concorrente . E se tutto ciò che accade nel punto 6 si arriva finalmente al profitto, attualmente con più di 25 Bitcoin per blocco. Vale circa $ 15.000 USA. E così un paio di questi passaggi, tutti in particolare la convalida, sono ciò che è effettivamente utile per la rete Bitcoin.
Ecco perché abbiamo il mining. I minatori eseguono questa fase di convalida. Il resto, il profitto e la corsa per trovare blocchi, è tutto un incentivo per incoraggiare i minatori a fare la validazione necessaria affinché Bitcoin funzioni come una valuta.
05.01.03
So what does the process look like for finding a valid block? Well, we’ll have to look back to the data structure that we introduced two lectures ago, and recall that there are two main hash-based data structures here. There’s the block chain, where each block header points to the previous block header in the chain. And then within each block, there’s this merkle tree, this hash-based binary tree of all of the transactions included within that block.
So the first thing that you do as a miner is you assemble all of the transactions that you have from your pending transaction pool into this tree.
You create a block with the right header that points to the previous block, and then you have to start searching over this nonce field to try to have the hash of the block header start with the required number of zeroes. So you may start a nonce of all zeroes that’s a 32-bit integer, and when you try that you’ll get a hash that’s incorrect.
So you’ll say, okay, let’s move on to the next nonce, nonce number one, the hash is also incorrect.
Step forward one more time, try hash two, also incorrect. So you can see where this is going, and in a lot of cases, you’ll try every single possible value for that 32-bit integer, and in no case will the hash be correct.
So at this point you’re gonna have to make further changes.
And you’ll notice that there’s this parameter in the coinbase transaction. And remember that the coinbase transaction is where the miners are actually minting new coins and claiming them for themselves. There’s also this extra nonce parameter in there. So after you’ve exhausted all possible nonces in the block header for the extra nonce in the coinbase transaction of all zeroes. You’ll step the extra nonce in the coinbase transaction up to one, and then you’ll start searching nonces in the block header once again.
Che aspetto ha il processo per trovare un blocco valido? Bene, dovremo guardare indietro alla struttura dei dati che abbiamo introdotto due lezioni fa e ricordare che ci sono due principali strutture di dati basati su hash qui. C’è la catena di blocchi, dove ogni intestazione di blocco punta all’intestazione del blocco precedente nella catena. E poi all’interno di ogni blocco, c’è questo albero di merkle, questo albero binario basato su hash di tutte le transazioni incluse all’interno di quel blocco.
Quindi, la prima cosa che fai come minatore è assemblare tutte le transazioni che hai dal tuo pool di transazioni in sospeso su questo albero.
Si crea un blocco con l’intestazione destra che punta al blocco precedente e quindi si deve iniziare la ricerca su questo campo nonce per provare a far partire l’hash dell’intestazione del blocco con il numero richiesto di zeri. Quindi puoi iniziare un nonce di tutti gli zeri che è un numero intero a 32 bit, e quando provi otterrai un hash che non è corretto.
Quindi dirai, okay, passiamo al prossimo nonce, nonce numero uno, anche l’hash non è corretto.
Avanzare ancora una volta, provare l’hash due, anche errato. Quindi puoi vedere dove sta andando, e in molti casi, proverai ogni singolo valore possibile per quel numero intero a 32 bit, e in nessun caso l’hash sarà corretto.
Quindi a questo punto dovrai fare ulteriori cambiamenti.
E noterai che c’è questo parametro nella transazione coinbase. E ricorda che la transazione a base di monete è dove i minatori stanno effettivamente coniando nuove monete e rivendicando per loro stessi. C’è anche questo parametro extra nonce lì. Quindi, dopo aver esaurito tutti i nonce possibili nell’intestazione del blocco per il nonce extra nella transazione coinbase di tutti gli zeri. Passerai il nonce extra nella transazione coinbase fino a uno, e poi inizierai a cercare nonces ancora nell’intestazione del blocco.
05.01.04
And it’s important to realize that when you change that one parameter in the coinbase transaction, the entire merkle tree of transactions has to change. So that change will propagate all the way up. Changing the extra nonce in the coinbase transaction is much more expensive than changing the nonce in the header for that reason, so you do that as the outer loop. And the inner loop where you’re really working hard is changing the nonce in the block header.
Okay, but once again our first try didn’t work here, so we’ll have to keep stepping that nonce. And again, this is a really difficult computation, so the vast, vast majority of nonces that you try aren’t gonna work.
But eventually, if you stay at it long enough, you’ll find the right combination of the extra nonce in the coinbase transaction and the nonce in the header, and you’ll find a block with a hash that starts with enough zeros to be considered valid. And this is when you wanna announce it as quickly as you can and hope that you can profit from it.
Ed è importante rendersi conto che quando si modifica quel parametro nella transazione di coinbase, l’intero albero merker delle transazioni deve cambiare. In modo che il cambiamento si propagherà fino in fondo. Cambiare il nonce extra nella transazione coinbase è molto più costoso che cambiare il nonce nell’header per quel motivo, quindi lo fai come loop esterno. E il ciclo interiore in cui stai davvero lavorando sodo sta cambiando il nonce nell’intestazione del blocco.
Ok, ma ancora una volta il nostro primo tentativo non ha funzionato qui, quindi dovremo continuare a fare un passo in avanti. E ancora, questo è un calcolo molto difficile, quindi la vasta, vasta maggioranza di noces che provi non funzionerà.
Ma alla fine, se ci rimani abbastanza a lungo, troverai la giusta combinazione di extra nonce in la transazione coinbase e il nonce nell’intestazione, e troverai un blocco con un hash che inizia con zeri sufficienti per essere considerato valido. E questo è quando vuoi annunciarlo il più velocemente possibile e spero che tu possa trarne profitto.
05.01.05
So I said it was difficult. Exactly how difficult is it?
Well, as of today, this is the mining difficulty target. So the hash of any valid block has to be below this value here. And this is a 256 bit hash output, we’re using Sha 256 the hash function which is appropriately named its 256 bits, currently at least the first 64 bits of the hash of any valid block have to be set to 0.
Overall, the current difficulty is about 2 to the 66, which is a really huge number. If we try to write it out in decimal, that’s what we get. That’s 84 quintillion. And this number is so big it’s difficult to even imagine. One approximation for it that you can think about is its about the population of the Earth squared.
So basically, if every person on Earth was themselves their own planet Earth, with seven billion people on it, the total number of people would be close to this number.
Or another way to think about it is that if all seven billion people on Earth shook hands with each other.
Fewer than 2 to the 66 total handshakes would have to take place.
So this is a incomprehensibly huge number.
Così ho detto che era difficile. Esattamente quanto è difficile?
Bene, ad oggi, questo è l’obiettivo di difficoltà minerarie. Quindi l’hash di qualsiasi blocco valido deve essere inferiore a questo valore qui. E questo è un output di hash a 256 bit, stiamo usando Sha 256, la funzione di hash che viene appropriatamente chiamata 256 bit, attualmente almeno i primi 64 bit dell’hash di ogni blocco valido devono essere impostati su 0.
Nel complesso, la difficoltà attuale è di circa 2 a 66, che è un numero davvero enorme. Se proviamo a scriverlo in decimale, questo è ciò che otteniamo. Questo è 84 quintilioni. E questo numero è così grande che è difficile da immaginare. Una approssimazione per ciò a cui puoi pensare è la popolazione della Terra al quadrato.
Quindi, se tutte le persone sulla Terra fossero loro stessi il loro pianeta Terra, con sette miliardi di persone su di esso, il numero totale di persone sarebbe vicino a questo numero.
Oppure un altro modo di pensarci è che se tutti e sette i miliardi di persone sulla Terra si stringessero la mano.
Meno di 2 a 66 strette di mano totali dovevano aver luogo.
Quindi questo è un numero incomprensibilmente enorme.
05.01.06
So where did this number come from? How is the mining difficult set?
It’s actually chosen again, every two weeks based on how efficient the miners were over the previous two weeks. So you simply take the amount of time that it took the miners to find the previous 2016 blocks and you divide that amount of time by two weeks.
And then you multiply that ratio by whatever the previous difficulty value was to get the next difficulty value. So you’re just scaling it to keep a constant property true, which is that blocks should be found by the network on average, about once every ten minutes. That’s the fixed constant that was chosen at the beginning of time for Bitcoin, and every two weeks the difficulty is reset to ensure that, that property is maintained.
Così dove questo numero viene? Com’è difficile impostare il mining?
Esso è attualmente scelto di nuovo, ogni due settimane, in base all’efficienza dei minatori nelle due settimane precedenti. Quindi prendi semplicemente il tempo che impiegano i minatori per trovare i blocchi precedenti del 2016 e dividi quella quantità di tempo per due settimane.
E poi moltiplichi quel rapporto per qualsiasi valore di difficoltà precedente per ottenere il successivo valore di difficoltà. Quindi lo stai semplicemente ridimensionando per mantenere una proprietà costante vera, ovvero che i blocchi dovrebbero essere rilevati dalla rete in media, circa una volta ogni dieci minuti. Questa è la costante fissa scelta all’inizio di Bitcoin, e ogni due settimane viene ripristinata la difficoltà per garantire che tale proprietà venga mantenuta.
05.01.07
So you can see that over time the mining difficulty keeps increasing. It’s not necessarily a steady linear increase or an exponential increase. It depends on activity in the market. How many new miners are getting into the game, which may be affected by the current exchange rate of Bitcoin. But generally more and more hash power comes online. More people are hashing, blocks are found faster, and the difficulty is adjusted up, so that it again takes ten minutes to find blocks, and you can see that in the red line on the graph here. There’s a step function of difficulty even though the overall network hash rate is growing smoothly, because you only reset every two weeks, the difficulty steps out.
Così puoi vedere che col passare del tempo la difficoltà di estrazione continua ad aumentare. Non è necessariamente un aumento lineare costante o un aumento esponenziale. Dipende dall’attività sul mercato. Quanti nuovi minatori stanno entrando nel gioco, che potrebbero essere influenzati dall’attuale tasso di cambio di Bitcoin. Ma generalmente arriva sempre più potere hash online. Più persone stanno facendo hashing, i blocchi si trovano più velocemente, e la difficoltà è aggiustata, così che ci vogliono ancora dieci minuti per trovare i blocchi, e puoi vederli nella linea rossa sul grafico qui. C’è una fase di difficoltà anche se il tasso globale di hash della rete cresce senza intoppi, perché si ripristina solo ogni due settimane, la difficoltà si risolve.
05.01.08
Another way to view this is to look at how long it takes to find a block on average. So here you can see a graph of over time, how many seconds elapsed between consecutive blocks in the block chain.
And you can see that this gradually goes down, and then it jumps up again, and then gradually goes down. And of course, what’s happening there is that every two weeks the difficulty resets and the average block time goes back up to about ten minutes, and then more and more power goes online, the difficulty stays the same, so the miners are finding blocks faster and faster. And then two weeks pass, the difficulty resets back up to ten minutes and the process starts all over again.
So in actuality, even though the goal was for a block to be found every ten minutes, on average it’s more close to about every nine minutes, and at the end of the two week cycle, it will get down to about every eight minutes.
Un altro modo per vedere questo è guardare quanto tempo ci vuole per trovare un blocco in media. Quindi qui puoi vedere un grafico nel tempo, quanti secondi sono trascorsi tra i blocchi consecutivi nella catena di blocchi.
E puoi vedere che questo gradualmente va giù, e poi salta di nuovo, e poi gradualmente scende. E naturalmente, quello che succede è che ogni due settimane la difficoltà si azzera e il tempo medio di blocco risale a circa dieci minuti, e poi sempre più energia va online, la difficoltà rimane la stessa, quindi i minatori stanno trovando blocchi più velocemente e più veloce. E poi passano due settimane, la difficoltà si ripristina fino a dieci minuti e il processo ricomincia daccapo.
In realtà, anche se l’obiettivo era trovare un blocco ogni dieci minuti, in media è più vicino a circa ogni nove minuti e alla fine del ciclo di due settimane, scenderà a circa ogni otto minuti.
[top]
© Edward W. Felten – Professor of Computer Science and Public Affairs Princeton University
SEZIONE 04.07
Mercati valutari
SEZIONE 05.02
Hardware per l’estrazione