W02.04 – INCENTIVI E PROVA DEL LAVORO


WEEK 2
Come Bitcoin realizza la Decentralizzazione

Learn Bitcoin’s consensus mechanism and reason about its security. Appreciate how security comes from a combination of technical methods and clever incentive engineering. Imparare il meccanismo di consenso di Bitcoin e la ragione sulla sua sicurezza. Apprezzare il modo in cui la sicurezza deriva da una combinazione di metodi tecnici e ingegnosità intelligente.

Arvind Narayanan
Assistant Professor of Computer science – Princeton

Sezione 02.04 – Incentivi e Prova del Lavoro
02.04.01
So, in the previous section, we got a basic look at BitCoin’s consensus algorithm and a good intuition for why we believe that it’s secure. But recall that at the beginning of the lecture I told you that BitCoin’s decentralization is partly a technical mechanism and partly clever incentive engineering. So far, we’ve mostly looked at the technical mechanism. Now let’s talk about the incentive engineering that happens in BitCoin.

I asked you to take a leap of faith with me earlier in assuming that we’re able to pick a random node. And perhaps more problematically, that at least 50% of the time, this process will be pick an honest node. But of course this assumption of honesty is quite problematic, especially if there are financial incentives for participants to subvert this. Then why would we be expect any node to be honest, really? So what we want to ask is, can we give nodes an incentive for behaving honestly?
Let’s look at this with respect to the picture we’ve been looking at. This is the long-term consensus chain, and this block contains an attempt to double-spend. We can ask, can we penalize, somehow, the node that created this block?

But this is problematic for a number of reasons, including the fact that nodes don’t have identities, and so there’s no way to go after them to penalize them.
Quindi, nella sezione precedente, abbiamo ottenuto uno sguardo di base sull’algoritmo di consenso di BitCoin e una buona intuizione per il motivo per cui crediamo che sia sicuro. Ma ricorda che all’inizio della sezione ti ho detto che il decentramento di BitCoin è in parte un meccanismo tecnico e in parte un’ingegneria di incentivi intelligente. Finora, abbiamo principalmente esaminato il meccanismo tecnico. Ora parliamo dell’ingegneria degli incentivi che accade in BitCoin.

Ti ho chiesto di fare un salto di fiducia con me in precedenza, assumendo che siamo in grado di scegliere un nodo casuale. E forse più problematico, che almeno il 50% delle volte, questo processo sarà scelto da un nodo onesto. Ma naturalmente questa assunzione di onestà è abbastanza problematica, specialmente se ci sono incentivi finanziari per i partecipanti a sovvertire questo. Allora perché dovremmo aspettarci che ogni nodo sia onesto, davvero? Quindi, quello che vogliamo chiedere è, possiamo dare ai nodi un incentivo per comportarsi onestamente?

Diamo un’occhiata a questo per quanto riguarda l’immagine che stiamo guardando. Questa è la catena di consenso a lungo termine e questo blocco contiene un tentativo di raddoppiare la spesa. Possiamo chiedere, possiamo penalizzare, in qualche modo, il nodo che ha creato questo blocco?

Ma questo è problematico per una serie di ragioni, incluso il fatto che i nodi non hanno identità, e quindi non c’è modo di perseguitarli per penalizzarli.
02.04.02
So instead, let’s flip the question around and ask, can we reward the nodes that created all these blocks that did end up on the long-term consensus chain?

Well again, sort of the same problem, we don’t have node identity, so we can’t mail them cash to their home addresses.

If only there were some sort of digital currency that we can use to incentivize them, a decentralized one perhaps. You probably see where I’m getting at. In other words, we’re gonna use BitCoins in order to incentivize the nodes that created these blocks. So how are we gonna do that?
Quindi, invece, giriamo la domanda e chiediamo, possiamo premiare i nodi che hanno creato tutti questi blocchi che sono finiti nella catena di consenso a lungo termine?

Bene, ancora una volta, lo stesso problema, non abbiamo l’identità del nodo, quindi non possiamo spedirli in contanti ai loro indirizzi di casa.

Se solo ci fosse una sorta di valuta digitale che possiamo usare per incentivarli, forse uno decentralizzato. Probabilmente vedi dove sto andando. In altre parole, useremo BitCoin per incentivare i nodi che hanno creato questi blocchi. Allora, come lo faremo?
02.04.03
Well, so far everything that I’ve said is just an abstract algorithm for achieving distributed consensus. Now we’re gonna break out of that model. What I’m gonna say now is specific to the fact that what we’re achieving through this distributed consensus process is, in fact, a currency. And we’re gonna incentivize these nodes by paying them in units of this currency.

