SegWit è una soluzione ideata per risolvere il problema della malleabilità delle transazioni Bitcoin e migliorarne la scalabilità.

De tra i grandi miglioramenti che ha subito Bitcoin dal suo inizio, SegWit è stato uno dei più importanti e trasformativi di questa blockchain. SegWit è la contrazione di Testimone segregato o Testimone segregato, nome utilizzato per una modifica nel formato della transazione Bitcoin. Questa è una proposta aziendale Blockstream e il team di sviluppo del cliente Bitcoin Core.

Questo soft fork, è stato proposto in uno dei BIP, in particolare sotto BIP-141, con il nome di "Segregated Witness (Consensus Layer)". Con questo miglioramento a Bitcoin, si è cercato di risolvere due problemi:

  1. Risolvi il problema di malleabilità delle transazioni.
  2. Migliora la scalabilità della rete Bitcoin.

Ma il suo utilizzo si è esteso oltre Bitcoin, raggiungendo altri blockchain come Litecoin, DigiByte, VertCoin e anche EOS. Tutti loro con lo stesso problema da risolvere e vedevano SegWit come una soluzione ideale per loro.

La nascita di SegWit

Durante il boom delle criptovalute, Bitcoin ha dovuto affrontare alcuni problemi a causa del modo in cui funzionava la sua struttura di transazione. Queste limitazioni sono diventate più evidenti quando Bitcoin ha affrontato alti livelli di transazioni. Il risultato è stato che Bitcoin non è stato in grado di gestire l'enorme numero di transazioni sulla rete in modo ottimale.. La sua capacità di gestire da 7 a 8 transazioni al secondo si è rivelata insufficiente per le esigenze della rete e per il numero crescente di utenti.

In aggiunta a questo, gli sviluppatori hanno considerato il serio rischio che le transazioni Bitcoin fossero malleabili. Il che potrebbe portare a manipolazioni che potrebbero portare alla perdita di centinaia o migliaia di bitcoin sulla rete. Un'altra situazione inaccettabile. Per risolvere questo problema, gli sviluppatori di Bitcoin Core e Blockstream si sono messi al lavoro. Dopo un duro lavoro, SegWit ha presentato una proposta Dicembre 21 2015, dagli sviluppatori Eric Lombrozo, Johnson Lau y Pieter Wuille.

SegWit ha proposto di risolvere il problema della malleabilità delle transazioni e della scalabilità di Bitcoin. Per ottenere ciò, SegWit separa il file Script Bitcoin e firme crittografiche in una nuova struttura a blocchi. Mentre i blocchi con le transazioni erano in un'altra struttura. Tutto questo, senza compromettere la possibilità di verificare le firme e le transazioni in ogni struttura in qualsiasi momento grazie al albero di merkle.

segwit-diagram

I problemi risolti da SegWit

I problemi che SegWit ha risolto in Bitcoin sono due: la malleabilità e la capacità di migliorarne la scalabilità. Per comprendere entrambi i punti in modo più completo, è meglio spiegarli in modo più dettagliato:

Malleabilità

Malleabilità, È la possibilità che una terza parte possa modificare un codice o un seriale a piacimento. Originariamente in Bitcoin, questa proprietà è considerata un tipo di Denial of Service (DoS). Questo è così perché, la malleabilità porta al identificatore di transazione (TXID), Può essere modificato in transazioni non confermate.

Questo problema è legato al fatto che gli hash della firma Bitcoin non proteggono il file script di firma (scriptSig). Questo script include un tipo di firma (secp256k1) Non è possibile "cartello" Allo stesso modo. Inoltre, il modo in cui viene calcolato il TXID consente che ci sia la possibilità che una terza parte con intenti dannosi modifichi l'identificativo di una determinata transazione non confermata. Questi due problemi creano un punto debole che consente a un utente malintenzionato di modificare il TXID a piacimento mentre la transazione è nello stato non confermato.

A seguito di questa modifica, se si desidera tracciare un determinato TXID sulla rete, non è stato possibile trovarlo perché è stato modificato. Ciò indurrebbe il destinatario a diffidare del mittente e persino a infrangere la fiducia nella rete in generale.

Un esempio più semplice del problema della malleabilità

Per spiegare più facilmente la situazione di cui sopra, considera questo esempio:

