Che cos'è il Segregated Witness (SegWit)?

A cura di Kraken Learn team
11 min
26 novembre 2024

La guida per principianti a Bitcoin SegWit 💭

Segregated Witness (SegWit) è stato un aggiornamento apportato al codice sorgente di Bitcoin il 1° agosto 2017.

Nonostante abbia apportato quelli che molti consideravano miglioramenti alla blockchain di Bitcoin, SegWit ha incontrato una forte opposizione che ha diviso la comunità. 

Al centro della questione c'era un interesse contrastante tra la redditività dei miner e gli sviluppatori di rete che cercavano di rendere Bitcoin più economico e veloce da usare.

La tensione ha causato una spaccatura all'interno della comunità, culminata nel primo soft fork attivato dagli utenti della rete e in una divisione ostile. La divisione ha dato vita a una serie di nuovi progetti Bitcoin-forked, incluso Bitcoin Cash.

Ad oggi, SegWit rimane uno degli eventi più controversi nella storia di Bitcoin. Ma si è anche dimostrato uno degli aggiornamenti più importanti per la sostenibilità a lungo termine del protocollo. 

Ogni anno, molti nella comunità Bitcoin celebrano il 1° agosto come il “giorno dell'indipendenza di Bitcoin”. Questo evento segna l'occasione in cui la volontà del popolo ha trionfato contro gli interessi centralizzati delle consolidate società di mining di Bitcoin.

Esploriamo ciascuno di questi eventi così come si sono verificati e analizziamo la storia dietro SegWit.

BTC icon
$79.077.00
-1,02%
24 ore
btc

Bitcoin prima di SegWit ⏮️

Prima dell'attivazione di SegWit, la capacità dei blocchi di Bitcoin era rimasta invariata per molti anni. La capacità dei blocchi si riferisce al numero massimo di transazioni che possono essere registrate all'interno di un dato blocco.

Quando Bitcoin è stato lanciato nel 2009, il suo creatore (o i suoi creatori) Satoshi Nakamoto non ha impostato alcun parametro su quanto grandi potessero essere i blocchi di Bitcoin.

Tuttavia, nel 2010, Nakamoto ha aggiunto segretamente un limite di dimensione del blocco di 1 megabyte (MB) senza l'approvazione di altri contributori di Bitcoin.

Molti credevano che Nakamoto avesse incluso il limite per prevenire futuri attacchi di denial of service distribuiti (DDoS) che avrebbero potuto influenzare la rete.

Questo limite fisso alla capacità dei blocchi ha avuto l'effetto indesiderato di limitare il potenziale di Bitcoin di scalare in diversi modi.

Bassa produttività e tempi di transazione lenti

Solo un numero limitato di transazioni può rientrare nel blocco relativamente piccolo di 1 MB che Bitcoin ha ora adottato. Questa piccola capacità significava che la rete Bitcoin poteva elaborare solo circa 2-3 transazioni Bitcoin (BTC) al secondo, ben lontano dalle tradizionali reti di pagamento digitali che possono elaborare decine di migliaia di transazioni al secondo.

Inoltre, affinché un blocco di transazioni sia considerato valido come parte del processo di mining di Bitcoin, deve ricevere sei conferme. In altre parole, sei nuovi blocchi devono essere aggiunti alla blockchain dopo il blocco in questione prima che sia finalizzato. Con un tempo medio di blocco di dieci minuti, ciò significa che le conferme dei blocchi Bitcoin richiedono circa un'ora.

All'epoca, quando solo una manciata di crittografi “Cypherpunk” era a conoscenza di Bitcoin, non era necessariamente un problema enorme. Ma, se la rete Bitcoin doveva diventare un “sistema di cassa elettronico peer-to-peer” globale come Satoshi aveva immaginato nel white paper di Bitcoin, le cose dovevano cambiare.

Commissioni elevate

La bassa produttività di Bitcoin, limitata dalla sua piccola capacità di blocco, significava che anche le commissioni erano comparativamente molto più alte di quanto lo siano oggi.