So how do we do that? There are in fact, two separate incentive mechanisms in BitCoin.
Bene, finora tutto ciò che ho detto è solo un algoritmo astratto per raggiungere un consenso distribuito. Ora usciremo da quel modello. Quello che sto per dire ora è specifico del fatto che ciò che stiamo ottenendo attraverso questo processo di consenso distribuito è, in realtà, una valuta. E incentiveremo questi nodi pagandoli in unità di questa valuta.

Quindi come lo facciamo? Esistono infatti due meccanismi di incentivi separati in BitCoin.
02.04.04
And the first one is called the block reward. So what is the block reward? It’s just this. According to the rules of BitCoin, the node that creates each block gets to include a special transaction in that block. And that special transaction is a coin creation transaction.

And this node can also choose the recipient address of this transaction. So of course, that node will typically choose and address belonging to itself as a recipient of this coin creation transaction, there-by paying itself. You can think of it as a payment in exchange for the service of creating that block to go onto the consensus chain.

In fact, the value of this coin creation transaction has an interesting property. It’s currently fixed at 25 bitcoins, but it actually halves every four years. We’re now in the second period. For the first four years of BitCoin’s existence, it was 50 BitCoins. Now it’s 25, and it’s going to keep halving. This has some interesting consequences. We’ll come back to that on the next slide. But let me ask you this. It appears, based on what I’ve said here, that this node gets the block award regardless of whether it proposes a block with only valid transactions, or it behaves maliciously. So how are we actually providing any incentives for honest behavior via this block reward?
E il primo è chiamato il premio del blocco. Allora, qual è il premio del blocco? È solo questo. Secondo le regole di BitCoin, il nodo che crea ogni blocco può includere una transazione speciale in quel blocco. E quella transazione speciale è una transazione di creazione di monete.

E questo nodo può anche scegliere l’indirizzo del destinatario di questa transazione. Quindi, naturalmente, quel nodo in genere sceglierà e indirizzerà l’appartenenza a se stesso come destinatario di questa transazione di creazione di monete, lì, pagandosi da solo. Puoi considerarlo come un pagamento in cambio del servizio di creazione di quel blocco per passare alla catena del consenso.

In effetti, il valore di questa transazione di creazione di monete ha una proprietà interessante. Attualmente è fissato a 25 bitcoin, ma in realtà si dimezza ogni quattro anni. Ora siamo nel secondo periodo. Per i primi quattro anni di esistenza di BitCoin erano 50 BitCoin. Ora è 25 e continuerà a dimezzarsi. Questo ha alcune conseguenze interessanti. Torneremo su quello nella prossima diapositiva. Ma lascia che ti chieda questo. Sembra, in base a quanto ho detto qui, che questo nodo ottenga il blocco a prescindere dal fatto che proponga un blocco con solo transazioni valide o si comporti maliziosamente. Quindi, come stiamo effettivamente fornendo incentivi per un comportamento onesto attraverso questo premio?
02.04.05
But aha, think about this. Well, how well does node sort of get to collect its reward? That will only happen if this block ends up on the long-term consensus branch, because that’s the only case in which this coin creation transaction will be considered valid, because the coin creation transaction is not special. It’s just like every other transaction. It’s only valid if it ends up on the consensus chain, so that’s the incentive mechanism here. It’s very subtle, but it’s a very neat trick, and so if it incentivizes nodes to behave honestly, or at the very minimum, it incentivizes nodes to behave in a way that they think other nodes are going to agree with in creating the next blocks of the block chain.

So that’s the first incentive mechanism. Let’s come back to this point now. This weird sort of halving phenomenon that we see here.
Ma aha, pensa a questo. Bene, in che modo il nodo riesce a ottenere la sua ricompensa? Ciò avverrà solo se questo blocco finisce nel ramo del consenso a lungo termine, perché questo è l’unico caso in cui questa transazione di creazione di monete sarà considerata valida, perché la transazione di creazione di monete non è speciale. È come ogni altra transazione. È valido solo se finisce sulla catena del consenso, quindi questo è il meccanismo di incentivazione qui. È molto sottile, ma è un trucco molto ordinato, e quindi se si incentiva i nodi a comportarsi onestamente, o come minimo, che incentiva i nodi a comportarsi in un modo che pensano altri nodi stanno per essere d’accordo con la creazione dei prossimi blocchi della catena di blocchi.

Quindi questo è il primo meccanismo di incentivi. Torniamo a questo punto ora. Questo strano fenomeno del dimezzamento che vediamo qui.
02.04.06
And this can be best illustrated graphically. Here, I’m gonna show you a graph of time on the X-axis, versus the total number of BitCoins in circulation.

