Was ist eine Fork?

Eine Fork bedeutet klassich die Weiterentwicklung von Open Source Software. Da Open Source Software naturgemäß von jedem Menschen frei zugänglich ist und heruntergeladen werden kann, besitzt jeder die Möglichkeit, eine eigene Kopie der Software anzufertigen und diese für eigene Zwecke zu modifizieren. Damit hätte die Person die Software geforkt.

Das Modifizieren der Software ist keinesfalls als böser Eingriff zu sehen, sondern sogar ein elementarer und erwünschter Bestandteil von Open Source Projekten. Nutzer mit Programmierkenntnissen können damit gemäß ihrem eigenen Bedarf neue Funktionalitäten hinzufügen – so können verschiedene Distributionen einer Software existieren.

Was haben Forks mit Blockchains zu tun?

Ausgehend von einer Public Blockchain wie der des Bitcoin, basiert diese letztlich auch auf quelloffenem Code, der wie oben beschrieben von Entwicklern lokal modifiziert werden kann. Allerdings ist es bei Blockchain-Technologien essenziell, dass die Netzwerkteilnehmer in bestimmten Punkten übereinstimmen. Es wäre also problematisch, wenn einige Miner im Netzwerk bspw. die SHA-256 Hashfunktion benutzen und andere Netzwerkteilnehmer eine andere Hashfunktion nutzen. Schließlich möchte man Transaktionen nicht nur in sein eigenes „Haushaltsbuch“ schreiben, sondern sie so durchführen, dass sie von möglichst allen Netzwerkteilnehmern anerkannt werden.

Das sieht in praxi wie folgt aus:

  • Es existiert eine allgemein anerkannte Bitcoin Version.
  • Die Nutzer wünschen neue Funktionalitäten, bspw. eine Erhöhung der Blocksize, um Kapazitätsprobleme zu lösen.
  • Ein beliebiger Nutzer kopiert die derzeitige Bitcoin Software und modifiziert sie mit einer höheren Blocksize.
  • Er stellt die Software anderen Nutzern zur Verfügung, die sie ebenfalls nutzen können.
  • Nun existieren zwei Versionen der Bitcoin Software im Netzwerk und Nutzer können entscheiden, welche sie verwenden möchten.

Aber Achtung: Wichtig ist die Differenzierung zwischen Blockchain Forks und Forks von Software. Während Forks im letzten Fall dazu genutzt werden, neue bzw. zusätzliche Services auf der Grundlage bestehender zu entwickeln, zielen Forks im Blockchain-Kontext eher darauf ab, eine Alternative darzustellen.

Forks sind insbesondere in der Art ihrer Auswirkung auf die bestehende Software bzw. auf das Blockchain-Netzwerk zu klassifizieren:

Arten von Forks

Um die Erklärungen zu verstehen, solltest du wissen, was es mit Nodes auf sich hat. Kurz erklärt speichern die Nodes als Netzwerkknoten die Blockchain und stellen sie dem Netzwerk bereit. Im besten Fall ist der aktuelle Konsens der Blockchain, also die aktuellste Transaktionshistorie, auf allen Nodes dezentral gespeichert.

Alle Nodes im Netzerk müssen mit einer kompatiblen Software betrieben werden, damit sie sich auf eine Blockchain verständigen können. Wird ein Änderungsvorschlag eingereicht, gibt es zwei Möglichkeiten, die Fork durchzuführen:

Soft-Fork

Eine Soft-Fork zeichnet sich durch ihre Abwärtskompatibilität aus. Es kann also Nodes im Netzwerk geben, die mit der neuen Software arbeiten. Dies führt nicht zu Kompatibilitätsproblemen: Die Nodes mit der alten Software akzeptieren auch die Meinungen der Nutzer, die sich nun für die neue Software entschieden haben. Andersherum jedoch möchten die Nutzer mit der neuen Software ihren Standard etablieren und setzen deshalb bei allen Blöcken auf ihr neues Verfahren.

Sobald die Mehrheit im Netzwerk erreicht wird, verständigen sich alle Nodes auf die neuen Blöcke.

  • „Alte“ und „neue“ Nodes arbeiten weiterhin zusammen

Hard-Fork