Ecco un modo semplice per capire questo problema. Immagina di essere in mezzo a una folla di persone dopo aver assistito a uno spettacolo teatrale. Tutti dal teatro vogliono prendere un taxi per tornare a casa contemporaneamente. Se ci sono molti taxi in giro, dovrebbe essere facile per tutti tornare a casa. Ma, se ci sono solo una manciata di taxi, le persone potrebbero provare a pagare un prezzo più alto ai tassisti per incentivarli a portarli a casa per primi. A seconda della domanda, i prezzi dei taxi potrebbero salire significativamente più in alto del tasso normale.

Le commissioni di Bitcoin funzionano secondo gli stessi principi di domanda e offerta. Se molte persone vogliono che le loro transazioni vengano elaborate contemporaneamente, alcune potrebbero optare per pagare commissioni più alte per far elaborare la loro transazione prima dai miner. Durante i periodi di elevato utilizzo sulla rete Bitcoin, la congestione può comportare una competizione tra gli utenti, il che può causare un forte aumento delle commissioni di transazione.

Malleabilità delle transazioni

Un'altra sfumatura intrinseca del funzionamento dei blocchi Bitcoin era nota come malleabilità delle transazioni. Prima di SegWit, le persone potevano modificare l'ID di una transazione prima che ricevesse abbastanza conferme sulla blockchain.

Prendendo le informazioni relative a una transazione specifica e passandole attraverso una funzione hash si crea un ID di transazione. Puoi saperne di più sulle funzioni hash nel nostro articolo Come le criptovalute usano la crittografia?

Ma per semplicità, puoi pensare a questi ID di transazione come impronte digitali che vengono utilizzate per identificare e fare riferimento alle transazioni sulla blockchain.

La modifica dell'ID di transazione crea un hash completamente nuovo che a volte potrebbe confondere il software client della blockchain. Tutti i nodi eseguono software client per interagire con la blockchain e svolgere ruoli importanti come la verifica dei dati.

Questo bug di malleabilità nel codice di Bitcoin ha aperto la porta ad attacchi dannosi. Uno degli esempi più famosi di attacco di malleabilità delle transazioni è stato l'hack dell'exchange Mt. Gox del 2014, rinomato per essere il più grande hack di Bitcoin nella storia.

Gli esperti hanno riferito che un hacker, o un gruppo di hacker, ha svuotato il wallet Bitcoin dell'exchange Mt. Gox. Lo hanno fatto in parte alterando l'ID di transazione dei loro prelievi. 

L'attacco di malleabilità delle transazioni ha fatto sembrare che i prelievi non fossero confermati sulla blockchain, quando in realtà lo erano.

Questa vulnerabilità, unita ad altri vettori di attacco, ha permesso all'hacker (o agli hacker) di sottrarre oltre 840.000 BTC dall'exchange.

Quali miglioramenti ha apportato SegWit? ⚙️

Il contributore di Bitcoin Pieter Wuille ha presentato per la prima volta l'aggiornamento SegWit a un evento Bitcoin di Hong Kong nel 2015.

La sua soluzione era innovativa su tre fronti. SegWit ha migliorato la scalabilità di Bitcoin, ha rimosso la malleabilità e ha permesso ai nodi di adottare la nuova struttura delle transazioni. La cosa migliore è che questo poteva essere implementato senza un hard fork della rete.

Separazione della firma digitale e delle informazioni sulla transazione

La proposta di Wuille ha aumentato la capacità dei blocchi Bitcoin “segregando” i dati di “witness” da un blocco e spostandoli nella transazione coinbase. Le transazioni coinbase sono le primissime transazioni all'interno di ogni nuovo blocco Bitcoin. La transazione coinbase è responsabile dell'emissione di criptovaluta appena coniata in circolazione come ricompensa per il processo di mining di Bitcoin.

I miner che riescono a vincere la competizione proof-of-work basata sulla crittografia di Bitcoin guadagnano questi token appena coniati come “ricompense di blocco”.

I dati di witness, noti anche come ScriptSig o Unlocking Script, includono la firma digitale e le informazioni sulla chiave pubblica necessarie per sbloccare i Bitcoin trasferiti. L'aggiornamento SegWit ha introdotto un “campo witness” separato per la parte ScriptSig di una transazione.