Maria ha fatto una transazione con Daniel. I fondi di tale transazione verranno utilizzati da Daniel per pagare Sofia in una seconda transazione. Ma succede che un minatore per errore o una terza parte maligna modifichi il TXID della transazione da Maria a Daniel e lo confermi con quel TXID diverso. Ciò significa che il pagamento di Daniel a Sofia verrà annullato. In questo scenario, l'onestà delle parti inizia a giocare un ruolo trascendentale. Questo perché se Daniel è onesto, invierà i fondi a Maria. Ma se sei disonesto, puoi mantenere le criptovalute.

Con questo esempio possiamo vedere in modo semplice che, quando i fondi raggiungono la loro destinazione, lo faranno con il TXID diverso da quello del loro creatore (María). Quindi quest'ultimo (Daniel) percepirà che la sua transazione è scomparsa dalla rete. Modificando l'identificatore senza invalidare la transazione in questione, le transazioni figlio vengono invalidate. Questo perché le nuove transazioni sono collegate a quelle vecchie.

Scalabilità

Il peggior problema che gli sviluppatori e i sostenitori di Bitcoin hanno affrontato è stato, scalabilità. L'elevato traffico sulla rete Bitcoin, ha posto ben lontano dalle promesse di transazioni veloci ea basso costo. Questo perché il boom di Bitcoin ha spinto la rete al limite al punto in cui una transazione ha richiesto ore per essere confermata. Inoltre, il costo per commissione ha rimosso la possibilità di utilizzare bitcoin per effettuare micropagamenti. È stato un piccolo disastro che è costato molto alla comunità che supportava Bitcoin come tecnologia di pagamento globale, veloce e sicura.

Per risolvere questo problema, gli sviluppatori di SegWit hanno cercato di mitigare questa situazione e gettare le basi per nuove forme di scalabilità. Per farlo, SegWit separa o separa gli script e le firme delle transazioni in una nuova struttura. Allo stesso tempo, è stato possibile aumentare la dimensione del blocco a 1,8 MB, rispetto alla dimensione originale dei blocchi da 1 MB. Ciò ha un forte impatto sulla scalabilità e sul numero di transazioni per blocco all'interno di Bitcoin.

Grazie a questo, è stato possibile inserire più transazioni all'interno di un blocco e aumentare il numero di transazioni elaborate ogni secondo. Una situazione che ha un impatto positivo sulla riduzione dei costi di commissione e sulla velocità di conferma della transazione. SegWit ha però anche permesso di avviare la costruzione di nuovi sistemi di scalabilità superando il problema della malleabilità e delle firme all'interno dei blocchi.

In questo caso particolare, intendiamo Lightning Network. Questa soluzione di scalabilità progettata da Blockstream utilizza lo stesso formato SegWit per effettuare transazioni all'interno dei suoi canali. Una situazione che viene chiarita direttamente nel documentazione Lightning Network RFC.

L'impatto di SegWit su Bitcoin

SegWit è stato un cambiamento piuttosto importante nella gestione delle transazioni Bitcoin. Da un lato, ha portato la rete Bitcoin a soft fork che consente ai nodi legacy (senza SegWit) e ai nodi SegWit di funzionare contemporaneamente. Tutto questo senza interrompere il lavoro della rete, né comprometterne la sicurezza.

D'altra parte, SegWit apre la porta a blocchi di dimensioni maggiori per Bitcoin. Uno dei più grandi cambiamenti strutturali di SegWit, è quello di prendere la dimensione massima del blocco Bitcoin, da 1 MB a 4 MB. In questo modo SegWit garantisce aggiornamenti importanti nella dimensione dei blocchi Bitcoin senza dover applicare un hard fork e le sue conseguenze. Un altro cambiamento importante in SegWit è che ha generato un nuovo tipo di indirizzi Bitcoin, chiamati indirizzi SegWit che iniziano con "Bc1" o "3".

Inoltre, SegWit ha consentito a un utente con un portafoglio con supporto SegWit di inviare criptovalute a un utente con un portafoglio (e un indirizzo) legacy. In questo modo, l'utente SegWit beneficia di un minor costo per transazione e di una conferma più rapida. Lo stesso può accadere in modo opposto, un utente legacy può inviare criptovalute a un utente con SegWit, utilizzando un indirizzo legacy ma senza godere dei vantaggi di SegWit.

A sua volta, La proposta di SegWit ha posto le basi per la creazione del Lightning Network. Questo grazie a SegWit, in questa nuova struttura è necessario garantire che le transazioni off-chain non siano vulnerabili ad un attacco di malleabilità. Una situazione che viene spiegata in dettaglio nel whitepaper da Lightning Network.

