Dienstag, 25. Juli 2017

SegWit, SegWit2x, UASF – Was ist das?

Mit SegWit, Segwit2x und UASF fallen viele Begriffe in der Debatte über Bitcoin nach dem ersten August.
Was diese Begriffe bedeuten und welche Auswirkungen sie auf Bitcoin und die Nutzer haben, soll in dieser Reihe erklärt werden. 

Wer in den letzten Wochen die Debatten um Bitcoin sowie die Kursentwicklungen verfolgt hat, wird oft auf verschiedene Begriffe gestoßen sein. Viel wurde darüber geschrieben, ob im Kontext mit einem Kursanstieg oder einem Kursverfall zu rechnen ist und was man mit dem in Bitcoin angelegten Geld tun soll. Doch die Frage, was unter den genannten Begriffen konkret zu verstehen ist, kommt dabei etwas kurz. Deshalb sollen hier die wichtigsten Begriffe geklärt werden.

Der Anfang aller Überlegungen – die Skalierungsdebatte

Die Skalierungsdebatte sollte jedem bekannt sein: Mit dem steigenden Interesse an Bitcoin nimmt die Anzahl an Transaktionen zu. Um diese Transaktionen unumkehrbar zu machen und so eine Garantie für Zahlungssender und Zahlungsempfänger zu schaffen, muss diese Transaktion in einen Block eingefügt und so in der Blockchain integriert werden.
Die maximale Größe dieser Blöcke ist auf 1 MB begrenzt. Eine Transaktion ist laut Gavin Andersen ungefähr 250 Bytes groß, was bedeutet, dass in jedem Block 4.000 Transaktionen integriert werden können.
Da der Blockchain alle 10 Minuten ein neuer Block hinzugefügt wird bedeutet das, dass Bitcoin im Durchschnitt 7 Transaktionen pro Sekunde verarbeiten kann. Für ein weltweit agierendes Zahlungsnetzwerk ist das zu wenig.
Warum wird nicht einfach die Blockgröße erhöht? Viele größere Mining Pools hätten damit kein Problem. Eine Sorge, die im Rahmen der Blocksize Debatte geäußert wurde, ist, dass diese Erhöhung der Blockgröße mit einer Hard Fork einhergehen würde. Die von den Nodes und Minern genutzten Clients müssten ein Update erhalten. Sollte eine signifikante Anzahl an Nodes das nicht tun, würde das zu einem Chainsplit führen, es würde zwei Versionen von Bitcoin geben.
Die Erhöhung der Blockgröße würde außerdem die Dezentralisierung gefährden: Die operativen Kosten von Nodes werden ansteigen, so dass sich nicht mehr jeder das leisten kann. Schon jetzt nimmt die Zahl der Nodes ab, ein Trend, der durch derartige Entwicklungen beschleunigt werden könnte. Die Gefahr einer Hard Fork und einer schwindenden Dezentralisierung ist für viele ein zu großer Preis für ein paar Transaktionen mehr.

Man kann etwas paraphrasierend sagen, dass das Skalierungsproblem ebenfalls eines besitzt: Selbst eine Erhöhung der Blockgröße um einen Faktor zwei würde am Ende lediglich bedeuten, dass im Durchschnitt 14 Transaktionen pro Sekunde verarbeitet werden können. Ein Blick auf Transaktionsraten in globalen Netzwerken wie VISA zeigt, dass auch das viel zu langsam wäre. Entsprechend wurden weitere Lösungsvorschläge entwickelt, wovon Segregated Witness nebst seinen Variationen der bekannteste ist.

Segregated Witness – mehr als eine Lösung des Skalierungsproblems

