Segregated Witness, spesifisert i BIP141, ble aktivert ved blokk 481 824 24. august 2017. Det var den største oppgraderingen i Bitcoins historie på den tiden, og det var en soft fork.
Problem 1: malleability
Før SegWit kunne en tredjepart litt endre en signaturs koding uten å ugyldiggjøre den. Transaksjonen forble gyldig, men dens txid endret seg. Enhver ubekreftet transaksjon som brukte den, ved å referere til den gamle txid-en, ville bryte. Det blokkerte trygge off-chain-protokoller.
SegWit flytter signaturer og scripter inn i en separat witness-struktur som ikke er del av txid. En andre ID, wtxid, inkluderer den.
Problem 2: blokkplass
SegWit erstattet 1 MB-størrelsesgrensen med en grense på 4 000 000 vektenheter. Non-witness-byte koster 4 WU, witness-byte koster 1. Gamle noder ser bare den strippete blokken, som holder seg under 1 MB, så de fortsetter å godta den. Oppgraderte noder ser hele blokken, som kan være større.
Hvordan gamle noder forblir kompatible
En SegWit-utdata ser ut som OP_0 <20 or 32 bytes>. Gamle noder ser et script hvem som helst kan bruke med en tom scriptSig, så de godtar enhver bruk. Nye noder håndhever witness-programreglene. Blokker forplikter seg til witness-data via en OP_RETURN-utdata i coinbase som inneholder et hash av witness-Merkle-roten.
Andre fikser
- BIP143 endret hvordan signaturer hashes. Signeringstid vokser lineært i stedet for kvadratisk, og signere forplikter seg til inndata-beløpet, noe som hjelper maskinvarelommebøker.
- Script-versjonering: den ledende opcode (OP_0 til OP_16) er et versjonsnummer, som gjorde Taproot (versjon 1) til en ren oppgradering.
Hvorfor det betydde noe
Uten en malleability-fiks ville Lightning Network ha vært upraktisk. SegWit ble aktivert etter en lang strid om blokkstørrelse, som involverte BIP148 (en brukeraktivert soft fork) og Bitcoin Cash-splittet 1. august 2017.