# SegWit

Segregated Witness, auch kurz SegWit, ist der Name für einen implementierten Soft Fork Change im Transaktionsformat der Kryptowährung Bitcoin. Der formale Titel „Segregated Witness (Consensus layer)“ hatte die Bitcoin Improvement Proposal Nummer BIP141. Ziel war es, die Transaktions-Verformbarkeit (englisch transaction malleability) zu lösen. Es war auch beabsichtigt, ein Problem mit der Größenbeschränkung der Blockchain abzuschwächen, das die Transaktionsgeschwindigkeit von Bitcoin verringert. Dazu wird die Transaktion in zwei Segmente aufgeteilt, die Entsperrsignatur („Zeugendaten“) aus dem Originalteil entfernt und am Ende als separate Struktur angehängt. Der ursprüngliche Abschnitt würde weiterhin die Sender- und Empfängerdaten enthalten und die neue „witness“-Struktur würde Skripte und Signaturen enthalten. Das ursprüngliche Datensegment wird normal gezählt, aber das „Zeugensegment“ wird in Wirklichkeit als ein Viertel seiner tatsächlichen Größe gezählt.

## Geschichte
### Blockgrößenbegrenzung

Bitcoin ist eine Kryptowährung, also eine Form von Geld, die Kryptographie verwendet, um Transaktionen sicher zu halten. Jeder Datensatz einer Einheit von Bitcoin wird als „Block“ bezeichnet. Blöcke werden sequentiell miteinander verbunden, indem ein kryptographischer Hash aus dem vorherigen Block berechnet und im nächsten gespeichert wird. Dies bildet eine Kette von Blöcken oder eine Blockkette.
Jeder Bitcoin-Block enthält Informationen darüber, wer eine bestimmte Bitcoin-Einheit (eine Transaktion) sendet und empfängt, sowie die Signatur, die jede Transaktion genehmigt. Ursprünglich gab es keine Begrenzung der Größe dieser Blöcke. Dies bedeutete jedoch, dass böswillige Personen gefälschte „Blockdaten“ erfinden konnten, die als eine Art Denial-of-Service-Angriff (DoS-Angriff) sehr lang waren. Gefälschte Blockketten könnten zwar erkannt werden, dies würde jedoch lange dauern und das ganze System verlangsamen.
Die von Satoshi Nakamoto entwickelte Lösung sollte die Blockgröße auf 1 MB begrenzen. Auf diese Weise würden Angriffe mit großen Blöcken sofort erkannt und abgewiesen werden, ohne das Netzwerk signifikant zu verlangsamen.

### Skalierbarkeit und Verformbarkeit

Je populärer Bitcoin geworden ist, desto langsamer sind die Transaktionen, bedingt durch das Limit. Alle zehn Minuten wird ein Block an die Kette angehängt (Proof of Work führt zu dieser Verzögerung). Die Begrenzung der Blockgröße begrenzt die Anzahl der Transaktionen, die in die Blockgröße passen. Einige Websites umgehen dieses Problem, indem sie „Off-Chain-Zahlungen“ durchführen und Transaktionen durchführen, ohne auf die Bestätigung durch die Blockkette zu warten.
Andere haben Änderungen an Bitcoin vorgeschlagen, die die Art und Weise, wie es gemacht wird, reformieren würden, aber das wäre nicht abwärtskompatibel. Beispielsweise würde FlexTrans (Flexible Transaktionen) Transaktionen verkleinern, indem es die Art und Weise, wie sie beschrieben werden, in ein „Tag“-System umwandelt und mehr in Blöcken der aktuellen Größe zulässt. Es ist jedoch nicht kompatibel mit Systemen, die kein Upgrade durchführen.
Ebenso gibt es eine Reihe anderer, nicht zusammenhängender Probleme, die mit dem Bitcoin-Protokoll aufgetreten sind.
Das Wichtigste ist die „Transaktionsverformbarkeit“. Während eine Transaktion signiert wird, enthält die Signatur nicht alle Transaktionsdaten, und die Überprüfung der korrekten Signatur war nicht einmal erforderlich. Das bedeutet, dass es verschiedene Möglichkeiten gibt, Bitcoins zu verlieren oder zu stehlen. Obwohl eine Reihe von verschiedenen Korrekturen dazu geführt haben, dass dies unwahrscheinlich ist, ist der Fehler immer noch vorhanden.

### SegWit als Lösung

SegWit bietet eine signifikante Abwärtskompatibilität. Er verbirgt seine erhöhte Blockgröße, indem er die Definition eines Blocks, der als eine Million „Einheiten“ statt als Bytes gemessen werden soll, ändert. Die „Zeugen“-Signaturdaten würden vom Hash-Baumdatensatz getrennt, der die Bitcoin Absender- und Empfängeradressen enthält. Die „Zeugen“-Daten werden an das Ende verschoben, und jedes Byte davon würde nur als ein Viertel einer „Einheit“ gelten. Der Gesamteffekt wäre eine Änderung der durchschnittlichen Blockgröße auf etwa 1,8 MB statt auf 1 MB. Das bedeutet, dass sich das bestehende Bitcoin-Protokoll nicht ändert, sodass es auch ohne Software-Upgrade funktioniert.
Es adressiert auch die Verformbarkeit von Signaturen, indem es Signaturen aus den Transaktionsdaten herauszieht, sodass sie nicht mehr verändert werden können. Die Transaktions-ID ist nicht mehr verformbar. Dies macht Bitcoin sicherer für die Verwendung mit Lightning-Netzwerk, eine Möglichkeit, kleine Zahlungen zu beschleunigen, indem man sie bündelt und nur am Anfang und am Ende der Ausführung an die Blockkette schreibt, was (leicht) riskant wäre, solange das Problem der Formbarkeit noch besteht.