Über Segregated Witness oder kurz SegWit wurde auf BTC-ECHO schon geschrieben. Dieser Artikel soll ein wenig auf technische Details eingehen und die Hintergründe zu Segregated Witness beleuchten.
Segregated Witness auf eine Lösung des Skalierungsproblems zu reduzieren würde zu kurz greifen. Bei SegWit handelt es sich um eine Datenstruktur, welche die bisherige Datenstruktur von Bitcoin ergänzt: jedem Block wird, neben dem durch die Transaktionen gebildeten Merkle Tree, ein “Witness” zur Seite gestellt. Dieser enthält alle Daten, mit denen die Validität einer Transaktion überprüft werden kann, aber nicht die Effekte einer Transaktion. Mit dem Witness lassen sich nun Transaktionen mit zwei Transaktions-IDs beschreiben: einer bekannten und auch bisher genutzten und einer, welche weitere Daten enthält.
Warum wird so ein Aufwand betrieben? Zum Einen kann die Größe der Witness-Daten zum Teil bei der Berechnung der Blockgröße ignoriert werden, was effektiv die Anzahl der Transaktionen, welche in einem Block gespeichert werden können, erhöht. Eine Blocksize-Erhöhung ohne Erhöhung der Blockgröße, sozusagen.
Durch effizientere Verarbeitung einzelner Transaktionen werden auch große Transaktionen, welche beispielsweise im Rahmen von Mining Rewards oder bei Crowdfundings vorkommen, schneller verarbeitet.
Ein weiterer wichtiger Vorteil ist, dass mit unbestätigten Transaktionen bedenkenlos gearbeitet werden kann. Das dient nicht einfach der Sicherheit des Netzes, sondern ebnet auch den Weg für das Lightning Network, einer Möglichkeit, off-chain Transaktionen fälschungssicher zu übertragen. Außerdem wird damit das Vertrauen in eine getätigte Transaktion erhöht – das Warten auf mehrere Bestätigungen ist dank Segregated Witness dann nicht mehr so erforderlich.
Schließlich ermöglicht SegWit eine Erweiterung von Script, der Skriptsprache von Bitcoin, ohne dass es eine Hard Fork benötigt. Zwar waren einfache Erweiterungen schon bisher möglich, indem zehn so genannte OP_NOP-Codes von Script mit neuen Funktionen versehen wurden, jedoch konnten komplexere Erweiterungen nicht implementiert werden. Da nun im Rahmen des Witness-Protokolls die Script-Versionsnummer angegeben wird, können diese schnell durch ein Update der Skript-Version behoben werden. Das ist eine äußerst spannende Entwicklung, da durch diese vergleichsweise einfache Erweiterungsmöglichkeit des Bitcoin-Protokolls der Weg für Smart Contracts oder Side Chains offensteht.

Man sieht: Segregated Witness kann deutlich mehr als eine Antwort auf die Skalierungsdebatte sein, weshalb inzwischen auch ein unter anderem SegWit-unterstützendes Proposal seitens der Miner unterstützt wird. Wer tiefer in die Materie einsteigen will, sei auf das Bitcoin Improvement Proposal BIP141 sowie eine Darstellung der Vorteile von SegWit aus der Feder vom Bitcoin Core Team verwiesen.

SegWit, SegWit2x, UASF – Was ist das?

Mit SegWit, SegWit2x und UASF fallen viele Begriffe in der Debatte über die Skalierung von Bitcoin. Was bedeuten diese Begriffe konkret?

Segregated Witness hat mit SegWit2x und UASF zwei weitere Begriffe geprägt, welche aktuell in aller Munde sind. Auch auf BTC-ECHO wurde die Debatte um Segregated Witness, um das New York Agreement und seine Kritiker sowie um das radikale, als User Activated Soft Fork bekannte verfolgt. Hier sollen die technischen Hintergründe zu diesen Begriffen betrachtet werden.

SegWit2x – das beste aus zwei Welten