Elaborando le informazioni sulla firma digitale separatamente dal campo di input della transazione, c'era più spazio per le transazioni da inserire in ogni blocco.

Più transazioni per blocco equivalgono a maggiori capacità di throughput delle transazioni. Quindi, invece di 2-3 transazioni al secondo, Bitcoin può elaborare tra 7 e 10 transazioni SegWit al secondo. L'aumento della capacità significa anche commissioni più basse, poiché la blockchain di Bitcoin può gestire un volume maggiore di transazioni.

Nonostante la separazione, è importante notare che i nodi elaborano ancora sia i dati della transazione che i dati di witness on-chain. Non vengono utilizzati sidechain o protocolli Layer 2.

Peso del blocco

Prima di SegWit, i miner misuravano i blocchi Bitcoin in base alle dimensioni (in byte). Questo sistema funzionava bene quando i blocchi contenevano sia i dati di witness che i dati di transazione, ma incontrava problemi quando venivano separati.

Per superare questo problema, l'aggiornamento ha introdotto una metrica chiamata peso del blocco per gestire la dimensione dei blocchi.

Con questo concetto, ogni blocco da 1 megabyte è costituito da 4.000.000 di unità di peso (WU). A ogni transazione viene assegnato un peso basato sulla seguente formula:

Dimensione base della transazione in byte (senza dati di witness) * 3 + Dimensione totale della transazione in byte.

Rimuovendo i dati del campo witness dal calcolo, le transazioni SegWit hanno un peso molto inferiore. D'altra parte, una transazione non-SegWit contiene ancora dati di witness. Ciò significa che le transazioni non-SegWit pesano sempre 4 volte di più delle transazioni SegWit.

Questo concetto aumenta teoricamente la dimensione di un blocco Bitcoin da 1 MB a 4 MB, se un blocco è costituito quasi interamente da dati di witness. Tuttavia, questo non è possibile in pratica.

Il vantaggio principale del sistema ponderato è che incentiva i miner a elaborare blocchi contenenti principalmente transazioni SegWit. Supponendo che le transazioni SegWit comportino le stesse commissioni dei blocchi legacy, un miner può elaborare molte più transazioni SegWit per blocco. Più transazioni elaborano per blocco, più commissioni guadagnano.

Un vantaggio per entrambe le parti. O almeno così si penserebbe.

Niente più problemi di malleabilità delle transazioni

Nella struttura SegWit, l'ID di transazione hashato contiene solo le informazioni sulla transazione, non le informazioni sul campo witness.

Questa modifica rimuove il componente modificabile di una transazione Bitcoin che in precedenza consentiva attacchi di malleabilità.

Di conseguenza, sono diventate possibili soluzioni di scaling secondarie come la Bitcoin Lightning Network.

 

Perché SegWit era controverso? 🤔

Molti nella comunità di sviluppo ritenevano che SegWit non fosse sufficiente per affrontare i problemi di scalabilità di Bitcoin.

I principali argomenti contro l'attivazione di SegWit includono:

  • La maggiore produttività di Bitcoin di 7-10 transazioni al secondo è ancora lontana dall'essere sufficientemente elevata per un sistema di pagamento decentralizzato e globale.
  • Le commissioni rimarrebbero relativamente alte, rendendo finanziariamente impraticabili cose come le microtransazioni.
  • I miner possono ancora elaborare blocchi di transazioni legacy, il che significa che la malleabilità è ancora una minaccia.
  • In seguito si è scoperto che SegWit avrebbe annullato il meccanismo ASICBOOST di Bitmain; un exploit utilizzato per aumentare significativamente l'efficienza delle piattaforme di mining.

Circa un anno dopo la proposta di Wuille, lui e altri sviluppatori di Bitcoin Core, tra cui Eric Lombrozo, avevano preparato il codice per essere rilasciato nel prossimo aggiornamento di Bitcoin Core 0.13.1. L'unico passo rimanente per attivare SegWit era che i miner iniziassero a elaborare nuovi blocchi SegWit. 

Per consolidare la sua implementazione, oltre il 95% di tutti i miner di Bitcoin avrebbe dovuto mostrare supporto per SegWit entro le prime due settimane dalla sua iniziazione, un ostacolo importante considerate le circostanze dell'epoca.