Diese Art von Fork ist nicht abwärtskompatibel – und bringt deshalb besondere Herausforderungen mit sich, um den Konsens im Netzwerk zu garantieren. Bestehende Nodes müssten ihre Software zwingend updaten, um die neuen Blöcke mit berücksichtigen zu können (bei der Soft-Fork konnten die bestehenden Nodes die neuen Blöcke aufgrund der Kompatibilität einfach mit berücksichtigen). Die Inkompatibilität der Versionen führt dazu, dass das Netzwerk gewissermaßen gesplittet wird: Nutzer, die sich für bzw. gegen eine Akzeptanz der Änderungen aussprechen, operieren auf verschiedenen Blockchains. Dies nennt man eine Blockchain Fork (nicht zu vergleichen mit einem Software Fork).

  • „Alte“ und „neue“ Nodes gehen getrennte Wege. Es enstehen zwei Blockchains

Wie wird eine Fork durchgeführt?

Sehen wir uns eine Fork am Beispiel Bitcoin an. Das Bitcoin Core Team kann möglicherweise Änderungen vorschlagen – sie jedoch nicht allein durchsetzen. Letzten Endes entscheiden die Miner darüber, welcher Blockchain sie folgen. Damit wird die Dezentralität gewahrt, weil auch hier dem Netzwerk die Entscheidungskompetenz überlassen wird. Das Core Team kann durchaus Weiterentwicklungen vorantreiben – muss sie allerdings immer wieder neu vor den Minern pitchen und auf eine Akzeptanz hoffen.

In der Vergangenheit hat es mit Ethereum und Ethereum Classic tatsächlich einen entscheidenden Split der Ethereum Blockchain gegeben: Nach dem DAO-Hack diskutierte die Community intensiv darüber, den Transfer der gehackten Coins rückgängig zu machen, indem man sich auf eine Blockchain einigt, die diesen Transfer nicht beinhaltet. Selbstverständlich ist Option A) Hacker darf seine Beute behalten mit Option B) Aktion des Hackers wird rückgängig gemacht nicht kompatibel. Das Vorgehen erfordert also eine Hard Fork. Und solange sich nicht 100% der Teilnehmer auf eine Version einigen, kommt es zum Split der Blockchain. Dies geschah, indem nun zwei Ethereum Blockchains existieren: Ethereum Classic (ohne Hard-Fork: der Hacker bleibt im Besitz der gestohlenen Coins) und Ethereum (mit Hard-Fork: unerwünschte Transaktion wurde rückgängig gemacht).

Mehr Informationen zu Ethereum und Ethereum Classic findest du hier.
Nun gibt es verschiedene Arten, eine Fork durchzuführen – nicht zu verwechseln mit den verschiedenen Arten von Forks.

Miner Activated Fork

In diesem Fall entscheiden die Miner im Netzwerk, ob eine Fork durchgeführt wird. Sie signalisieren, dass sie die Fork durchführen möchten, indem sie diese Information an bestätigte Blöcke anhängen. Wenn innerhalb der letzten 1000 Blöcke dann ein ausreichender Anteil an Minern die Fork signalisiert hat, werden die Änderungen durchgesetzt. Beispielsweise wird die neue Version ab 75% Zustimmung gültig, ab 95% werden sogar alte Blöcke abgewiesen, die nicht mit der neuen Version gekennzeichnet sind.

User Activated Soft Fork (UASF)

Die User Activated Soft Fork (UASF) ist eine Fork, die durch eine Mehrheitsentscheidung unter den Full Nodes herbeigeführt wird. Sie wird auf ein bestimmtes Datum terminiert, an dem die Mehrheit der Full Nodes dieser zustimmen muss, damit die Fork wirklich zustande kommt.

Miner Activated Soft Fork (MASF)

Bei einer Miner Activated Soft Fork (MASF) entscheiden die Miner mit ihrer Rechenpower als Stimmrecht über die Fork und initiieren sie. Dies macht den Prozess effizienter, da die Full Nodes die Änderungen im Anschluss übernehmen können. Allerdings bringt die MASF Risiken mit sich, weil das Netzwerk sich auf die Rechenpower als Maßstab verlässt. So kann die Rechenpower beispielsweise aussagen, dass die Soft Fork stattfindet, tatsächlich arbeiten die Miner danach aber mit der alten Version ohne die Soft Fork weiter.