And this over here was the first period where each block resulted in 50 new BitCoins being created. And roughly at the end of last year, that block reward halved from 50 to 25, and you can see that every four years, extending well into the future, the slope of this curve is gonna keep halving. And this is a geometric series, and you might know that it means that there is a finite sum. And in fact, there is a total finite supply of BitCoins. And if you add up all these numbers, it works out to 21 million, based on the rate of new block creation, which I’m gonna get to in a second.

Also worth noting is that this is the only way in which new BitCoins are created. There is no other coin generation mechanism, and that’s why this is a final and total number as the rules stand now at least, for how many BitCoins there can ever be. And this new block creation reward is actually gonna run out. So that sounds a bit weird. Does that mean that the system will stop working and become insecure because nodes no longer have the incentive to behave honestly? Well not quite, because this is only the first of two incentive mechanisms. There is quite another incentive mechanism, called the transaction fee.
E questo può essere meglio illustrato graficamente. Qui, ti mostrerò un grafico del tempo sull’asse X, rispetto al numero totale di BitCoin in circolazione.

E questo qui è stato il primo periodo in cui ogni blocco ha portato alla creazione di 50 nuovi BitCoin. E all’incirca alla fine dello scorso anno, quel premio per il blocco è dimezzato da 50 a 25, e puoi vedere che ogni quattro anni, estendendosi bene nel futuro, la pendenza di questa curva continuerà a dimezzarsi. E questa è una serie geometrica, e potresti sapere che significa che c’è una somma finita. E in effetti, c’è una fornitura finita totale di BitCoin. E se si sommano tutti questi numeri, si arriva a 21 milioni, in base al tasso di creazione di un nuovo blocco, che otterrò in un secondo.

Vale anche la pena notare che questo è l’unico modo in cui i nuovi BitCoin sono creati. Non esiste un altro meccanismo di generazione di monete, ed è per questo che questo è un numero finale e totale come le regole ora almeno, per quanti BitCoin ci possono essere. E questa nuova ricompensa per la creazione di blocchi si esaurirà davvero. Quindi sembra un pò strano. Ciò significa che il sistema smetterà di funzionare e diventerà insicuro perché i nodi non hanno più l’incentivo a comportarsi onestamente? Beh, non proprio, perché questo è solo il primo dei due meccanismi di incentivazione. C’è un altro meccanismo di incentivazione, chiamato tassa di transazione.
02.04.07
And what is a transaction fee? So the creator of any transaction, not the creator of a block, but the creator of a transaction when Alice is paying Bob. What she can do, is she can choose to make the output value of that coin less than the input value.

And the way that all the nodes interpret this difference, according to the rules of BitCoin, is that it’s a transaction fee, and whoever creates the block that first puts that transaction into the block chain gets to collect that transaction fee.

So if you’re a node that’s creating a block that contains, say 200 transactions, then the sum of all those 200 transaction fees accrues to you, and to the address that you put into that block.

Of course, this transaction fee is purely voluntary, like a tip. But we expect, based on our understanding of the system, that as the block reward starts to run out, it’ll become more and more important to almost mandatory for nodes to put a transaction fee into their transactions in order to get a reasonable quality of service. And to a certain degree, this is already starting to happen now. But precisely how this system will evolve, it really depends on a lot of game theory, which hasn’t been fully worked out yet. So that’s an interesting area of open research in BitCoin. So now we’ve acquired an understanding of how the nodes that create these blocks are incentivized to act honestly or follow the protocol. And so if we address a few more of these remaining problems, we’ll be all set to have a really good understanding of how Bitcoin achieves decentralization. What are these remaining problems?
E cos’è una tassa di transazione? Quindi il creatore di ogni transazione, non il creatore di un blocco, ma il creatore di una transazione quando Alice sta pagando Bob. Quello che può fare è che può scegliere di rendere il valore di uscita di quella moneta inferiore al valore di input.

E il modo in cui tutti i nodi interpretano questa differenza, secondo le regole di BitCoin, è che si tratta di una commissione di transazione, e chiunque crea il blocco che prima mette quella transazione nella catena di blocco ottiene per raccogliere quella tassa di transazione.

Così se sei un nodo che sta creando un blocco che contiene, ad esempio 200 transazioni, allora la somma di tutte quelle 200 commissioni di transazione si accumula a voi, e all’indirizzo che hai inserito in quel blocco.

