Guida Bitcoin Unlimited - SegWit | Cosa sono gli hard e soft fork

Stato
Discussione chiusa ad ulteriori risposte.

Valley

Super Moderatore
10 Aprile 2011
9,088
422
4,264
3,033
bitcoin-1813503_1920-1068x713.jpg

Bitcoin Unlimited Vs SegWit
Bitcoin Unlimited è davvero un buon progetto?



Cosa intendiamo con hard e soft fork?
Per capire bene quello che sta accadendo bisogna avere ben chiaro di che cosa stiamo parlando. Il Bitcoin è una moneta elettronica creata nel 2009 e il suo client ufficiale è il Bitcoin Core, un software open source che deriva direttamente dal codice scritto da Satoshi Nakamoto.

Il Bitcoin Core nel corso degli anni ha avuto diversi soft fork ed alcuni hard fork. Ma cosa sono questi fork di cui tanto si parla in questi giorni?

I soft fork sono degli aggiornamenti al protocollo bitcoin che provocano una temporanea divergenza nella blockchain; fino a quanto i vecchi nodi non riconoscono i nuovi blocchi l’aggiornamento è reversibile. Proprio per questa caratteristica i soft work sono limitati nelle modifiche che possono apportare.

Gli hard fork invece sono una sostituzione del protocollo bitcoin che provocano una permanente divergenza nella blockchain. I vecchi nodi non riconosceranno mai i nuovi blocchi generati dai nodi aggiornati ed è per questo una manovra irreversibile.

Nella storia il Bitcoin ha subito numerosi soft fork ed alcuni hard fork. Bitcoin XT (nel 24/12/2014), Bitcoin Classic (nel 10/02/2016) sono tra i più famosi hard fork che ci sono stati. Entrambi sono ancora presenti ma rappresentano una fetta davvero piccola della torta: in termini di nodi messi insieme non superano il 2.5% del totale.



Cos’è Bitcoin Unlimited?
Il Bitcoin Unlimited (BTU) è un nuovo protocollo bitcoin (sviluppato da un nuovo team e non da quello di Bitcoin Core) introdotto nel 04/09/2015 che negli ultimi mesi ha iniziato la corsa per prendere il posto dell’attuale Bitcoin attraverso un hard fork.

bitcoin-unlimited-300x61.png

Le proposte del team di Bitcoin Unlimited sono:
  1. Aggiungere l’opzione “Bitcoin Unlimited” nel menu e di una finestra per accedere alle caratteristiche specifiche di BTU.
  2. Aggiungere l’opzione per modificare la dimensione massima di un blocco generato. Questo permette ai minatori di BTU di generare blocchi di dimensioni maggiori. Il valore di default sarà 1000000 Byte (1Mb) compatibile con i nodi di Bitcoin Core (esso accetta infatti solo blocchi di tale dimensione).
  3. Aggiungere l’opzione per modificare la dimensione massima dei blocchi accettata. Blocchi di dimensioni più grandi saranno accettati solo a N profondità nella blockchain. Questa sarà di default a 16000000 Byte (16 Mb). La dimensione massima applicabile è limitata a 10 volte questa dimensione, così da avere un effettivo limite. Questa limitazione non sarà rimossa del tutto per impedire l’invio di finti blocchi a dimensione infinita.
  4. Aggiungere l’opzione per modificare la profondità accettata dei blocchi con dimensioni che superano quelle accettate. Questo è il parametro N del punto 3. Di default sarà 4.
  5. Aggiungere l’opzione “Traffic Shaping”. Visto il crescere della dimensione dei blocchi, gli utenti potranno impostare la banda da utilizzare per Bitcoin. Questo permette al client di lavorare anche con una rete domestica.
  6. Correggere il bug delle notifiche. Se si ricevono tante notifiche alcune non verranno mostrate. Questo per impedire quando si ricevono tantissime transazioni 1000+ di ricevere notifiche anche mezzora dopo l’evento.
  7. Cambiare l’identificatore del client in BitcoinUnlimited.
  8. Cambiare la versione del blocco a 0x40000007.
  9. Modifiche minime al brand.