Bei SegWit2x handelt es sich um eine Kombination der Bitcoin Improvement Proposals BIP141, BIP102. BIP141 beschreibt Segregated Witness und wurde oben schon diskutiert. Mit BIP102 wurde von Jeff Garzik die Erhöhung der Blockgröße von 1MB auf 2MB vorgeschlagen. Dieser Vorschlag selbst war ein Kompromiss, falls BIP100 und BIP101 nicht anerkannt werden. Bei diesen so genannten Bitcoin Improvement Proposals handelt es sich um radikalere Ideen bezüglich Erhöhung der Blockgröße: BIP100 hatte ein dynamisches Limit, BIP101 ein 8MB-Limit im Sinn.
Die reine Erhöhung des Blockgrößen-Limits fand bei den Core-Entwicklern nie viel Gegenliebe, weshalb BIP102 nie in Bitcoin Core integriert wurde. Im New York Agreement wurde nun SegWit2x zu einer Kombination aus Segregated Witness und Erhöhung der Blockgröße.
Die Hoffnung ist, dass durch diese Kombination das Skalierungsproblem aus der Welt geschaffen wird und die Miner als wichtige Stakeholder auch stärker berücksichtigt werden. Dennoch würde eine Kombination, welche nur BIP141 und BIP102 beachtet, in einer abrupten Hard Fork enden – was niemand möchte. Der Ansatz von SegWit2x ist deshalb, die Blockgröße erst gegen Ende des Jahres einzuführen, konkret 144*90 Blöcke nach Einführung von Segregated Witness. So kann man erste Erfahrung mit Segregated Witness sammeln.
Bei SegWit2x handelt es sich inzwischen um mehr als einen Verbesserungsvorschlag. Im New York Agreement haben namhafte Unternehmen sich zur Implementierung von SegWit2x verpflichtet. Ebenso wurde ein neuer Bitcoin Client basierend auf dem Bitcoin Core Client 0.14 geschrieben. Dadurch kann diese Version im Prinzip wieder mit dem durch Bitcoin Core definierten Main Branch vereint werden.
Ob das jedoch gewollt wird ist eine andere Frage: verschiedene Unterstützer von SegWit2x möchten die Möglichkeit nutzen, ob die Governance aus den Händen vom Core-Team zu entreißen.

UASF – SegWit auf die Harte Tour

Neben SegWit und SegWit2x ist das dritte große Schlagwort heutzutage UASF. BTC-ECHO hat über die User-Activated Soft Fork schon berichtet, hier soll wieder ein tiefgehender Blick auf diesen Ansatz geworfen werden.
Was bei der Diskussion der Improvement Proposals bisher verschwiegen wurde, ist die Frage: Wie kommt es eigentlich zu einem Konsens? Natürlich kann jeder seiner Meinung in verschiedenen Foren Gehör verschaffen, aber das sind Äußerungen jenseits der Bitcoin-Blockchain.
Nodes können die Software upgraden, doch gibt es für Miner noch eine weitere Möglichkeit, innerhalb des Bitcoin-Netzwerkes ihre Position zu einem Beschluß zu äußern. Bezüglich der Implementierung sogenannter Soft Forks existieren verschiedene Ansätze; einer davon, der auch implementiert wurde, ist BIP9. In diesem Proposal ist geregelt, wie Miner ihre Meinung kundtun. Für genauere technische Details sei auf einen Artikel auf Bitcoin Core oder das Bitcoin Improvement Proposal selbst verwiesen.
Gemäß dem Protokoll wird eine Soft Fork gemäß BIP9 nicht aktiviert, sofern nicht 95% der Miner ihre Zustimmung zu dieser Änderung geäußert haben. Nun ist das Problem, dass dies die Entscheidung, Bitcoin weiterzuentwickeln, in die Hände der großen Mining Pools legt. Miner können so schnell jegliche Weiterentwicklung bremsen. Das ist besonders ärgerlich, wenn verschiedene andere Stakeholder wie die Entwickler, Wallet-Hersteller, Börsen, Node-Hoster und viele Nutzer selbst für eine bestimmte Neuerung sind. 

