咨询热线 13332997463 | 0755-33151996

20201675

盐城配音公司

时间:2019-10-26 点击:980次

摘要
    IT_M5L1c_Chainside_Contenuto_01   Bentornato in questo modulo   IT_M5L1c_Chainside_Contenuto_02   Dopo aver visto come funziona la rete bitcoin e

  

盐城配音公司

盐城配音公司

  IT_M5L1c_Chainside_Contenuto_01

  Bentornato in questo modulo

  IT_M5L1c_Chainside_Contenuto_02

  Dopo aver visto come funziona la rete bitcoin e quali strumenti

  possono essere utilizzati per interagire con esso come utente, nella

  prossima sezione vedremo più in dettaglio come funziona il processo

  di mining.

  Innanzitutto, per comprendere il mining, vediamo come viene

  effettivamente realizzato un blocco blockchain. Tutte le transazioni

  che sono incluse in un blocco sono organizzate in una struttura ad

  albero di merkle, in modo che possiamo avere un singolo hash, noto

  con la radice di merkle, che funge da impegno per tutte le transazioni

  nel blocco. Se anche solo una singola transazione cambia

  leggermente, la radice di merkle non sarebbe più valida, quindi

  nessuna manipolazione nellalbero può verificarsi senza cambiare

  anche la root.

  IT_M5L1c_Chainside_Contenuto_03

  Abbiamo già visto in che modo il mining è un processo molto costoso,

  quindi perché le persone decidono di investire risorse in serie di

  transazioni? Bene, ci sono due incentivi principali, il primo è il premio

  per il blocco, o la capacità di un minatore di emettere una nuova

  moneta e assegnarli a se stesso. Come abbiamo già visto,

  inizialmente questa ricompensa era di 50 bitcoin, ma si dimezza ogni

  quattro anni, quindi attualmente sono dodici bitcoin bitcoin. La

  seconda fonte di entrate sono le commissioni di transazione, che

  sono piccole somme che vengono pagate da ogni utente che

  desidera che la sua transazione sia inclusa in un blocco. Senza le

  commissioni di transazione, un minatore non avrebbe nemmeno un

  incentivo a mettere qualsiasi transazione nel suo blocco a parte

  loperazione di emissione, ma grazie alla tassa è incentivo ad

  includere la transazione e ottiene delle entrate extra che lo aiutano a

  pagare le bollette

  IT_M5L1c_Chainside_Contenuto_04

  La quantità di transazioni che un minatore può includere in un blocco

  è deliberatamente limitata. Ciò è dovuto al fatto che i nodi devono

  scaricare tutti i blocchi e archiviarli, quindi se la blockchain cresce

  troppo velocemente è troppo grande per la maggior parte degli utenti

  per conservarli sui loro dispositivi, e se il blocco è troppo grande

  potrebbe anche essere un problema per scaricarli senza una

  larghezza di banda ad alta capacità. Inizialmente la dimensione del

  blocco era impostata su un massimo di un megabyte di dati, ma nel

  2017, dopo un aggiornamento di rete, era aumentato a oltre due

  megabyte. Ciò significa che se un minatore crea un blocco troppo

  grande e ha troppe transazioni, il nodo lo rifiuterà come non valido.

  Come conseguenza di ciò, se più persone vogliono effettuare

  transazioni sulla blockchain di quanto sia possibile sostenere entro il

  limite di dimensioni del blocco, il minatore includerà le transazioni che

  pagano più tasse, mentre laltro rimarrà in sospeso in attesa di un

  altro minatore per includerli

  IT_M5L1c_Chainside_Contenuto_05

  La parte più importante di un blocco è lintestazione del blocco.

  Lintestazione del blocco è il vero oggetto della prova del processo di

  lavoro. In esempi semplificati precedenti abbiamo fatto sembrare che

  linput dellhashing fosse lintero blocco, ma in realtà solo

  lintestazione verrà sottoposta a hash quando si esegue la prova di

  lavoro. Quindi vediamo come è composta lintestazione.

  IT_M5L1c_Chainside_Contenuto_06

  Prima di tutto abbiamo il numero di versione, si tratta di quattro byte

  di dati che vengono utilizzati semplicemente per indicare quale serie

  di regole di convalida dei blocchi seguire quando si verifica se il

  blocco è effettivamente corretto. Questo numero di versione è molto

  buono per scopi di compatibilità con le versioni precedenti, in quanto

  è possibile avere alcuni minatori che stanno seguendo un nuovo set

  di regole che include laggiornamento di alcuni protocolli, mentre altri

  minatori che non sono ancora aggiornati possono ancora seguire le

  vecchie regole. Con il numero di versione, un minatore può segnalare

  ai nodi completi che eseguiranno il controllo quali regole sta

  seguendo, il nuovo o alcuni vecchi, ma devono essere comunque un

  insieme di regole accettate e riconosciute dai nodi nel Rete

  IT_M5L1c_Chainside_Contenuto_07

  La seconda parte dellintestazione del blocco è lhash del blocco

  precedente, che utilizza 32 byte. Questo è necessario per mantenere

  i collegamenti tra il blocco successivo, garantendo lordine

  cronologico e la solidità della blockchain. Lhash è in realtà un doppio

  hash, quindi lalgoritmo di hashing sha256 viene utilizzato due volte

  come protezione da alcune possibili vulnerabilità remote

  IT_M5L1c_Chainside_Contenuto_08

  Quindi abbiamo lhash root di merkle, che è il top hash dellalbero

  delle transazioni di merkle. Questo elemento è molto importante

  poiché solo 32 byte forniscono un impegno per tutte le transazioni

  che verranno incluse nel blocco. Una volta impostata la radice di

  merkle, non è possibile modificare quale transazione sarà nel blocco,

  né il loro ordine. In sostanza, è necessario includere la radice di

  merkle nellintestazione per avere un certo limite tra lintestazione del

  blocco e tutte le transazioni nel blocco

  IT_M5L1c_Chainside_Contenuto_09

  Il quarto elemento consiste in quattro byte dedicati al timestamp. Il

  timestamp è espresso in unix time e rappresenta il momento in cui il

  minatore ha cancellato il blocco. Tuttavia, poiché nessuno, tranne i

  minatori in sé, può veramente sapere con certezza quando il blocco è

  stato estratto, cè il problema che il minatore potrebbe potenzialmente

  mentire e mettere un timestamp sbagliato. Per questi motivi ci sono

  alcune regole volte a evitare eccessive manipolazioni di timestamp.

  In particolare, un nodo considererà il timestamp solo se è almeno

  maggiore del tempo mediano degli undici blocchi precedenti e se non

  è più le due ore nel futuro rispetto al loro orologio locale. Come puoi

  notare, le regole non sono molto rigide, esiste infatti un livello di

  tolleranza di circa tre ore e potenzialmente un blocco potrebbe anche

  avere un timestamp inferiore rispetto ad alcuni dei suoi predecessori,

  ma questo non è un problema dato che lordine cronologico è fornito

  dalla catena di hash, piuttosto che dalla sequenza di timestamp. I

  vincoli di timestamp sono stati progettati per essere deliberatamente

  sciolti in modo che la mancanza di coordinamento nel tempo a causa

  di problemi di rete o di infrastruttura non sia tale da causare problemi

  di consenso su quale blocco sia valido e quale no. Il timestamp in

  Bitcoin è necessario solo per qualcosa chiamato regolazione della

  difficoltà, che vedremo nelle prossime diapositive, e per questo caso

  duso non è richiesta molta precisione.

  IT_M5L1c_Chainside_Contenuto_10

  Il prossimo campo è chiamato nbits, ed è semplicemente quattro byte

  che definiscono qual è la difficoltà richiesta dalla prova di lavoro

  applicata allintestazione del blocco, o, per dirla in altre parole, con

  quanti lo zero fa lhash dellintestazione devo iniziare. Pertanto,

  questo valore viene verificato rispetto allhash dellintestazione per

  verificare che siano stati soddisfatti i requisiti di prova del lavoro. La

  difficoltà viene reimpostata a intervalli regolari per adattarsi ai

  cambiamenti nelle condizioni della rete con il processo di

  aggiustamento della difficoltà, che analizzeremo in seguito

  IT_M5L1c_Chainside_Contenuto_11

  Lultimo campo lintestazione del blocco nel nonce. Il nonce come

  abbiamo già visto è un numero arbitrario il cui scopo è unicamente

  quello di consentire al minatore di cambiare lintestazione del blocco

  e cercarne uno che abbia un hash che rispetti il requisito di difficoltà

  impostato nel campo nbit. A causa del fatto che il campo nonce ha

  una lunghezza di soli quattro byte, spesso non è sufficiente trovare

  un hash adatto e dopo aver provato tutti i possibili nonces non sono

  ancora soddisfatti i requisiti di prova del lavoro. In questi casi, il

  minatore dovrà provare a cambiare qualcosaltro nel blocco per

  provare con una nuova serie di nomi, come il timestamp o lordine

  nelle transazioni nel blocco per avere una diversa radice di merkle

  IT_M5L1c_Chainside_Contenuto_12

  Affinché il bitcoin funzioni correttamente, è necessaria una certa

  distanza temporale tra i blocchi per avere il tempo di propagare

  correttamente le informazioni attraverso la rete. Questa distanza

  media è stata fissata a dieci minuti e, poiché ciò sia possibile, la

  difficoltà deve essere impostata in modo corretto, assicurandosi che il

  minatore con la sua potenza di calcolo necessiterà di circa 10 minuti

  a livello globale per trovare un blocco. Quindi, se ipoteticamente

  abbiamo 100 minatori ognuno dei quali in grado di provare mille hash

  al secondo, significa che per avere un tempo medio di blocco di 10

  minuti, il numero atteso di tentativi necessari per trovare un blocco

  dovrebbe essere 60 milioni, ovvero 600 secondi 100 volte minatore

  1000 hash al secondo. Tuttavia, se il numero di minatori cresce a

  10000, il tempo medio di blocco scenderebbe a soli sei secondi, il

  che non è sufficiente a garantire unadeguata propagazione della rete

  e sarebbe un grosso problema

  IT_M5L1c_Chainside_Contenuto_13

  La potenza di calcolo globale dedicata al bitcoin mining è anche

  definita come hashrate e misurata in hash che tutti i minatori sono in

  grado di provare ogni secondo. Questa misura è prevista in crescita,

  e in effetti è aumentata per la maggior parte della storia dei bitcoin

  come nuovi minatori è entrato nel business e sono stati sviluppati

  nuovi hardware più efficienti e, in assenza di contromisure, il tempo di

  blocco potrebbe presto diventare estremamente breve

  IT_M5L1c_Chainside_Contenuto_14

  La contromisura è un meccanismo chiamato adattamento della

  difficoltà. Fondamentalmente, ogni anno del 2016, la rete cambia il

  parametro di difficoltà nel campo nbits del blockheader, chiedendo ai

  minatori una diversa prova dei requisiti del lavoro. Il modo in cui

  funziona, è che ogni nodo della rete bitcoin, alla fine del periodo dei

  blocchi del 2016, guarda il timestamp del primo blocco nel periodo e

  al timestamp dellultimo. La differenza attesa con un tempo di blocco

  medio di 10 minuti è di 14 giorni, se tale differenza è più breve o più

  lunga, la difficoltà deve essere modificata di conseguenza.

  IT_M5L1c_Chainside_Contenuto_15

  In questo grafico possiamo vedere come la difficoltà cambia nel

  tempo. Possiamo notare due cose: in primo luogo ci sono forti punti

  di discontinuità, questo è causato dal fatto che la difficoltà cambia

  solo una volta ogni due settimane, il resto del tempo rimane costante,

  quindi possiamo vedere che la tendenza generale è per il difficoltà a

  crescere, e questo accade perché laumento del prezzo del bitcoin

  attira nuovi giocatori per entrare nel business minerario, e gli

  sviluppatori di hardware per produrre minatori più efficienti, quindi più

  hashrates colpiscono la rete bitcoin, e la difficoltà deve

  costantemente aumentare per mantenere la media tempo di blocco a

  10 minuti. Possiamo anche notare che quando la difficoltà aumenta, il

  periodo di regolazione è leggermente più breve, mentre quando

  scende è leggermente più alto. Questo perché quando lhashrate

  cresce, ci vogliono meno di 14 giorni per estrarre i blocchi del 2016,

  mentre quando scende ci vuole di più, dato che la difficoltà è ancora

  alta ma ci sono meno hash al secondo sulla rete.

  IT_M5L1c_Chainside_Contenuto_16

  Abbiamo detto che il tempo di blocco è in media 10 minuti, ma questo

  non significa che sia sempre esattamente 10 minuti. Lestrazione

  mineraria è un processo probabilistico, un minatore potrebbe essere

  fortunato e trovare un blocco valido dopo solo un minuto, o tutti

  potrebbero essere sfortunati e non trovare un blocco per 40 minuti. Il

  tempo di blocco segue una distribuzione di poisson, con la maggior

  parte dei blocchi che si trovano entro 600 secondi da quella

  precedente, e casi più insoliti quando occorrono più di 30 minuti.

  IT_M5L1c_Chainside_Contenuto_17

  Ora, basandoci su ciò che abbiamo appena appreso, proviamo a

  rispondere a questa domanda: supponendo un tempo medio di

  blocco di 10 minuti, se lultimo blocco è stato trovato 5 minuti fa,

  quando prevedi di trovare il prossimo blocco? Prenditi del tempo per

  pensarci

  IT_M5L1c_Chainside_Contenuto_18

  Un altro importante concetto di estrazione mineraria è il cosiddetto

  mining egoistico. Legoistico mining è un cattivo comportamento che

  può essere visto come un attacco allintegrità della rete, e funziona

  come segue. Un minatore trova un blocco valido, ma non lo pubblica

  e lo distribuisce al resto della rete e lo conserva da solo. Quindi il

  minatore inizia a lavorare sul blocco successivo prima di chiunque

  altro, che se qualcun altro trova anche il vecchio blocco e inizia a

  pubblicare, i minatori egoisti trasmettono anche il suo blocco alla rete

  assicurandosi che si propaghi più velocemente. Facendo questo, il

  minatore egoista ha guadagnato un po di tempo in più per estrarre il

  blocco successivo rispetto agli altri minatori, ottenendo un vantaggio

  competitivo. Questo vantaggio competitivo si realizza quando i

  minatori egoisti trovano due blocchi prima che il resto della rete ne

  trovi uno, il che è più probabile che accada per i grandi minatori.

  Quindi, il problema con i minatori egoisti è che dà più vantaggio ai

  grandi minatori che a quello piccolo, creando quindi una creatività per

  la centralizzazione del settore minerario, il che è male perché la

  sicurezza della blockchain deriva in gran parte dal fatto che lattività

  mineraria è decentralizzata e il minatore non colludono. Mentre il

  mining egoistico era abbastanza popolare nei primi anni di bitcoin,

  non è più una pratica molto utilizzata poiché la latenza della rete è

  molto più bassa, che è qualcosa di necessario per sfruttare questo

  trucco

  IT_M5L1c_Chainside_Contenuto_19

  Proviamo ora a rispondere ad unaltra domanda, questa volta relativa

  allestrazione egoistica. Supponiamo che un minatore egoista che ha

  un terzo dellintera rete di hashrate stia operando insieme a minatori

  onesti. A meno di dieci minuti uno dei minatori onesti trova una

  soluzione allaltezza del blocco n meno uno. Il minatore egoista, a t

  zero, trova il blocco del nido e lo tiene nascosto. Qual è il tempo

  previsto in cui un minatore onesto troverà un blocco in competizione

  in altezza n?

  IT_M5L1c_Chainside_Contenuto_20

  Uno dei problemi a cui naturalmente fa parte un minatore è lelevata

  varianza delle entrate. Quindi, se ad esempio un minatore ha un

  millesimo del tasso di hash globale, si prevede di trovare un blocco

  ogni circa 7 giorni in media. Il problema è che si tratta di un dato

  medio, se è sfortunato potrebbe facilmente rimanere poche settimane

  senza trovare alcun blocco, il che significa che non ci sono introiti

  mentre le spese energetiche sono costanti, il che può causare

  problemi di flusso di cassa. Una soluzione a questo è lidea dei pool

  minerari, in cui essenzialmente molti minatori possono collaborare

  per trovare il blocco nest e quindi condividere il premio dalla

  transazione di emissione. Quindi se 100 minatori in un pool riescono

  a estrarre con successo un blocco con una transazione di emissione

  di 50 bitcoin, riceveranno mezzo bitcoin ciascuno, ma come

  funziona? Bene, prima di tutto la piscina ha bisogno di avere un

  operatore di piscina, che sarà quello incaricato di raccogliere la

  ricompensa e dividerla tra i membri del pool. Quindi ogni partecipante

  al pool deve bloccare i blocchi con una transazione di emissione, che

  a volte è anche chiamata coinbase, che invia bitcoin allindirizzo del

  gestore del pool. Ma come fa loperatore della piscina a sapere

  quanto dare a ciascun membro?

  IT_M5L1c_Chainside_Contenuto_21

  A scopo di test, esistono due reti bitcoin alternative, che hanno regole

  di mining leggermente diverse e in cui le monete non hanno

  assolutamente valore. Per prima cosa abbiamo la rete di testnet

  bitcoin, cioè una blockchain con regole quasi identiche alla

  blockchain di Bitcoin. Si differenzia solo per come viene regolata la

  difficoltà e occasionalmente alcuni aggiornamenti alla rete Bitcoin

  sono implementati in testnet in anticipo. Lobiettivo del testnet è di

  mantenere bassa la difficoltà di estrazione, in modo che tutti possano

  provare a estrarre le monete del testnet, quindi è stata implementata

  una regola che se non viene trovato alcun blocco per 20 minuti, la

  difficoltà scende a uno. Inoltre anche la codifica degli indirizzi

  differisce, più su quella successiva.

  Poi abbiamo il regtest, che è semplicemente una versione privata di

  Bitcoin da eseguire localmente con la difficoltà di mining sempre

  impostata su uno, quindi in pratica puoi estrarre tutte le monete che

  desideri

  IT_M5L1c_Chainside_Contenuto_22

  Fermati un momento e prova a rispondere a questa semplice

  domanda.

  IT_M5L1c_Chainside_Contenuto_23

  La lezione è terminata, grazie.

-->