Naturalmente, questa commissione di transazione è puramente volontaria, come un suggerimento. Ma ci aspettiamo, basandoci sulla nostra comprensione del sistema, che quando la ricompensa per il blocco inizia a esaurirsi, diventerà sempre più importante quasi obbligatoriamente per i nodi inserire una commissione di transazione nelle loro transazioni al fine di ottenere una qualità ragionevole del servizio. E fino ad un certo punto, questo sta già cominciando ad accadere ora. Ma proprio come questo sistema si evolverà, dipende in realtà da una grande teoria dei giochi, che non è ancora stata completamente elaborata. Questa è un’interessante area di ricerca aperta in BitCoin. Così ora abbiamo acquisito una comprensione di come i nodi che creano questi blocchi sono incentivati ad agire onestamente o seguire il protocollo. Pertanto, se affronteremo alcuni altri di questi problemi rimanenti, saremo tutti pronti ad avere una buona comprensione di come Bitcoin raggiunge il decentramento. Quali sono questi problemi rimanenti?
02.04.08
Well one of them, the first major one, is the leap of faith that I asked you to take, which is that somehow we can pick a random node. And the second is, that we’ve created a new problem by giving nodes these block rewards and incentives, which is that you could easily get into a free-for-all where everybody wants to run a Bitcoin node in the hope of capturing some of these rewards. And a third one is an even trickier version of this problem, which is that an adversary might create a whole different number of civil nodes in order to really try to subvert this consensus process.

So number three is sort of a trickier version of number two.

It turns out that all of these problems are related, and all of them have the same solution. And that solution is called Proof of Work. So what is Proof of Work? Here’s the key idea.
Bene, uno di questi, il primo più importante, è il salto di fiducia che ti ho chiesto di prendere, il che è che in qualche modo possiamo scegliere un nodo casuale. E il secondo è che abbiamo creato un nuovo problema dando ai nodi questi premi a blocchi e incentivi, il che significa che si potrebbe facilmente entrare in un free-per-tutti dove tutti vogliono gestire un nodo Bitcoin nella speranza di catturarne alcuni di questi premi. E un terzo è una versione ancora più complicata di questo problema, ovvero che un avversario potrebbe creare un numero completamente diverso di nodi civili per tentare davvero di sovvertire questo processo di consenso.

Il terzo è una specie di versione più complicata del numero due.

Si scopre che tutti questi problemi sono correlati e tutti hanno la stessa soluzione. E quella soluzione si chiama Proof of Work . Allora, qual è la prova di lavoro? Ecco l’idea chiave.
02.04.09
Instead of picking a random node, we do something a little bit different. Which is, we approximate selecting a random node by instead selecting nodes in proportion to a resource that we hope that nobody can monopolize. What does that mean? Well, if that resource that we’re talking about is computing power, then it’s a proof-of-work system where we somehow select nodes in proportion to their computing power.

Alternately, it could be in proportion to ownership of the currency, and this is a legitimate alternate model. It’s not used in BitCoin, but it’s been proposed, and it’s used in a lot of alternatives to BitCoin. And that’s called proof-of-stake, which we’ll see in a later lecture.

But let’s come back to proof-of-work, let’s try to get a better idea of what this means. Selecting nodes in proportion to their computing power, another way to understand this is that we’re allowing nodes to compete with each other by using their computing power.

And that will result in nodes automatically being picked in that proportion.
Invece di scegliere un nodo casuale, facciamo qualcosa di leggermente diverso. Cioè, noi approssimiamo la selezione di un nodo casuale selezionando invece i nodi in proporzione a una risorsa che speriamo che nessuno possa monopolizzare. Cosa significa? Bene, se quella risorsa di cui stiamo parlando è informatica, allora è un sistema di prova di lavoro in cui in qualche modo selezioniamo i nodi in proporzione alla loro potenza di calcolo.

In alternativa, potrebbe essere proporzionale alla proprietà della valuta, e questo è un modello alternativo legittimo. Non è usato in BitCoin, ma è stato proposto ed è utilizzato in molte alternative a BitCoin. E questo è chiamato proof-of-stake, che vedremo in una sezione successiva.

Ma torniamo alle prove di lavoro, proviamo ad avere una migliore idea di cosa significhi. Selezionando i nodi in proporzione alla loro potenza di calcolo, un altro modo per capire questo è che stiamo permettendo ai nodi di competere tra loro usando la loro potenza di calcolo.

