Website-Icon BitcoinBlog.de – das Blog für Bitcoin und andere virtuelle Währungen

Nun, da SegWit kommt: Wieviel Kapazität setzt das Upgrade wirklich frei?

Stairs. Bild von Steven Guzzardi via flickr.com. Lizenz: Creative Commons

Mit SegWit2x steht fest: SegWit wird aktiviert werden. Die Blocksize wird nun durch eine Blockweight ersetzt. Die Kapazität wird steigen, es gehen mehr Transaktionen in die Blockchain, die Gebühren werden sinken. Wie und in welchem Umfang ist aber nicht ganz leicht zu erklären. Eine kleine Einführung in das Blockweight-Limit.

In den letzten Wochen wird nicht mehr darum gestritten, ob SegWit aktiviert oder nicht – sondern darum, wie und wann. SegWit2x möchte SegWit und eine 2mb Hardfork durchsetzen. Zunächst wird dafür SegWit aktiviert. Anders als zunächst beabsichtigt, wird dies auf eine Weise geschehen, die die breiteste mögliche Kompatibilität mit bestehender Software hat. Damit sind die bestehenden Core Nodes ab Version 0.13.1 und sogar die UASF-Nodes im Team.

Sprich: Die Allianz aus Minern und Unternehmen, die 80 Prozent des Ökosystems repräsentieren soll, wird SegWit aktivieren. Und dies noch vor dem 1. August. Die UASF-Bewegung, könnte man sagen, hat ihr Ziel erreicht.

Aber, was genau macht SegWit nun mit der Kapazität? Manchmal heißt es, SegWit sei eine „2mb Softfork“, manchmal gar eine „4mb Softfork“, und dann wieder, dass SegWit nur 1,5 oder 1,8 mb Kapazität liefert. Was dennn nun? Wie verhält es sich mit dem sehnsüchtig erwarteten Bonus-Platz für Transaktionen durch SegWit?

Gewicht anstatt Größe

SegWit verändert die Kapazität auf zwei Weisen.

Erstes führt SegWit ein neues Transaktionsformat ein. Dieses steckt die Signaturen – also die digitalen Unterschriften – in ein Extra-Paket. Alte Nodes sehen nur Platzhalter, während Nodes mit SegWit-Update die Signaturen weiterhin sehen und validieren können. Das hat einige Vorteile, wie dass es die Malleability und das Quadratic Scaling beseitigt, aber darum geht es hier nicht. Hier geht es um die Kapazität. Denn Signaturen machen rund 60 Prozent der Transaktionsdaten aus. Wenn die Nodes, die bisher ein Limit von 1mb auf die Blocksize durchsetzen, nicht länger die Signaturen speichern müssen, steigt die Kapazität des Systems. Klar.

Zweitens ersetzen die SegWit-Nodes – unter anderem die Miner – die Blocksize mit der Blockweight. Die Formel für diese ist etwas komplizierter als das simple blocksize > 1mb. Die Miner dürfen nun Blöcke bilden, solange diese die folgende Bedingung erfüllen:

4 * Non-Segwit-Data + 1 * SegWit-Data <= 4000 Kilobyte

Schauen wir uns mal an, was das bedeutet. Zuerst nehmen wir die sogenannten „Non-SegWit-Daten“. Diese umfassen alles, was nicht in das SegWit-Extra-Paket ausgelagert wurde: ID, Sender, Empänger, Betrag, alte Signaturen. Die Größe dieser Daten wird dann mit 4 multipliziert. Anschließend fügen wir dazu noch ein Mal die durch SegWit ausgelagerten Signatur-Daten hinzu. Das, was dabei rauskommt, darf maximal 4 mb groß sein.

Dieser „SegWit-Discount“ hat mehrere Gründe. Einer ist, dass man die Signatur-Daten sehr leicht prunen, also aus der Blockchain löschen kann, ohne die ID der Transaktion zu invalidieren. Die langfristige Belastung des System ist durch diese Daten geringer.

Aber schauen wir uns an, welche Kapazität SegWit nun tatsächlich gibt. Welche Blocksize verbirgt sich hinter der Weight?

Von Gewicht zurück zur Größe

Für Nicht-Mathematiker ist es nicht so einfach, von der Blockweight zurück zur Blocksize zu kommen. Man muss ein wenig herumrechnen, um die Formel zu finden, mit der man ausrechnet, wie viel Kilobyte an Transaktionen in einen solchen SegWit-Block passen.

Dazu braucht man zwei Variablen: Erstens muss man wissen, wie hoch der Anteil von SegWit-Transaktionen an allen Transaktionen ist (m). Das ist die schwierigste Frage. Wenn niemand SegWit-Transaktionen benutzt, wird es auch keine Kapazitätserhöhung geben. Danach muss man noch wissen, welchen Anteil die Signaturen an der Blocksize haben (n). Diese Frage ist relativ einfach zu beantworten.

