Tecnologia Bitcoin: Segregated Witness (SegWit). Segregated Witness (SegWit) è un aggiornamento del protocollo implementato destinato a fornire protezione dalla malleabilità delle transazioni e aumentare la capacità di blocco.
SegWit separa il testimone dall'elenco degli input. Il server di controllo contiene i dati necessari per verificare la validità della transazione, ma non è necessario per determinare gli effetti della transazione.
Per capire veramente come funziona SegWit, ci concentreremo su due concetti distinti: peso del blocco e forcelle morbide.
Dimensione del blocco Bitcoin e forcelle
Per parlare con precisione delle dimensioni dei blocchi, è importante capire come viene misurata la dimensione del blocco. La dimensione del blocco è semplicemente la dimensione in byte del blocco serializzato (l'intestazione del blocco, il numero di transazioni e le transazioni stesse).
Come parte delle regole di consenso, ogni nodo della rete Bitcoin controlla attualmente per assicurarsi che un blocco sia inferiore a 1.000.000 byte. Un blocco maggiore di 1.000.000 di byte verrà rifiutato da questi nodi come regola di consenso.
Poiché i nodi legacy (nodi che non aggiornano) rifiuteranno un blocco superiore a 1.000.000 byte, qualsiasi soft fork deve mantenere questa regola. Ma come puoi aumentare la dimensione del blocco e mantenere ancora questa regola? Sono possibili blocchi più grandi tramite una forcella morbida?
L'intuizione chiave è che gran parte della transazione, ScriptSIG (chiave pubblica), può essenzialmente non essere inviata ai nodi legacy affinché una transazione venga conteggiata come valida. Il fatto che questo possa essere fatto come una forcella morbida e consentire più transazioni è una svolta ingegneristica.
Le transazioni non SegWit mettono ScriptSIG nel mezzo della transazione. Le transazioni SegWit mettono ScriptSIG alla fine. La parte ScriptSIG delle transazioni SegWit è chiamata “dati di controllo”. Quando le transazioni SegWit vengono inviate ai nodi legacy, i dati di controllo vengono spogliati. La chiave è che queste transazioni “spogliate” sono ancora transazioni valide su nodi legacy, il che ci dà un risparmio di spazio rispetto alle transazioni non SegWit. Pertanto, più transazioni possono inserirsi nel blocco inviato ai nodi legacy senza superare il limite di 1.000.000 di byte.
I nodi SegWit ricevono transazioni SegWit e blocchi che includono i dati di controllo tramite messaggi di rete alternativi. I blocchi SegWit che includono i dati di controllo possono essere superiori a 1.000.000 byte. I nodi legacy, come accennato, ricevono gli stessi blocchi e transazioni, ma con i dati di controllo rimosso. Questo è un modo per rendere SegWit una forchetta morbida, il che significa che non è obbligatorio aggiornare il software per partecipare al consenso.
SegWit e peso del blocco
Un problema ovvio per un critico SegWit sarebbe il fatto che ci deve essere un limite superiore, altrimenti la dimensione del blocco potrebbe potenzialmente escalation all'infinito - che è un problema enorme per la tolleranza agli errori dei nodi.
Per limitare i blocchi SegWit, i creatori di SegWit invece hanno creato una restrizione diversa dalla dimensione. I blocchi SegWit sono limitati da qualcosa chiamato peso del blocco. Il peso del blocco è un nuovo concetto introdotto in SegWit, ed è calcolato su base per transazione. In sostanza, ogni transazione ha un “peso”.
Le transazioni con dati di controllo zero sono più leggere di quelle con dati di controllo. Si noti che le transazioni SegWit vengono trasmesse ai nodi legacy senza dati di controllo, quindi ciò comporterà sempre blocchi comunicati ai nodi legacy che sono inferiori o uguali a 1.000.000 byte.
Un concetto chiave da capire è che le transazioni SegWit possono avere molti pesi diversi a seconda della quantità della transazione è occupata dai dati di controllo, il che dà ai creatori di transazioni molto più spazio per giocare con la malleabilità delle transazioni.
Disclaimer: The views and opinions expressed by the author should not be considered as financial advice. We do not give advice on financial products.