Cos’è SegWit?
Segregated Witness
(SegWit) è un’ottimizzazione del protocollo di Bitcoin Core che va ad ottimizzare le transazioni:
  1. Abbattendo i costi.
  2. Rendendole più veloci.
  3. Aumentando l’affidabilità del protocollo.
Come è possibile tutto questo? Come dice il nome si andrà a separare (Segregated) lafirma (Witness in terminologia crittografica) delle transazioni dal resto dei dati. Questo permette un guadagno in termini di spazio pari a 3 Mb permettendo la riduzione di dimensione media delle transazioni. Così facendo più transazioni possono stare all’interno di un blocco.

logo-1-300x76.png

Si dirà addio anche al problema della malleability: ad oggi infatti una transazione bitcoin non ha un codice univoco ed inalterabile fino a quando non viene inserita in un blocco. C’è quindi il rischio di ricevere finte transazioni. Questo problema al momento è risolto da molti wallet (non tutti..) impedendo di spendere i bitcoin presenti nella transazione finché questa non sia stata inserita in un blocco. Con SegWit ogni transazione avrà un txid (transaction identity) immutabile fin dalla sua creazione.



La situazione attuale
In questi ultimi giorni il prezzo dei bitcoin si è messo a ballare parecchio con rapidi (e paurosi) crolli e salite. La community del Bitcoin si è agitata molto ed il discordo Bitcoin Unlimited è diventato protagonista. Anche se è ormai qualche anno che il BTU è comparso c’è molta confusione a riguardo. La prima questione è:

CHI C’È DIETRO IL BITCOIN UNLIMITED?
Roger e Jihan sono due “business man” che hanno preso posizione a favore del Bitcoin Unlimited. Con i loro numerosi fondi stanno finanziando il BTU e facendo guerra al Bitcoin Core; pare Roger abbia comprato più di 300.000$ in Bitcoin Unlimited (qui un articolo riguardo un suo acquisto di 130.000$ in BTU).

Una gran parte della community ritiene che queste due persone vogliano fare soltanto i loro interessi, sfruttando l’hard fork punterebbero ad un aumento del prezzo per poi vendere creando così un dump mettendo in crisi la moneta stessa.

Su reddit un utente scrive (ricevendo molta approvazione dalla community) rivolgendosi a Brian Armstrong e Erik Voorhees, altri due “business man” nel settore del Bitcoin i quali hanno dichiarato che riterranno il Bitcoin Unlimited pari al Bitcoin se raggiungerà la maggioranza dell’hash dai minatori (fonti):

..si sta dando più voce all’hash dei pochi miner che alla maggioranza economica la quale è fortemente sfavorevole al Bitcoin Unlimited..