E ciò comporterà la selezione automatica dei nodi in quella proporzione.
02.04.10
So those are two equivalent ways to view proof-of-work. You can also think of a third way, which is that we’re making it moderately hard through proof-of-work to create new identities. So it’s sort of attacks on identity creation and on the civil attack. This may all appear a bit vague. So let me actually go ahead and show you, what is the exact proof-of-work system that’s used in BitCoin, and that’s gonna make things a lot clearer. So, here it is. Quindi quelli sono due modi equivalenti per visualizzare le prove di lavoro. Puoi anche pensare a una terza via, ovvero che stiamo rendendo abbastanza difficile la dimostrazione del lavoro per creare nuove identità. Quindi è una sorta di attacchi alla creazione di identità e all’attacco civile. Questo può sembrare un pò vago. Quindi lasciatemi andare avanti e mostrarti quale è l’esatto sistema di proof-of-work usato in BitCoin, e questo renderà le cose molto più chiare. Quindi, eccolo.
02.04.11
It’s called hash puzzles, and what these means, is that in order to create a block, the node that proposes that block is required to find a number, a nonce. Such that, when you put together in the block the nonce, the prev_hash, and the list of transaction that comprised that block, and take the hash of this whole, long string. Then that hash output should be a number that is very small that falls into this small target space here in relation to this very large space that is the output space of that hash function.

Let’s look at it one more time. As we looked at it earlier, normally a block contains series of transactions that you’re proposing. In addition, a block also contains a pointer to the previous block, as we saw, and a pointer is just a string in this context. But in addition here, we’re requiring that a block also contain a nonce.

And why is this? And the idea is that we wanna make it moderately difficult to in fact, find a nonce that satisfies this required property, which is that hashing the whole block together including that nonce is going to result in a particular type of output.

And so we believe that if the hash function is secure, then the only way to succeed in solving this hash puzzle is to just try enough nonces one by one until you get lucky. So specifically, if this target space were just 1% of the overall output space, you would have to try about 100 nonces before you got lucky. And if this hash function were to behave essentially randomly, only 1 in 100 nonces will result in an output that falls within this target space.

In fact, the size of this target space is not nearly as high as 1% of the output space. It’s much, much smaller than that, which we’ll get to in a second.

But fundamentally, this is the computational problem that a node is required to solve in order to produce the block.
Now, this notion of hash puzzles and proof-of-work completely does away with the requirement for somebody, somehow to pick a random node. Instead, nodes are simply all the time independently competing to solve these hash puzzles.

And once in a while, one of them will get lucky and will find a random nonce that satisfies this property, and that node then gets to propose the next block. That’s how it’s completely decentralized. There is nobody deciding which node it is that gets to propose the next block.
Si chiama hash puzzles [rompicapo] e cosa significa, è che per creare un blocco, il nodo che propone quel blocco è necessario per trovare un numero, un nonce. Tale che, quando metti insieme nel blocco il nonce, il precursore e l’elenco di transazioni che comprendeva quel blocco e prendi l’hash di questa intera stringa lunga. Quindi quell’output di hash dovrebbe essere un numero molto piccolo che rientra in questo piccolo spazio di destinazione qui in relazione a questo spazio molto grande che è lo spazio di uscita di quella funzione di hash.

Guardiamolo ancora una volta. Come abbiamo visto prima, normalmente un blocco contiene serie di transazioni che stai proponendo. Inoltre, un blocco contiene anche un puntatore al blocco precedente, come abbiamo visto, e un puntatore è solo una stringa in questo contesto. Ma in più qui, richiediamo che un blocco contenga anche un nonce.

E perché questo? E l’idea è che vogliamo renderlo moderatamente difficile, in effetti, trovare un nonce che soddisfi questa proprietà richiesta, che è l’hashing dell’intero blocco compreso il fatto che il risultato verrà generato in un particolare tipo di output.

E così crediamo che se la funzione di hash è sicura, allora l’unico modo per riuscire a risolvere questo hash puzzle è provare a sufficienza uno alla volta finché non si diventa fortunati. Quindi, nello specifico, se questo spazio target fosse solo l’1% dello spazio di output complessivo, dovresti provare circa 100 nonces prima di essere fortunato. E se questa funzione di hash dovesse comportarsi in modo sostanzialmente casuale, solo 1 su 100 nonce genererà un output che rientra in questo spazio target.

Infatti, la dimensione di questo spazio target non è quasi pari all’1% dello spazio di output. È molto, molto più piccolo di quello, che ci arriveremo in un secondo.

Ma fondamentalmente, questo è il problema computazionale che a un nodo è richiesto di risolvere per produrre il blocco.
Ora, questa nozione di puzzle di hash e di prova del lavoro elimina completamente il requisito per qualcuno, in qualche modo scegliere un nodo casuale. Invece, i nodi sono sempre in competizione in modo indipendente per risolvere questi puzzle di hash.

E una volta ogni tanto, uno di loro sarà fortunato e troverà un nonce casuale che soddisfa questa proprietà, e quel nodo poi arriva a proporre il prossimo blocco. Ecco come è completamente decentralizzato. Non c’è nessuno che decida quale nodo è in grado di proporre il prossimo blocco.
02.04.12
So let’s look at it in a little bit more detail now. There are three properties that I wanna show you, essential properties of this proof-of-work function of this hash puzzle. And the first is, that it needs to be quite difficult to compute. I said moderately difficult, but what I mean by moderately difficult as of today, and you’ll see why it varies with time, it’s about 10 to the 20 hashes per block that you need to compute. So the size of the target space is only 1 over 10 to the 20 of the size of the output space of this hash function.