Soft fork attivato dall'utente

Inutile dire che le grandi aziende minerarie come Bitmain erano ancora insoddisfatte delle modifiche proposte e si rifiutarono di supportare l'attivazione di SegWit.

All'inizio del 2017, uno sviluppatore pseudonimo di nome "Shaolinfry" sollevò la possibilità che i nodi Bitcoin applicassero un soft fork in un post online su bitcoin-dev

Un soft fork attivato dall'utente non era mai stato tentato prima sulla rete Bitcoin, ma avrebbe permesso agli sviluppatori di implementare SegWit con circa il 51% di supporto da parte dei miner. Coloro che si rifiutavano di supportare i nuovi blocchi rischiavano che i loro blocchi venissero rifiutati dai nodi. La soluzione non era priva di rischi. Se SegWit non avesse ricevuto un sostegno sufficiente dai miner, il risultato avrebbe inevitabilmente portato a una divisione della catena.

Coloro che erano contrari a SegWit proposero invece un diverso aggiornamento hard fork SegWit 2X. Uno che avrebbe implementato SegWit e aumentato la dimensione del blocco di Bitcoin a 2MB.

A differenza del precedente aggiornamento, SegWit 2X non sarebbe stato retrocompatibile con le versioni precedenti del client Bitcoin. Queste modifiche significavano che i nodi avrebbero dovuto aggiornare il loro software per continuare a operare sulla rete.

SegWit e il New York Agreement 🗽

Le principali aziende del settore si sono incontrate al Consensus 2017 e hanno firmato collettivamente un memorandum soprannominato "New York Agreement". Questo documento stabiliva i piani per l'attivazione di SegWit in estate e per l'aumento della dimensione del blocco di Bitcoin a 2MB entro novembre.

Prima di novembre, Shaolinfry ha redatto due Bitcoin Improvement Proposals (BIP); BIP148 e BIP149. Il primo rappresentava una soluzione rapida e definitiva: segnalare il supporto per i blocchi SegWit o i nodi avrebbero rifiutato i blocchi. Il secondo forniva un orizzonte temporale più lungo per l'adesione dei miner, fissando una scadenza per l'attivazione a luglio dell'anno successivo.

Con l'avvicinarsi della data, l'ingegnere di Bitmain Warranty, James Hillard, propose un nuovo BIP: BIP91. La sua soluzione mirava a rendere SegWit 2X e BIP148 compatibili tra loro. Perché rischiare una divisione della catena per due aggiornamenti SegWit concorrenti quando si possono rendere entrambi compatibili?

Il 1° agosto, un supporto minerario sufficiente ha consolidato l'attivazione di SegWit. La seconda fase del New York Agreement, tuttavia, non ha ricevuto lo stesso sostegno.

Il mancato aumento della dimensione del blocco di Bitcoin a 2MB ha portato alla formazione di Bitcoin Cash (BCH), un nuovo progetto forked dalla blockchain di Bitcoin.

$424.74
-1,94%
24 ore
bch

L'importanza del Bitcoin Independence Day

L'introduzione di SegWit e la decisione della comunità di rifiutare l'aumento della dimensione del blocco hanno rappresentato un momento storico per la più ampia comunità Bitcoin.

SegWit ha mostrato l'importanza del consenso quando si trattava di modifiche alla blockchain di Bitcoin, nonché l'entità della decentralizzazione del potere offerta da Bitcoin.

Nessun singolo individuo è stato in grado di prendere il controllo della rete e portare a termine la propria proposta.

Invece, la comunità ha discusso, iterato e continuato il lungo processo di raggiungimento del consenso come gruppo collettivo, non sotto la direzione di un singolo individuo.

Inizia ad acquistare Bitcoin

Ora che hai imparato tutto su SegWit, sei pronto a continuare il tuo viaggio nel mondo delle criptovalute e ad acquistare Bitcoin?

Consulta la nostra guida del Kraken Learn Center per maggiori informazioni su Come acquistare Bitcoin (BTC) e registrati per un account con Kraken oggi stesso.