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 community. 

Al centro della questione c'era un conflitto di interessi 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 community, culminando 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 forkati da Bitcoin, 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 community di 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 aziende di mining di Bitcoin.

Esploriamo ciascuno di questi eventi così come sono accaduti e sveliamo la storia dietro SegWit.

BTC icon
57.337.00
-0,25%
24 ore
btc

Bitcoin prima di SegWit ⏮️

Prima dell'attivazione di SegWit, la capacità di blocco di Bitcoin era rimasta invariata per molti anni. La capacità di blocco 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 aveva impostato alcun parametro per la dimensione dei blocchi 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 Distributed Denial of Service (DDoS) che avrebbero potuto impattare la rete.

Questo limite fisso sulla capacità di blocco ha avuto l'effetto indesiderato di restringere il potenziale di Bitcoin di scalare in diversi modi.

Bassa velocità di elaborazione e tempi di transazione lenti

Solo un numero limitato di transazioni può rientrare nel blocco relativamente piccolo da 1MB che Bitcoin ha 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 di blocco medio 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 fosse diventata un "sistema di contanti elettronici peer-to-peer" globale come Satoshi aveva previsto nel white paper di Bitcoin, le cose dovevano cambiare.

Commissioni elevate

La bassa capacità di trasmissione 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 piedi fuori in una folla di persone dopo aver assistito a uno spettacolo teatrale. Tutti i presenti a 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 pochi taxi, le persone potrebbero provare a pagare un prezzo più alto ai tassisti per incentivare il conducente a portarli a casa per primi. A seconda della domanda, i prezzi dei taxi potrebbero aumentare significativamente rispetto alla tariffa normale.

Le commissioni di Bitcoin funzionano con gli stessi principi di domanda e offerta. Se molte persone desiderano che le proprie transazioni vengano elaborate contemporaneamente, alcune potrebbero scegliere di pagare commissioni più elevate per far elaborare la propria transazione prima dai miner. Durante i periodi di elevato utilizzo sulla rete Bitcoin, la congestione può comportare la concorrenza tra gli utenti, il che può causare un brusco 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.

Prendere le informazioni relative a una transazione specifica ed eseguirle tramite una funzione hash 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 utilizzate per identificare e fare riferimento alle transazioni sulla blockchain.

La modifica dell'ID di transazione crea un hash interamente 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ù famigerati 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 prosciugato il wallet di bitcoin dell'exchange Mt. Gox. Lo hanno fatto in parte alterando l'ID delle transazioni 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 agli hacker di sottrarre oltre 840.000 BTC dall'exchange.

Quali miglioramenti ha apportato SegWit? ⚙️

Il contributor 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. Soprattutto, questo poteva essere implementato senza eseguire un hard fork della rete.

Separare firma digitale e informazioni sulle transazioni

La proposta di Wuille ha aumentato la capacità dei blocchi Bitcoin "separando" i dati "witness" (testimone) 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 di nuova creazione 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 di nuova creazione come "ricompense di blocco".

I dati 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 della firma digitale separatamente dal campo di input della transazione, c'era più spazio per le transazioni in ogni blocco.

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

Nonostante la separazione, è importante notare che i nodi elaborano ancora sia i dati della transazione che i dati 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 dati witness (testimone) che dati di transazione, ma ha riscontrato problemi quando questi sono stati separati.

Per ovviare a questo, l'aggiornamento ha introdotto una metrica chiamata "peso del blocco" (block weight) per gestire la dimensione dei blocchi.

Con questo concetto, ogni blocco da 1 megabyte è composto 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 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 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 1MB a 4MB, se un blocco è composto quasi interamente da dati witness. Tuttavia, ciò non è possibile in pratica.

Il principale vantaggio del sistema pesato è che incentiva i miner a elaborare blocchi che contengono principalmente transazioni SegWit. Supponendo che le transazioni SegWit abbiano 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ì penseresti.

Niente più problemi di malleabilità delle transazioni

Sotto la struttura SegWit, l'ID della transazione con hash contiene solo le informazioni sulla transazione, non le informazioni del campo witness.

Questo cambiamento rimuove il componente modificabile di una transazione Bitcoin che in precedenza abilitava attacchi di malleabilità.

Di conseguenza, sono diventate possibili soluzioni di scalabilità secondarie come il Bitcoin Lightning Network.

 

Perché SegWit è stato controverso? 🤔

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

I principali argomenti contro l'attivazione di SegWit includevano:

  • La capacità di elaborazione aumentata di Bitcoin di 7-10 transazioni al secondo è ancora lontana dall'essere abbastanza elevata per un sistema di pagamento globale decentralizzato.
  • Le commissioni sarebbero rimaste relativamente alte, rendendo finanziariamente impraticabili operazioni come le microtransazioni.
  • I miner possono ancora elaborare blocchi di transazioni legacy, il che significa che la malleabilità è ancora una minaccia.
  • Successivamente si scoprì che SegWit avrebbe annullato il meccanismo ASICBOOST di Bitmain; un exploit utilizzato per aumentare significativamente l'efficienza delle apparecchiature 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 consolidarne l'implementazione, oltre il 95% di tutti i miner di bitcoin avrebbe dovuto mostrare supporto per SegWit entro le prime due settimane dalla sua introduzione — un ostacolo significativo considerate le circostanze di allora.

Soft fork attivato dagli utenti

Inutile dire che le grandi aziende di mining, 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 dagli utenti non era mai stato tentato prima sulla rete Bitcoin, ma avrebbe permesso agli sviluppatori di implementare SegWit con circa il 51% di supporto dai miner. Coloro che si rifiutavano di supportare 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 invariabilmente portato a una divisione della catena.

Coloro che erano contro SegWit proposero invece un diverso aggiornamento hard fork di 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 incontrarono al Consensus 2017 e firmarono 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 redasse due Bitcoin Improvement Proposals (BIP); BIP148 e BIP149. La prima rappresentava una soluzione rapida e decisa; segnala il supporto per i blocchi SegWit o i nodi rifiuteranno i tuoi blocchi. La seconda prevedeva un orizzonte temporale più lungo per l'onboarding dei miner, fissando una scadenza per l'attivazione a luglio dell'anno successivo.

Man mano che la data si avvicinava, l'ingegnere di garanzia di Bitmain, James Hillard, propose un nuovo BIP; BIP91. La sua soluzione cercava di rendere SegWit 2X e BIP148 compatibili tra loro. Perché rischiare una divisione della catena a causa di due aggiornamenti SegWit concorrenti quando puoi renderli entrambi compatibili?

Il 1° agosto, un supporto di mining sufficiente consolidò l'attivazione di SegWit. La seconda fase del New York Agreement, tuttavia, non riuscì a ricevere lo stesso sostegno.

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

186.070
-1,78%
24 ore
bch

L'importanza del giorno dell'indipendenza di Bitcoin

L'introduzione di SegWit e la decisione della community di rifiutare l'aumento della dimensione del blocco hanno rappresentato un momento storico per l'intera community Bitcoin.

SegWit ha dimostrato 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 assumere il controllo della rete e portare a termine la propria proposta.

Invece, la community ha dibattuto, iterato e continuato il lungo processo per raggiungere un 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 crypto e comprare bitcoin?

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