All right, so if you look at it in terms of the amount of computing that your laptop needs to do, for example, this is simply a humongous and infeasible number.

And because of this, only some nodes even bother to compete in this block creation process, and this is what is known as BitCoin mining. Basically, the process of repeatedly trying and solving these hash puzzles, and we call these node miners.

And because of how capital incentive this process is, this goes back to what I said at the beginning. That even though technically anybody can be a miner, there’s been a lot of concentration of power, or concentration of participation in the mining ecosystem. So that’s the first property of these proof-of-work puzzles.
Quindi guardiamolo in modo un pò più dettagliato ora. Ci sono tre proprietà che voglio mostrarti, proprietà essenziali di questa funzione di proof-of-work di questo hash puzzles [rompicapo]. E il primo è che deve essere abbastanza difficile da calcolare. Ho detto moderatamente difficile, ma quello che intendo è moderatamente difficile a partire da oggi, e vedrai perché varia nel tempo, sono circa 10 o 20 hash per blocco che devi calcolare. Quindi la dimensione dello spazio di destinazione è solo 1 su 10 per il 20 della dimensione dello spazio di output di questa funzione di hash.

Va bene, quindi se si guarda in termini di quantità di calcolo che il computer portatile deve fare, per esempio, questo è semplicemente un numero enorme e irrealizzabile.

E a causa di questo, solo alcuni nodi si preoccupano di competere in questo processo di creazione di blocchi, e questo è ciò che è noto come mining di BitCoin. Fondamentalmente, il processo di cercare e risolvere ripetutamente questi enigmi, e li chiamiamo minatori di nodi.

E a causa di come il capitale incentivi questo processo, questo torna a ciò che ho detto all’inizio. Anche se tecnicamente chiunque può essere un minatore, c’è stata molta concentrazione di potere o concentrazione di partecipazione nell’ecosistema minerario. Quindi questa è la prima proprietà di questi enigmi del proof-of-work.
02.04.13
The second property, is that we want this cost to be parameterizable. It’s not a cost that is fixed over all time. And the way that that’s accomplished is that all the nodes in the BitCoin Peer-to-Peer network will automatically re-calculate the target, that is the size of the target space as a fraction of the output space, every two weeks. And they do it in such a way that they maintain this invariant, which is that the average time between any two successive walks produced globally in the overall BitCoin network is about ten minutes.

So let’s think about what this means. What this means is, that if you’re a miner, and you’ve invested a certain fixed amount of hardware into BitCoin mining, but the overall mining ecosystem is growing. More miners are coming in, or they’re deploying faster and faster hardware. That means that over a two week period, slightly more blocks are going to be found than expected. And so nodes will automatically readjust the target. And so the amount of work that you have to do to be able to find a block is going to increase. So if you put in a fixed amount of hardware investment, the rate at which you find blocks is actually dependent upon what other miners are doing.
La seconda proprietà è che vogliamo che questo costo sia parametrizzabile. Non è un costo fisso in ogni momento. E il modo in cui ciò viene realizzato è che tutti i nodi della rete Peer-to-Peer di BitCoin calcoleranno automaticamente il target, ovvero la dimensione dello spazio di destinazione come una frazione dello spazio di output, ogni due settimane. E lo fanno in modo tale da mantenere questa invarianza, ovvero che il tempo medio tra due sessioni successive prodotte globalmente nella rete BitCoin complessiva è di circa dieci minuti.

Quindi pensiamo a cosa significa questo. Ciò significa che se sei un minatore e hai investito una determinata quantità di hardware in BitCoin mining, ma l’intero ecosistema di data mining sta crescendo. Altri minatori stanno arrivando, o stanno distribuendo hardware sempre più veloce. Ciò significa che in un periodo di due settimane, si troveranno un numero leggermente maggiore di blocchi del previsto. E così i nodi riadattano automaticamente il bersaglio. E quindi la quantità di lavoro che devi fare per essere in grado di trovare un blocco sta per aumentare. Quindi, se si investe una quantità fissa di investimenti in hardware, la velocità con cui si trovano i blocchi dipende in realtà da ciò che altri minatori stanno facendo.
02.04.14
So there’s a very nice formula to capture this, which is that the probability that any given miner Alice is going to win the next block is equivalent to the fraction of global hash power that she controls.

Which means that if she has mining hardware that’s about 0.1% of total hash power, she will compute roughly one in every thousand blocks.