Wenn man mit diesen beiden Variablen und der Blockweight-Formel ein wenig herumjongliert, kommt man schließlich auf einen Weg, wie man das Blockweight in die Blocksize umrechnet. Ich habe mit meiner Formel ein einfaches Javascript geschrieben, das die tatsächliche Kapazität mit verschiedenen m und n durchspielt. Da ich weder Mathematiker, noch Programmierer bin, habe ich jemanden gesucht, der es für mich prüft. Jochen Hoenicke, IT-Wissenschaftler an der Universität Freiburg und Bitcoin-Experte, hat die Formel für mich vereinfacht und ein wenig korrigiert. Aber im großen und ganzen hat es gepasst.

Die Kapazität steigt mit der steigenden Benutzung von SegWit-Adressen. Logisch. Schauen wir an, wie das genau läuft.

Unsicherheiten

Zunächst aber müssen wir zu dem kommen, was wir nicht wissen. Die Frage nach dem Anteil der Signaturen ist relativ einfach zu beantworten. Jochen Hoenicke hat die Anteile der Signaturen in den Blöcken seit dem Genesis Block aufgelistet. Er erklärt, dass Signaturen seit rund zwei Jahren konstant 60-63 Prozent des Platzes in den Blöcken einnehmen. Damit wäre schon mal klar: n = 60 bis 65.

Etwas schwieriger ist die Frage, ob SegWit-Transaktionen etwa 10 Prozent mehr Platz als normale Transaktionen brauchen. In der derzeitigen Version, der sogennanten „Nested P2SH“ Adressen, wird das so sein. Für die Zukunft sind jedoch native SegWit-Adressen vorgesehen, bei denen die Extradaten wegfallen. In meiner Simulation bin ich vom bisher verfügbaren Adressformat ausgegangen, da das Upgrade zu nativen SegWit-Adressen nicht ganz trivial ist.

Der entscheidende Faktor ist jedoch die SegWit Durchdringung m. Hierfür gibt es keine Daten, da man nicht messen kann, wie lange das Bitcoin-Ökosystem brauchen wird, um ein neues Transaktionsformat anzunehmen. Es ist unmöglich, hier eine harte Zahl zu finden. Man kann lediglich einige Anhaltspunkte zusammenklauben und eine grobe, unverbindliche Spanne schätzen.

Wie breitet sich SegWit im Netzwerk aus?

Gewöhnlich wird der Kapazitätsgewinn von SegWit mit 2mb angegeben. Diese Schätzung ist – wenn überhaupt – nur realistisch, wenn man davon ausgeht, dass jede gesendete Transaktionk SegWit benutzt. Für die kommenden sechs Monate dürfte dies unrealistisch sein.

Was muss passieren, damit wir auf 100 Prozent Segwit-Transaktionen kommen? Im Kern muss das gesamte UTXO-Set ausgetauscht werden. Alle auf der Blockchain gespeicherten Inputs (Münzen) müssen von normalen Adressen auf SegWit-Adressen versendet werden. Erst dann können die Münzen durch die Auslagerung der Signatur Kapazität schaffen. Derzeit besteht das UTXO Set aus 50 Millionen Inputs oder knapp 2 Gigabyte Daten. Um sie kompett auszuwechseln, bräuchte die Blockchain die vollständige Kapazität von zwei Wochen.

Es ist also anzunehmen, dass dies sehr langsam vor sich gehen wird und vermutlich niemals vollständig geschehen sein wird. Zunächst aber entfaltet SegWit seine Wirkung graduell.

Schätzungen

Wie lange wird es dauern, bis nennenswerte Teile des UTXO ausgetauscht sind? Wieviel Kapazität ist für die kommenden sechs Monate zu erwarten? Ich skizziere zwei Argumente, die für eine Spanne von etwa 40-80 Prozent in 6 Monaten sprechen:

Insgesamt kann man davon ausgehen, dass die SegWit-Durchdringung in einem halben Jahr bei maximal 85 Prozent liegt, vermutlich aber deutlich tiefer, eventuell sogar unter 50 Prozent. Im schlechtesten Fall (50 Prozent) bedeutet dies eine Blocksize von 1,25 mb. Im besten Fall, bei 85 Prozent, wären es etwa 1,45 mb.

Natürlich wird diese Größe weiter ansteigen. Wenn sich native SegWit-Adressen langsam durchsetzen, kann sich die Kapazität auf bis zu 1,75 mb erhöhen. Und wenn die SegWit-Durchdringung dann 90 bis 95 Prozent erreicht, werden auch Blockgrößen von mehr als 1,8 mb drin sein.

Die mobile Version verlassen