## Aktivierung

SegWit wurde am 24. August 2017 aktiviert. Mittlerweile nutzen die meisten Bitcoin-Netzwerktransaktionen SegWit. Nach der Aktivierung von SegWit für Blockchain.com Wallets im Juni 2021 erreichte der Anteil von SegWit Transaktionen 80 %.
Segregated Witness (BIP141) ist nicht zu verwechseln mit SegWit2x (SegWit2Mb). SegWit2Mb schlug vor, zunächst Segregated Witness und dann eine 2 MB Hardfork innerhalb von sechs Monaten ab dem 23. Mai 2017 zu aktivieren.
Im Mai 2017 gab die Digital Currency Group (nicht zu verwechseln mit der Digital Currency Initiative des MIT Media Lab) bekannt, dass sie einen Vorschlag unterbreitet hat, der als SegWit2x („New Yorker Abkommen“) bezeichnet wird, mit dem sie den getrennten Zeugen bei einer Schwelle von 80 % der gesamten Bitcoin-Hashrate aktiviert und bei Bit 4 signalisiert; und Aktivierung einer Blockgrößenbegrenzung von 2 MB innerhalb von sechs Monaten mit einer Unterstützung von mehr als 80 % der gesamten Bitcoin-Hash-Rate. Im Juni 2017 wurde der Vorschlag des Segregated Witness mit der Behauptung, dass er Patente verletzen könnte, die bei der USIPO eingereicht wurden, noch komplizierter. Ab Mitte 2017 hatte der SegWit2x-Vorschlag eine Unterstützung von mehr als 90 % der Hashrate, jedoch war der SegWit2x-Vorschlag umstritten, da die Arbeit an dem Projekt auf eine Gruppe von Entwicklern beschränkt ist, die nur auf Einladung hin arbeitet. Mitte Juli 2017 stellte sich heraus, dass Miner die Umsetzung des Segwit-Teils der Vereinbarung vor dem 1. August 2017 UASF unterstützten und damit versuchten, das Risiko einer harten Abspaltung für das Bitcoin-Netzwerk zu vermeiden.
Am 8. November 2017 gaben die Entwickler von SegWit2x bekannt, dass die für den 16. November 2017 geplante harte Abspaltung aufgrund mangelnden Konsenses gestrichen wurde.
Am 21. Juli wurde das BIP 91 gesperrt, was bedeutet, dass das Upgrade des Segregated Witness bei Block 477.120 aktiviert wird. Bis zum 8. August wurde ein weiterer Meilenstein erreicht, als 100 % der Bitcoin-Minerpools Unterstützung für SegWit signalisierten, obwohl SegWit frühestens am 21. August vollständig aktiviert werden würde, woraufhin die Miner damit begannen, Blöcke abzulehnen, die SegWit nicht unterstützen. Anfangs waren die meisten Bitcoin-Transaktionen nicht in der Lage, das Upgrade zu nutzen. In der ersten Oktoberwoche stieg der Anteil der Bitcoin-Transaktionen mit SegWit von 7 % auf 10 %.
Am 21. Juli 2017 haben die Bitcoin-Miner ein Software-Upgrade, das als Bitcoin Improvement Proposal (BIP) 91 bezeichnet wird, abgeschlossen. Was bedeutet, dass das umstrittene Upgrade des Segregated Witness bei Block 477.120 aktiviert wurde. SegWit vermindert das Skalierungsproblem auf zwei Arten:
* Man kann ca. 2-mal so viele SegWit-Transaktionen pro Block einbauen, da die Ein-Megabyte-Grenze nur für ihre „witness-stripped“-Versionen gilt, die kleiner sind.
* SegWit ermöglicht es dem Lightning Network, einer zweiten Schicht, die auf der Basis-Blockkettenschicht läuft, das Skalierungsproblem hypothetisch zu lösen, indem praktisch unbegrenzt viele sofortige, gebührengünstige Transaktionen „off chain“ durchgeführt werden können.
SegWit ist auch auf Litecoin und einigen kleineren Kryptowährungen aktiviert.

## Verwandte BIPs

* BIP141 Getrennter Zeuge (SegWit) – aktiviert am 24. August 2017
* BIP142 Adressformat für getrennte Zeugen – zurückgezogen, ersetzt durch BIP 173
* BIP143 Transaction Signature Verification for Version 0 Witness Program- aktiviert am 24. August 2017
* BIP144 Segregated Witness (Peer Services) – aktiviert am 24. August 2017
* BIP148 Obligatorische Aktivierung des Segwit-Deployments – aktiviert (zwingend vorgeschriebene Aktivierung von BIP141, 143, 144)
* BIP173 Bech32-Adressen – aktiviert, noch nicht weit verbreitet