So why does this readjustment happen? Why do we want to maintain this ten minute invariance? Well, the reason is simple.

If blocks were to come very close together, then there would be a lot of inefficiency, and we would lose the optimization benefits of being able to put a lot of transactions. As it currently stands, several hundred transactions in a single block. If you went down from ten minutes to five minutes, it would probably be okay, and there are a lot of discussions about if we’re doing an altcoin now, what is the block latency that we should have? But everybody agrees that the block latency should be a fixed amount. It can not be allowed to go down without limits, and that’s why you have this automatic target recalculation property.
Quindi c’è una formula molto bella per catturare questo, che è la probabilità che ogni dato minatore Alice vincerà il blocco successivo equivale alla frazione di potere hash globale che controlla.

Che significa che se ha un hardware di data mining 0,1% della potenza totale di hash, calcolerà all’incirca uno su mille blocchi.

Perché questo riaggiustamento avviene? Perché vogliamo mantenere questo dieci minuti invarianza? Bene, la ragione è semplice.

Se i blocchi dovessero avvicinarsi molto da vicino, allora ci sarebbe molta inefficienza e perderemmo i vantaggi dell’ottimizzazione di essere in grado di mettere molte transazioni. Allo stato attuale, diverse centinaia di transazioni in un unico blocco. Se passassi da dieci minuti a cinque minuti, probabilmente sarebbe ok, e ci sono molte discussioni su se stiamo facendo un altcoin ora, qual è la latenza di blocco che dovremmo avere? Ma tutti sono d’accordo sul fatto che la latenza del blocco dovrebbe essere una quantità fissa. Non può essere permesso di andare giù senza limiti, ed è per questo che hai questa proprietà di ricalcolo del bersaglio automatico.
02.04.15
Now, because of the way that this cost function and proof-of-work is set up, it allows us to reformulate our security assumption. Here’s where we finally depart from the leap of faith that I asked you to take several slides ago. Instead of saying that somehow the majority of nodes are honest, in a context where nodes don’t even have identities and not being clear about what that means, we can now state crisply that a lot of attacks on BitCoin are infeasible if the majority of miners weighted by hash power are following the protocol. Or, are honest.

And the reason for that is if a majority of miners, weighted by hash power are honest, because of this competition for proposing the next block, this will automatically ensure that there is at least a 50% chance that the next block to be proposed at any point is coming from an honest node, instead of a malicious one.
Ora, a causa del modo in cui questa funzione di costo e la prova del lavoro sono state impostate, ci consente di riformulare la nostra assunzione di sicurezza. Ecco dove finalmente ci allontaniamo dal salto di fede che ti ho chiesto di fare diverse diapositive fa. Invece di dire che in qualche modo la maggior parte dei nodi è onesta, in un contesto in cui i nodi non hanno identità e non sono chiari su cosa significhi, ora possiamo affermare chiaramente che molti attacchi a BitCoin sono fattibili se la maggior parte dei minatori appesantiti dalla potenza hash seguono il protocollo. Oppure, sono onesti.

E la ragione è che se la maggioranza dei minatori, ponderata con l’hash power, è onesta, a causa di questa competizione per proporre il prossimo blocco, questo garantirà automaticamente che ci sia almeno il 50% di possibilità che il prossimo il blocco da proporre in qualsiasi momento proviene da un nodo onesto, invece che da uno malevolo.
02.04.16
Let’s now look at the consequences of the fact that solving hash puzzles is probabilistic. Why is it probabilistic? Because nobody can predict which nonce is going to result in solving the hash puzzle. The only way to do it is to try nonces one by one, and hope that one succeeds. Right? And so this process is called mathematically, Bernoulli trials. I won’t go into detail on that, but you can look it up. But typically, nodes try so many nonces that a discrete probability process called Bernoulli trials can be well approximated by a continuous probability process called a poisson process. And the end result of all of that is that the distribution, the probability density function of the time to find the next block by any node in the network globally, looks something like this. It’s called an exponential distribution. But really, the upshot is, that there is some small probability that if a block has been found now, the next block is going to be found very soon, or within a few seconds, or within a minute.

And there is also some small probability that it’ll take a long time, maybe an hour to find the next block. But overall, the network automatically adjusts the difficulty so that the inter block time is maintained at an average long-term of ten minutes.

So this is a graph that shows how frequently blocks are going to be created by the entire network. Now I’m caring about which miner this is coming from.

