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:

  • Wenn wir das gute alte Pareto-Prinzip nehmen, nach dem 20 Prozent Arbeit 80 Prozent des Umsatzes machen, können wir annehmen, dass 20 Prozent der Wirtschaft für 80 Prozent der Transaktionen verantwortlich sind. Diese 20 Prozent sind Plattformen wie Coinbase, BitPay, Blockchain.info. Bitcoin.de, Bitstamp und so weiter.
    Zwar existiert derzeit, soweit ich weiß, noch keine einfach zu benutzende Implementierung von SegWit in den Wallets. Aber es ist anzunehmen, dass dies nach der Aktivierung rasch geschehen wird und dass es den großen Plattformen gelingt, im Laufe von sechs Monaten vollständig auf SegWit umzusatteln. Wie dies geschieht, hängt davon ab, wie die Plattformen ihre Inputs verwalten. Börsen, die eine große Menge an Inputs verwalten und mit User-Guthaben verbinden, dürften auch nach SegWit noch recht lange alte Transaktionen versenden.
  • Bei den User-Wallets bin ich weniger optimistisch. Auch hier fehlt es noch fast überall an einer Implementierung in der Benutzeroberfläche, weshalb es zunächst kaum eine Nutzung von SegWit geben dürfte. Selbst nach einem Update wird es für viele User schwierig sein, die Upgrade mitzumachen, da dazu zum Teil der komplette Austausch der Wallet notwendig ist.

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.

About Christoph Bergmann (1057 Articles)
Das Bitcoinblog wird von bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder. Wenn Ihnen das Blog gefällt, freuen wir uns über Spenden an 1BvayiASVCmGmg4WUJmyRHoNevWWo5snqC. Jeder Satoshi wird dazu verwendet, um das Blog besser zu machen. Weitere Infos, wie Sie uns unterstützen können, finden Sie HIER. Gastbeiträge sind ebenfalls willkommen. Meinen öffentlichen PGP-Schlüssel sowie den Bitmessage-Schlüssel finden Sie HIER

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

  1. Michael Dallinger // 19. June 2017 at 12:37 // Reply

    Danke für den interessanten Beitrag. Für mich eigentlich eine wichtige Schlussfolgerung aus dem ganzen: Der Mempool wird sich durch die Aktivierung von SegWit nicht auf einmal rapide nach unten bewegen und in einigen Tagen komplett aufgelöst sein, sondern erst in den kommenden Wochen oder Monaten schrumpfen.

  2. Ein weiterer Punkt: SegWit ermoeglicht Lightning, das das Potential hat, einen Teil X der Transaktionen im Voraus zu “vermeiden”, indem es sie auf Layer-2 verlegt. Da LN-Transaktionen instantan und fast kostenlos sein werden, wird X wohl eher gross werden, vllt. werden so 80-90% aller Transaktionen garnicht erst auf die Main-Chain geschrieben werden muessen.

  3. TauNeutrino // 19. June 2017 at 13:44 // Reply

    Formel hat einen Fehler ‘>=’ muss ‘<=' sein.

  4. Haudegen123 // 19. June 2017 at 17:16 // Reply

    Hi Christoph,

    du weißt aber schon, dass SegWitx2 noch nicht einmal programmiert ist und somit nicht zur Nutzung bereit steht?

    Jeder der einen Block erstellt kann signalisieren was er will, dass auch wirklich ein SegWit kompatibler Client im Hintergrund läuft ist also keine Voraussetzung hierfür.

    Bitcoin Unlimited wurde auch von diversen Pools signalisiert, nur der Pool bitcoin.com war auch wirklich so “dumm” den BU Client laufen zu lassen und hat sich somit 12,5 Bitcoin durch die Lappen gehen lassen, als der generierte Block vom Rest des Netzwerks abgelehnt wurde.

    • Von SegWit2x gibt es seit Freitag die Alpha-Version als Build auf Github. Ich denke mal, die werden es schon schaffen, bis Ende Juli eine vollständig funktionierende Version rauszubringen 😉

  5. Was ist dran an dem Vorwurf: Craig Wright on “The Risks of Segregated Witness: Opening the Door to Mining Cartels”

    Gab es da schon Diskussionen bei Litecoin, etc. ?

  6. Ergänzungsfrage zum Beitrag von Frank von 17:32 h: … und was ist von der kritischen Bemerkung von Craig S. Wright “Segwit today ..seigniorage next”zu halten . (Ja ich musste diesen Begriff auch erst nachschlagen)

  7. hmm, interessant, ein bisschen spät… für diejenigen die es interessiert hier der Link:

    https://coingeek.com/risks-segregated-witness-opening-door-mining-cartels-undermine-bitcoin-network/

    ich weiss nicht genau ob ich darüber lachen soll oder nicht. Die Core-Evangilisten welche die bösen Miner der Geldgier bezichtigen, liefern genau denen die Steilvorlage für die Jahrundert-Abzokke? Würde mich freuen wenn ein kluger Kopf hier was darüber erzählen kann.

    • Craig Wright ist ja nun nicht gerade eine vertrauenswürdige Person. Hat behauptet er sei Satoshi Nakamoto und fingierte die Signatur um es zu beweisen.
      Übrigens SegWit2x ist NICHT SegWit 2 MB wie man meinen könnte .

      • Schade, hate konstruktive Antworten erwartet … oder es gibt einfach keine weiteren Info zu unseren Fragen und der Rest ist Spekulation …

    • ..obwohl ich die technischen Hintergründe nicht kenne, denke ich völlig ausreichende sicherheit ist, wenn man etwas nicht stehlen kann, ohne das es sehr bald bemerkt wird. – Sollte z.B zweifellos bewiesen werden, das die deutsche Bank absichtlich stiehlt, ist fuer diese bank das geschaeft für immer zu ende und alle anderen banken sind diskreditiert. Von rechtlicher handhabe jetzt mal ganz abgesehen..

      -Das ergibt logisch auf keine weise Sinn – es wäre den Baum fällen auf dem man lebt. Und dann auf dem Boden wütende kämpfe überleben müssen…

  8. Wenn man Signaturen oder sonstetwas in ein extra Paket packt, dann muß das extra Paket doch trotzdem übertragen und gespeichert werden? Also gewinnt man irgendwie nichts?
    Ranma

  9. sehr informatives video (9min,engl) über funktionierendes Lightning zwischen Bitcoincore(mit eclair-lightning implementation) und einer android-lightning wallet! – sehr cool ..und nur möglich mit segwit.

    so aufregend..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s