Ein Problem ist auch die explizite Forderung einer Zustimmung. Wenn etwas mehr als 5% der Miner nicht einmal gegen die neue Soft Fork, aber einfach untätig sind und nicht gemäß BIP9 ihre Zustimmung signalisieren, kann kein Proposal angenommen werden.
Dies war auch die Sorge seitens verschiedener Segregated Witness Anhänger. Segregated Witness wird durch eine virtuelle Erhöhung der Blockgröße sowie durch eine größere Sicherheit bei unbestätigten Transaktionen den Bedarf an Transaktionsbestätigungen senken – was zu einer geringen Bereitschaft hoher Transaktionsgebühren führen würde. Und so waren nicht unbedingt alle Miner von Segregated Witness begeistert.
Ein Entwickler, der unter dem Pseudonym Shaolinfry bekannt ist, sah darin einen Missbrauch der oben beschriebenen Governance. Er hat mit BIP148 und BIP149 zwei Proposals geschrieben, deren Ziel es ist, die Miner zu Segregated Witness zu zwingen – durch einen nutzeraktivierten Soft Fork. Hier sei der Fokus auf BIP148; bei BIP149 handelt es sich um einen Alternativplan.
Ein Soft Fork ist dabei eine Änderung des Bitcoin-Protokolls, die abwärts kompatibel ist. Nodes, welche das Update nicht durchführen, bleiben weiterhin Teil des Netzwerkes. Bei Segregated Witness handelt es sich, im Gegensatz zu einer Vergrößerung der Blockgröße, um eine solche Soft Fork.
Nutzeraktiviert ist diese Soft Fork, indem diese zu einem bestimmten, zuvor definierten, Zeitpunkt aktiviert wird. Im Fall von BIP148 bedeutet das, dass Nodes mit einem BIP148 unterstützenden Bitcoin Core Client Blöcke von Minern, die keinen Support für Segregated Witness senden, nicht akzeptieren werden. Damit würde diesen Minern dann der entsprechende Reward verloren gehen.
Der Gedanke ist also, so einen Anreiz bei Minern zu schaffen, sich für Segregated Witness auszusprechen. Auch normale Nodes, welche nicht BIP148 unterstützen, würden im Idealfall mitbekommen, dass die Miner für Segregated Witness sind und die Soft Fork wäre aktiviert. Für weitere Informationen sei auf BIP148 selbst verwiesen.
Auch dieser Vorschlag birgt einige Risiken in sich. Wegen dieser Risiken waren auch unter Freunden von Segregated Witness viele Kritiker. Gregory Maxwell, der CTO von Blokstream und Suhas Daftuar, Co-Founder von Chaincode Labs sind Bitcoin Core-Entwickler und sehen BIP148 als zu disruptiv an.

BIP91 – die Rettung vor der Soft Fork

Um sich vor verschiedenen Problemen Anfang August zu schützen, müssen bis dahin entweder für eine genügend hohe Zustimmung hinsichtlich Segregated Witness erreicht oder ein entsprechendes Protokoll schon aktiviert sein. Hier kommt BIP91 ins Spiel. Bei diesem Bitcoin Improvement Proposal handelt es sich ähnlich wie bei BIP9 um eines, welches die Konsensfindung regeln will. Ein wichtiger Unterschied ist, dass es hier lediglich 80% Zustimmung braucht und deutlich weniger Blöcke zwischen Zustimmung und Aktivierung von SegWit2x gemined werden müssen. Wenn bis Anfang August BIP91 durchkommt, wird man sich nicht vor etwaigen Komplikationen einer User Activated Soft Fork fürchten müssen. Aktuell sieht es auch danach aus – von den letzten 144 Blöcken sprachen sich fast 90% für BIP91 aus.
Soweit zu den die letzten Tage prägenden Begriffen. Die aktuelle Entwicklung lässt hoffen, dass die Situation um den ersten August nun eher unbedenklich ist. Was jedoch nicht heißt, dass nun alles im Bitcoin-Ökosystem in Ordnung ist – im November wird der 2x-Part vom SegWit2x implementiert. Und hier würde es eine Hard Fork brauchen!


Quelle:  https://www.btc-echo.de/segwit-segwit2x-uasf-was-ist-das-teil-2/

Auf BTC-Echo gibt es ein Tutorial zu allen Themen bezüglich Bitcoins:  https://www.btc-echo.de/was-sind-bitcoins/

Keine Kommentare:

Kommentar veröffentlichen