If you’re a miner specifically interested in how quickly you’re finding blocks, what does this probability density function look like? Well, it’s going to have the same shape, but it’s just going to have a different scale on the X-axis. Again, it can be represented by a nice equation.
Osserviamo ora le conseguenze del fatto che risolvere i puzzle di hash è probabilistico. Perché è probabilistico? Perché nessuno può prevedere quale nonce si risolverà nel risolvere il puzzle dell’hash. L’unico modo per farlo è provare i nonces uno per uno, e sperare che ci riesca. Giusto? E così questo processo è chiamato matematicamente, le processo di Bernoulli. Non entrerò nei dettagli al riguardo, ma puoi cercarlo. Ma tipicamente, i nodi tentano così tanti noces che un processo di probabilità discreto chiamato prove di Bernoulli può essere ben approssimato da un processo di probabilità continuo chiamato processo di poisson. E il risultato finale di tutto ciò è che la distribuzione, la funzione di densità di probabilità del tempo per trovare globalmente il prossimo blocco da qualsiasi nodo della rete, assomiglia a qualcosa del genere. Si chiama distribuzione esponenziale. Ma in realtà, il risultato è che c’è una piccola probabilità che se un blocco è stato trovato ora, il prossimo blocco verrà trovato molto presto, o entro pochi secondi, o entro un minuto.

E c’è anche qualche piccola probabilità ci vorrà molto tempo, forse un’ora per trovare il blocco successivo. Ma nel complesso, la rete regola automaticamente la difficoltà in modo che il tempo di interblocco sia mantenuto a una media di lungo termine di dieci minuti.

Quindi questo è un grafico che mostra la frequenza con cui i blocchi verranno creati dall’intera rete. Ora mi preoccupo di quale minatore proviene.

Se sei un minatore specificamente interessato alla velocità con cui stai trovando i blocchi, che aspetto ha questa funzione di densità di probabilità? Bene, avrà la stessa forma, ma avrà solo una scala diversa sull’asse X. Di nuovo, può essere rappresentato da una bella equazione.
02.04.17
For a specific miner, the mean time to find a block, given that you’ve just found a block, is going to be 10 minute divided by the fraction of hash power that you control. So again, if you have 0.1% of the total network hash power, you’re gonna find blocks once every 10,000 minutes, which is several days. And so, not only is your main time between blocks going to be very high, the variance of the time between blocks found by you is also going to be very high. And this has some important consequences that we’re gonna be looking at in later lectures. Per un minatore specifico, il tempo medio per trovare un blocco, dato che hai appena trovato un blocco, sarà di 10 minuti diviso per la frazione di potere hash che controlli. Quindi, di nuovo, se hai lo 0,1% della potenza totale di hash della rete, troverai blocchi ogni 10.000 minuti, ovvero diversi giorni. E così, non solo il tuo tempo principale tra i blocchi sarà molto alto, anche la varianza del tempo tra i blocchi trovati da te sarà molto alta. E questo ha alcune importanti conseguenze che avremo in seguito nelle sezioni successive.
02.04.18
So now let’s turn to the third important probability of this proof-of-work function. Which is, that it’s actually trivial to verify the new node has computed proof-of-work correctly. What does that mean? Even if it takes a node on average ten to the 20 tries to find a nonce that succeeds in finding the right property of the hash function, that nonce must be published as part of the block. So it’s trivial for any other node to look at the block contents, hash them all together, and verify that the output is less than the target.

So this is an important property because, once again, it allows you to get rid of centralization. You don’t need any centralized authority verifying that miners are doing their job correctly. Any node, or any miner, can instantly verify that a block found by another miner satisfies this proof-of-work property, and there-by they can be sure that this miner put a lot of computing power into finding that block.
Passiamo ora alla terza importante probabilità di questa funzione di prova di lavoro. Il che è che è davvero banale verificare che il nuovo nodo abbia correttamente elaborato la prova di lavoro. Cosa significa? Anche se prende in media un nodo da dieci a venti tentativi di trovare un nonce che riesce a trovare la proprietà giusta della funzione di hash, quel nonce deve essere pubblicato come parte del blocco. Quindi è banale che qualsiasi altro nodo guardi i contenuti del blocco, li riunisca tutti insieme e verifica che l’output sia inferiore al target.

Quindi questa è una proprietà importante perché, ancora una volta, ti permette di sbarazzarti della centralizzazione. Non hai bisogno di alcuna autorità centralizzata per verificare che i minatori stiano facendo il loro lavoro correttamente. Qualsiasi nodo, o qualsiasi minatore, può immediatamente verificare che un blocco trovato da un altro minatore soddisfa questa proprietà di prova di lavoro, e lì, possono essere certi che questo minatore ha messo molta potenza di calcolo nel trovare quel blocco.

[top]
© Arvind Narayanan – Assistant Professor of Computer science – Princeton University

W02.03
Consenso senza Identità: la Block Chain
W02.05
Mettendo tutto insieme