Vantaggi di SegWit

  1. Rende impossibili gli attacchi alla malleabilità delle transazioni. Ciò separando i dati della firma dal resto dei dati in una transazione.
  2. Aumentare la dimensione del blocco fino a un massimo di 4 MB.
  3. La presenza dei dati del testimone diventa facoltativa e sarà necessaria solo quando i dati del testimone lo sono nodi richiedono la convalida di una transazione, ma non la verifica.
  4. L'SPV (Simplified Payment Verification o Simplified Payment Verification) migliorerà il suo funzionamento. Questo grazie alla riduzione delle dimensioni dei test di verifica e all'utilizzo della larghezza di banda.
  5. Scrive le basi per protocolli di scalabilità come Lightning Network quando risolve il problema della malleabilità.
  6. Riduce la concorrenza per i tassi di priorità tra gli utenti. Ciò riduce di conseguenza le commissioni di rete.

Attivazione di SegWit sulla rete Bitcoin

El 21 luglio 2017, I minatori di Bitcoin hanno effettuato un nuovo aggiornamento software. A questo punto, i minatori hanno seguito il protocollo delineato nella proposta di miglioramento di Bitcoin BIP-91. Ciò ha aperto la strada a questo aggiornamento e all'attivazione finale di SegWit. In questa proposta il lavoro di Luke Dashjr è stato decisivo per il successo di questa operazione.

El 8 agosto 2017 l'altro grande traguardo è stato raggiunto. All'epoca, è stato indicato che il 100% dei pool di mining di Bitcoin indicava la compatibilità con SegWit. Tuttavia, SegWit non sarebbe stato completamente attivato fino al 21 agosto al più presto. Dopo questo punto, i minatori potevano rifiutare i blocchi che non includevano transazioni SegWit.

Infine, l' 23 agosto 2017, SegWit è ufficialmente attivato durante il block mining 481.822 , Con 99,95% supporto nella rete.

Quanto sai, Cryptonuta?

SegWit è una delle basi per il corretto funzionamento della rete Lightning?

Certo!

Lightning Network si avvale delle proprietà di SegWit per garantire la non malleabilità delle transazioni dei pagamenti effettuati nei canali off-chain di questa rete. In questo modo garantisce che i TXID delle transazioni generate in detti canali non possano essere manipolati da terze parti maligne.

Portafogli con supporto SegWit

Affinché gli utenti Bitcoin possano utilizzare le transazioni SegWit, devono utilizzare un portafoglio che supporti questa funzione. Questi portafogli possono fornire agli utenti indirizzi legacy o indirizzi SegWit per inviare e ricevere transazioni. Tra i portafogli Bitcoin che offrono tale supporto si può citare quanto segue:

  1. Ledger. Questo è un produttore di portafogli hardware che supportano una grande varietà di valute. Tutti includono il supporto per l'implementazione di SegWit per Bitcoin, senza compromettere le funzionalità di sicurezza del prodotto.
  2. Trezor. È un altro produttore di portafogli hardware che offre supporto per SegWit sui propri dispositivi.
  3. Bitcoin Core. Questo è il portafoglio di riferimento per il team di sviluppo di Bitcoin. Include il supporto per SegWit dalla versione 0.13.1.
  4. Bitcoin Armory. Questo portafoglio è scritto nel linguaggio di programmazione Python e ha anche il supporto per SegWit. È disponibile per i sistemi operativi desktop Windows, Linux e Mac OS X.
  5. Electrum. Si tratta di un wallet disponibile per il sistema operativo Android su mobile e per Windows, Linux e Mac OS X. Attivo dal 2011 è uno dei wallet con una base di utenti fedeli nella comunità bitcoin. È open source e supporta SegWit, consentendo inoltre agli utenti di configurare le commissioni di transazione.
  6. GreenBits. Questo è un altro portafoglio con supporto SegWit. È disponibile per Android e iOS. Consente inoltre agli utenti di utilizzarlo tramite un'estensione di Google Chrome o tramite il web.
  7. Samourai. Questo è un progetto in fase di sviluppo, ma supporta anche il miglioramento di SegWit. Samourai è un progetto incentrato sulla privacy e l'anonimato.
  8. Coinomi. Questo portafoglio è multi-criptovaluta e offre supporto SegWit per Bitcoin e Litecoin