..quello che state facendo ci sta mantenendo in questa situazione di stallo. Il 90% dell’economia ha già dichiarato la sua posizione e voi due lasciando la questione aperta indicate che il potere dell’hash ha l’ultima parola ignorando i controlli che gli utenti e l’economia hanno fatto per ogni scenario della scissione. È un peccato perché state sostenendo un movimento che:

  • Si basa molto sulla propaganda anti-Core (contro il Bitcoin Core).
  • Si basa fortemente sulla censura di reddit che fa al caso vostro (ricordo che l’utente scrive questo messaggio proprio su reddit).
  • È chiaramente centralizzato (Jihan Wu / Roger Ver contro la comunità).
  • Ha dimostrato di essere inaffidabile. (riferito ai diversi bug che si sono riscontrati in questi giorni, più info qui).
  • Si basa su tecniche di ingegneria sociale: Roger Ver paga per i bot anti-core (girano voci che Roger stia pagando dei bot per “spammare” la sua propaganda anti Bitcoin Core).
  • Non ha il supporto delle imprese / utenti / sviluppatori come si può chiaramente vedere su Twitter (un esempio).
  • Supportato da Bitmain per fermare segwit (sempre voci dicono che Roger abbia “comprato” Jihan, co-fondatore di Bitmain, per appogiare BTU).
  • Incentivi che favoriscono pesantemente i minatori rispetto la comunità globale (Roger sta incentivando i miner ad iniziare a minare Bitcoin Unlimited premiandoli con il 110% (più info).



I dati confermano
La voce che si sparge nella comunità pare trovare riscontro anche nei dati. La maggioranza dell’economia (e della community) si è schierata a favore del Bitcoin Core e del loro Soft Fork SegWit; come si vede dai grafici (link a Coin Dance) la situazione attuale mostra 794 nodi che si sono dichiarati a favore del Bitcoin Unlimited contro i 5710 nodi a favore di Bitcoin Core. Si dice inoltre che la maggior parte dei nodi a favore del BTU siano di Jihan.

Schermata-2017-03-23-alle-23.04.48.png

coin-dance-allnodes.jpg
coin-dance-nodes.jpg






Non ci è dato sapere come finirà la questione, sicuramente nei prossimi mesi si saranno novità ed aggiornamenti sia per quanto riguarda Bitcoin Unlimited che per Bitcoin Core.

CLOSED SOURCE NON È MAI UNA BUONA IDEA
Un altro aspetto recente e molto negativo è stato il rilascio della nuova versione del client di Bitcoin Unlimited tramite una repository di sviluppo privata che non permette a nessuno di controllare la legittimità dell’aggiornamento (fonti). Il bitcoin infatti è stato progettato come un protocollo open source ed è proprio grazie a questo che Bitcoin Unlimited esiste (un bel paradosso).

Una cosa è sicura però, come dice Dave Carlson CEO di Giga Watt (fonti):

Un hard fork sarebbe terribile per il valore del bitcoin. Un fork diluirebbe il brand, confonderebbe i nuovi arrivati e dimostrerebbe quanto è pericolosa la centralizzazione. Il potere che stiamo vedendo in queste recenti azioni mostra chi tiene le carte in mano. Abbiamo bisogno di un “disperato” (e veloce) riequilibrio della potenza del mining; per troppo tempo gli investitori non hanno prestato attenzione a questa parte dell’ecosistema, lasciando la porta spalancata e permettendo a qualcun altro di prendere il controllo.


Articolo scritto da Valley
vai all'articolo originale
 
Ottimo valley,hai spiegato benissimo la situazione attuale. Mi permetto di riportare qui in questa discussione una spiegazione più semplicistica di cosa sta accadendo, spiegazione fatta con esempi che possano far capire i concetti anche a coloro che nel mondo del Bitcoin ci sono appena entrati e sono ancora "lontani" dal capire bene le varie dinamiche.

Tante persone stanno chiedendo cos'è SegWit? Cos'è l'hard fork? Perché tutta questa agitazione?
Allora per rispondere un po' a tutti provo a fare il punto della situazione di cosa sta succedendo.

Il problema:

quando io mando un bitcoin a un'altra persona, faccio una transazione. Tale transazione va a finire in una sala d'attesa chiamata mempool dove rimane lì fino al momento in cui non viene presa e inserita in un blocco. I blocchi sono creati da persone che chiamiamo miners i quali, attraverso un complicato sistema matematico, producono lo spazio necessario a inglobare le transazioni in attesa in un blocco che poi attaccano ad una catena di blocchi. Questa catena è la famosa blockchain dove ci sono scritte dentro tutte le operazioni fatte su bitcoin dall'inizio dei tempi ad oggi.
Il problema è che oggi lo spazio disponibile dentro ogni blocco è finito e limitato a 1 MB. Quante transazioni ci stanno quindi in un blocco? Ogni transazione occupa qualche centinaio di kB e quindi in un blocco ci stanno circa 1800 transazioni.
E se nella sala d'attesa (mempool) ce ne sono più di 1800, che succede? La stessa cosa che succede nella sala d'attesa di un medico troppo pieno, ti dice di tornare il giorno dopo. I miner ti dicono di aspettare il prossimo blocco che sarà fra 10 minuti, ma se proprio hai fretta puoi pagarli un po' di più e ti danno la precedenza.
Quindi il limite di 1MB della dimensione dei blocchi unito alle moltissime (centinaia di migliaia) di transazioni in attesa stanno creando una rete lenta (si devono aspettare diversi blocchi per avere la transazione inserita nella blockchain) e costosa (si pagano tariffe sempre più alte ai miners se si vuole avere la precedenza).

La soluzione dell'hard fork:

la soluzione più semplice che viene in mente è ovviamente aumentiamo lo spazio. Anziché usare 1 MB possiamo usarne 2 o 10 o 100, perché no? Questa soluzione ha l'evidente vantaggio di essere semplice teoricamente ma crea 2 problemi da considerare.
Il primo problema riguarda l'accordo fra le persone. Ammettiamo che per qualche motivo non tutti i miner decidano di creare blocchi più grandi. Alcuni decidono di raddoppiare lo spazio e andare a 2 Mega a blocco mentre altri decidono di stare ad 1 Mega. Si può avere una situazione simile? No. Bitcoin è un sistema dove le regole di funzionamento devono essere condivise da tutta la rete, per evitare che qualcuno possa farsi le proprie regole e creare casino. Quindi se un miner fa i blocchi da 1 mega e l'altro da 2 mega non potranno attaccare questi blocchi alla stessa catena perché stanno seguendo regole diverse riguardo alla dimensione dei blocchi. Di fatto quello che succede in un caso simile è che la catena, che oggi è unica e composta da soli blocchi da 1 mega, si biforcherà in due catene. Una che prosegue con i blocchi da 1 mega e l'altra con i blocchi da 2 mega. Ed i nostri bitcoin dove stanno?
Tutti i bitcoin creati prima della biforcazione sono nella catena che era unica, e quindi sono tutti lì e fanno parte della storia di entrambe le catene nuove, quindi di fatto sarebbero duplicati e spendibili su entrambe le catene. In pratica ci sarebbero due "Bitcoin" con due regole diverse di funzionamento e questo potrebbe creare confusione nel mercato perché alla fin fine quel dei due Bitcoin deve adottare il negoziante che vuole vendere la pizza e farsi pagare in Bitcoin?
Questa biforcazione della rete si chiama hard fork. Il modo per evitare questo casino è di cambiare le regole tutti insieme. Se tutti i miners creassero blocchi con le nuove regole la catena rimarrebbe unica (qui sto dicendo un'inesattezza ma non voglio approfondire per ora per non appesantire il già pesante discorso). Quindi ci vuole un largo consenso per fare un hard fork, sennò si rischia di fare un bel casino.
Il secondo problema dell'aumento del blocco è: di quanto lo aumentiamo? Per avere un'idea possiamo dire che il nostro sogno è di avere un Bitcoin che soppianti la VISA. La VISA oggi può sopportare 24mila transazioni al secodno, Bitcoin ne può fare 3. Quindi per poter avere le stesse transazioni si dovrebbe aumentare la capienza di 8mila volte, ovvero avere dei blocchi da 8 GB. Non subito naturalmente, oggi non abbiamo tutte quelle transazioni in attesa, ma nel tempo si dovrebbe fare il conto con quei numeri.
Generare un blocco da 8Giga ogni 10 minuti significa consumare 1 TB al giorno e tanti dicono che questo limiterebbe la possibilità di una persona normale di tenere una copia della blockchain in casa propria, affidando tutto il sistema a poche grosse aziende dotate di tanto spazio, di fatto centralizzando la rete.

La soluzione di SegWit:

un altro gruppo di persone dice: non c'è bisogno immediato di aumentare la dimensione del blocco, con anche il rischio di creare due bitcoin con l'hard fork, possiamo invece usare lo spazio disponibile nel 1MB in modo più efficiente.
Tutta una parte delle transazioni (che chiamiamo witness) non ha motivo di stare dentro al blocco da 1 MB, possiamo spostarla fuori in un'area a parte (segregata) e in questo modo potremmo stipare più transazioni nello stesso blocco. È un po' come se le mamme vanno dal medico col bambino ed il medico dice "per favore i genitori aspettino fuori che non c'è abbastanza spazio" per cui si possono far stare più bambini nello stesso spazio. Siccome si vuole spostare fuori dal blocco (segregare) la parte di transazione chiamata witness si parla di Segregated Witness o in breve SegWit.
In questo modo si evita il problema della separazione della catena creato da hard fork poiché la dimensione dei blocchi non cambierebbe, sarebbe solo usata in modo diverso liberando spazio. Quanto spazio? Dovrebbe circa raddoppiare, quindi anziché 1800 transazioni ce ne dovrebbero stare 3600. In pratica sarebbe come avere dei blocchi da 2 mega. Questo spazio forse basterà per un po' ma non per sempre, come abbiamo visto ci vorrebbero 8 giga, non 2 mega per far fronte al futuro (radioso) di Bitcoin. E quindi che propongono questi altri? Questo gruppo propone non solo di fare il SegWit, ma in un futuro prossimo di attivare una seconda rete di scambio (chiamata Lightening Network) che si appoggia a Bitcoin ma che serve per alleggerire la blockchain.
Come funziona questa rete? Immaginiamo che io ogni giorno vada al supermercato a fare la spesa e voglia pagare in Bitcoin. In teoria ogni giorno dovrei fare una transazione fra me e il supermercato e registrarla in un blocco della blockchain. Tuttavia io potrei anche decidere, siccome vado sempre lì, di accordarmi con il supermercato e dire: senti, ma perché dobbiamo fare una transazione ogni giorno? Facciamo una bella cosa, tu segni quanto io ti devo pagare e alla fine del mese facciamo una sola transazione unica. In questo modo registriamo una transazione anziché 30 e paghiamo il costo di inserire la transazione in un blocco solo una volta a fine mese, e non 30 volte. La rete che si occupa di "segnare" è la Lightening Network.
La critica alla soluzione di SegWit e Lightening Network è che comunque lo spazio liberato nei blocchi non è tanto (si va da 1 a 2 mega) e che per non pagare costi alti si tenderà a spostare tutto su Lightening Network la quale dovrà crescere a dismisura e diventerà probabilmente gestibile solo da poche aziende che creeranno degli hub di scambio fra commercianti e utenti e che registreranno solo ogni tanto le transazioni su Bitcoin a dei costi elevati. Di fatto centralizzando tutta la rete.

Il dibattito:

le due fazioni non si mettono d'accordo su una delle due soluzioni e nell'ultimo anno la situazione si è aggravata per via del grosso interesse da parte del mondo verso Bitcoin (e le crypto in generale).
Allora i due gruppi hanno provato a fronteggiarsi in tutti i modi, cercando di forzare la mano per una delle due soluzioni. Non è mancata la diffamazione, le offese continue, le critiche e il dibattito in un ambiente che si va via via avvelenando sempre più. I miners favorevoli all'hard fork cercano di collezionare consenso per andare per la loro strada e aumentare la dimensione dei blocchi. Gli sviluppatori, favorevoli a SegWit stanno cercando un modo di forzarne l'attivazione senza il consenso dei miners (con quello che chiamano User Activated Soft Fork o UASF, in pratica un meccanismo per attivare SegWit "dal basso" cioè dagli utenti obbligando i contrari ad adeguarsi, non vado nel dettaglio perché non è utile alla comprensione).

Il recente accordo:

a quanto pare siamo vicini ad una possibile svolta. I miners da sempre oppositori di SegWit e favorevoli all'hard fork stanno proponendo di fare entrambe le cose: attivare SegWit e allo stesso tempo aumentare la dimensione dei blocchi. Questo potrebbe portare ad una svolta in quanto molte delle parti in gioco in questo dibattito (miners, exchanges, eccetera) ritengono questa soluzione il miglior compromesso fra le due visioni proposte.
Bisogna dire che questa proposta è molto recente, quindi si deve capire come realizzarla e c'è da aggiungere che gli sviluppatori non sono favorevoli ad essa e quindi probabilmente non aiuteranno a realizzarla e potrebbe non essere facile trovare altri sviluppatori altrettanto competenti per portarla a termine.

Sì, ok, ma se volessi investire di che tempi parliamo?

Gli eventi stanno accelerando quindi secondo me una svolta concreta si dovrebbe avere a breve. Nel recente accordo si parla di attivare SegWit quanto prima e di fare un successivo fork per aumentare la dimensione dei blocchi fra sei mesi.
Sono tempi stretti, ma con molto impegno forse si può fare.
D'altra parte gli sviluppatori stanno premendo per attivare forzosamente SegWit (usando UASF) il primo di Agosto.
In pratica secondo me ci sarà un'estate rovente per Bitcoin.


Spero di essere stato utile.
 
Stato
Discussione chiusa ad ulteriori risposte.