Was ist Segwit?
Seit es Bitcoin gibt, wird die mangelnde Skalierbarkeit kritisiert. Die Community war sich einig, dass die Transaktionsrate erhöht werden musste.
Im Dezember 2015 veröffentlichte Peter Todd dieses Announcement, mit einer ersten testweisen Implementation, und BIP-141.
Im Laufe der endgültigen Implementation zu „Segregated Witness“ (kurz Segwit) entstand eine Sammlung an Verbesserungen für das Bitcoin Protokoll, unter anderem BIP-65 (CHECKLOCKTIMEVERIFY) und BIP-112 (CHECKSEQUENCEVERIFY), welche bereits aktiviert wurden.
Das bekannteste neue Feature von BIP-141 (SegWit) ist aber die Auslagerung der Transaktionsdaten (witness data), um mehr Transaktionen in die altbekannte Blockgröße von 1MB zu bekommen, während das Protokoll mit älteren Clients kompatibel bleibt (sog. „soft-fork„). Veraltete Knoten im Netzwerk sehen eine gültige Transaktion, können diese jedoch nicht mehr weiter verarbeiten.
Desweiteren soll zukünftig „transaction malleability“ verhindert werden. Hierbei handelt es sich um das nachträgliche Manipulieren von bereits signierten Transaktionen, um die Transaktions-Hash-ID trotz intakter Ursprungsdaten zu verändern. Durch die Eliminierung dieser „Schwachstelle“ vereinfacht sich die Implementierung von 2nd Layer Systemen wie dem Lightning Network, welche uns zukünftig sehr hohe Transaktionsraten ermöglichen könnten.
Aktivierung
Ursprünglich wurde im November 2016 die Aktivierung von BIP-141 (Segwit) mittels BIP-9 (Version bits) über Versions-Bit 1 gestartet. Dazu muss in einer vorgegebenen Retarget-Periode von 2016 Blöcken mind. 95% Signalisierung gegeben sein, damit nach einer weiteren Periode Übergangszeit das System von allen Knoten aktiviert wird.
Diese 95% wurden lange Zeit nicht erreicht, während die Blöcke immer mehr an ihr Limit gelangten. Erst mit dem drohenden BIP-148 Softfork, bei welchem die User alle nicht signalisierenden Blöcke ab 01.08.2017 verwerfen wollten (welches unweigerlich zu einem Chain-Split führen würde), konnten sich die Miner mittels BIP-91 verständigen um den drohenden Split abzuwenden. BIP-91 (Segsignal) wurde über Bit 4 signalisiert, wobei nach Erreichen von 80% desselbigen die Miner nach einer kurzen Übergangsfrist alle Blöcke ohne Bit 1 (Signalisierung v. Segwit) verwerfen wollten, um so die Aktivierung von SegWit zu erzwingen.
Die Motivation zu BIP-91 kommt von einem getroffenen Kompromiss, welcher 3 Monate nach Aktivierung einen Hard-Fork auf 2MB Blöckgröße vorsieht (Segwit2X).
Aktuell haben wir die Aktivierungsgrenze von 95% erreicht (Status = LOCKED_IN) und warten die Übergangsfrist von BIP-141 ab, bis Segwit voll aktiviert wird. Spannend wird es gegen Jahresende, wenn der zweite Teil von Segwit2X geplant ist, welches aktuell vom Bitcoin Core Team nicht unterstützt wird.
Update 24.08.2017: SegWit ist nun voll aktiv!
Kompatibilität
Im Gegensatz zu einem Hardfork wird beim Softfork Wert darauf gelegt, die bestehenden Regeln des Netzwerkes weiter „einzuhalten“. Denn nur dann können alle bestehenden Implementierungen an Knoten auch weiterhin am selben Netzwerk teilnehmen.
Veränderte man im Gegensatz dazu mittels Hardfork eine der Gültigkeitsregeln (zB größere Blöcke), könnten alte Knoten diese nicht mehr interpretieren und diese würden sie daher als ungültig verwerfen. Das führt dann dazu, das alte Clients an ihrer eigenen Kette weiterarbeiten würden und das Netzwerk wäre geteilt (chain-split).
Bitcoin Cash / Bcash / BCH
Zur gleichen Zeit wurde von den Befürwortern des Hardforks selbiger geplant und durchgeführt. Dieser sollte Blockgrößen ab 8MB erlauben und enthielt weiterhin eine dynamischere Anpassung der Mining-Difficulty, um die Abspaltung auch mit geringerer Hashpower zu schaffen.
Mit Block 478559 wurde erstmals ein Block gemined, welcher eine Größe über 1MB hatte und somit der Grundstein für den Fork „Bitcoin Cash“ gelegt. Bitcoin Core Clients verwarfen diesen Block als ungültig (da >1MB) und seit jeher arbeiten die zwei Netze daher getrennt.
Da es sich um einen chain-split handelt, werden die UTXO (unspent transaction outputs, vereinfacht gesagt die „Kontostände“ der Bitcoin-Adressen) in die alternative Kette mit übernommen. Somit hat jeder, der mit Block 478558 den Private Key für zB. 1 BTC hielt, nach dem Split nun jeweils 1 BTC und 1 BCH, welche getrennt bewegt werden können. Für Bitcoins die zu diesem Zeitpunkt auf Börsen/Exchanges lagerten, existieren abweichende Regelungen.