Hinweis: Diese Seite ist ernsthaft veraltet und wird größtenteils nicht gewartet; aufgrund vergangener Vorfälle von Edit-Warring wurde sie kaum einer Peer-Review unterzogen.

Ein vollständiger Bitcoin-Knoten könnte so modifiziert werden, dass er auf viel höhere Transaktionsraten skaliert, als sie heute zu beobachten sind, vorausgesetzt, der Knoten läuft auf einem High-End-Server und nicht auf einem Desktop. Bitcoin wurde entwickelt, um leichtgewichtige Clients zu unterstützen, die nur kleine Teile der Blockchain verarbeiten (siehe vereinfachte Zahlungsverifizierung weiter unten für weitere Details dazu).

Bitte beachten Sie, dass diese Seite existiert, um Berechnungen über die Skalierbarkeit eines Bitcoin Full Nodes und Transaktionen auf der Blockchain ohne Berücksichtigung der Netzwerksicherheit und Dezentralisierung zu geben. Sie ist nicht dazu gedacht, die Skalierbarkeit alternativer Protokolle zu diskutieren oder philosophische Debatten zusammenzufassen. Erstellen Sie alternative Seiten, wenn Sie das tun wollen.

Hinweis für die Leser

Wenn Techniker davon hören, wie Bitcoin funktioniert, bleiben sie häufig bei dem Wort „Flooding“ stehen und sagen „Oh mein Gott, das kann nicht skalieren!“. Der Zweck dieses Artikels ist es, ein extremes Beispiel zu nehmen, die Spitzen-Transaktionsrate von Visa, und zu zeigen, dass bitcoin technisch diese Art von Rate erreichen könnte, ohne irgendeine Art von fragwürdiger Argumentation, Änderungen im Kerndesign oder nicht existierende Overlays. Als solches ist es nur ein extremes Beispiel – kein Plan dafür, wie bitcoin wachsen wird, um breitere Bedürfnisse zu befriedigen (als dezentrales System ist es die bitcoin nutzende Öffentlichkeit, die entscheidet, wie bitcoin wächst) – es ist nur ein Argument, das zeigt, dass das Kerndesign von bitcoin viel besser skalieren kann, als eine intelligente Person zunächst vermuten könnte.

Dan kritisiert zu Recht die hier vorgestellte Analyse, indem er darauf hinweist, dass ein Betrieb in dieser Größenordnung den dezentralen Charakter von Bitcoin erheblich einschränken würde: Wenn man viele Terabytes an Speicherplatz benötigt, um einen „voll validierenden“ Knoten zu betreiben, dann werden es weniger Leute tun, und alle, die es nicht tun, müssen darauf vertrauen, dass diejenigen, die es tun, ehrlich sind. Dan scheint (aus seinen Folien) mit diesem Argument zu weit gegangen zu sein: Er scheint zu suggerieren, dass dies bedeutet, dass Bitcoins von der Art von Zentralbanken kontrolliert werden, die heute üblich sind. Seine Analyse scheitert aus zwei Gründen (und der zweite ist der Fehler, dass diese Seite etwas irreführend ist):

Erstens, selbst in der astronomischen Größenordnung, die hier dargestellt wird, liegt die erforderliche Kapazität durchaus im Bereich von (wohlhabenden) Privatpersonen, und würde es sicherlich auch zu einem zukünftigen Zeitpunkt sein, wenn diese Art von Kapazität erforderlich wäre. Ein System, das Privatpersonen oder zumindest kleine Gruppen von Privatpersonen auf eine Stufe mit Zentralbanken stellt, kann kaum als zentralisiert bezeichnet werden, obwohl es weniger dezentralisiert wäre als der heutige Bitcoin. Das System könnte auch nicht zu dieser Art von Skalierung gelangen, ohne dass die Bitcoin-Nutzer gemeinsam zustimmen, die maximale Blockgröße zu erhöhen, so dass es kein Ergebnis ist, das ohne die Zustimmung der Bitcoin-Nutzer eintreten kann.

Zweitens, und das ist am wichtigsten, geht es bei der hier beschriebenen angenommenen Skalierung darum, dass Bitcoin das Visum ersetzt. Dies ist ein schlechter Vergleich, da Bitcoin allein aus Gründen, die nichts mit der Skalierung zu tun haben, kein perfekter Ersatz für Visa ist: Bitcoin bietet zum Beispiel keine sofortigen Transaktionen, keinen Kredit oder verschiedene Mechanismen zur Betrugsbekämpfung (die einige Leute wollen, auch wenn nicht jeder sie will). Bitcoin ist ein vollständigerer Ersatz für Schecks, Überweisungen, Zahlungsanweisungen, Goldmünzen, CDs, Sparkonten usw. und würde bei breiter Akzeptanz wahrscheinlich die Verwendung von Kreditkarten ersetzen, die von diesen anderen Dingen besser bedient würden, wenn sie online besser funktionieren würden.

Bitcoin-Nutzer beschönigen diese Tatsache manchmal zu schnell, weil die Leute zu schnell dabei sind, sie als Fehler zu bezeichnen, aber das ist unfair. Kein System ist für alle Zwecke ideal, und Bitcoin hat ein breiteres Spektrum an Eigenschaften als die meisten Geldinstrumente. Wenn die Bitcoin-Gemeinschaft nicht bereit ist, darauf hinzuweisen, dass einige Dinge besser von anderen Systemen erledigt werden könnten, dann wird es leicht, Strohmann-Argumente vorzubringen: Wenn wir zugeben, dass bitcoin als Fußbodenwachs und Wüstenbelag verwendet werden kann, wird immer jemand darauf hinweisen, dass es nicht das beste Fußbodenwachs oder der beste Wüstenbelag ist.

Es ist trivial, Zahlungsabwicklungs- und Kreditsysteme _auf_ bitcoin aufzubauen, sowohl klassische (wie Visa selbst!) als auch „dezentrale“ wie Lightning. Diese Systeme könnten höhere Transaktionsvolumina mit geringeren Kosten abwickeln und häufig mit dem Bitcoin abrechnen, der ihnen zugrunde liegt. Diese könnten andere Techniken mit anderen Kompromissen als Bitcoin verwenden, aber immer noch von Bitcoin unterstützt und denominiert werden, so dass sie immer noch von der fehlenden zentralen Kontrolle profitieren. Wir sehen die Anfänge davon heute mit Bitcoin-Austausch- und Wallet-Diensten, die sofortige Zahlungen zwischen Mitgliedern ermöglichen.

Diese Dienste würden von der stabilen, inflationsresistenten Bitcoin-Währung profitieren, die Nutzer würden die Vorteile von sofortigen Transaktionen, Krediten und Betrugsbekämpfung genießen, und Bitcoin insgesamt würde von einer verbesserten Skalierung durch das ausgelagerte Transaktionsvolumen profitieren, ohne seinen dezentralen Charakter zu gefährden. In einer Welt, in der Bitcoin weit verbreitet wäre, würden die Zahlungsverarbeitungssysteme wahrscheinlich niedrigere Preise haben, weil sie mit Roh-Bitcoin-Transaktionen konkurrieren müssten, sie könnten sich aber auch niedrigere Preise leisten, weil häufige Bitcoin-Abrechnungen (und Zero-Trust-Bitcoin-Treuhändertransaktionen) ihr Risiko verringern würden. Dies gilt umso mehr, als es denkbar ist, dass Bitcoin so skaliert, dass sie vollständig ersetzt werden können, auch wenn dies aufgrund der daraus resultierenden geringeren Dezentralisierung nicht die beste Idee wäre.

Skalierbarkeitsziele

VISA wickelt im Durchschnitt etwa 2.000 Transaktionen pro Sekunde (tps) ab, was einer täglichen Spitzenrate von 4.000 tps entspricht. Sie hat eine Spitzenkapazität von etwa 56.000 Transaktionen pro Sekunde, von der sie jedoch selbst in Spitzenzeiten nie mehr als ein Drittel nutzt.

PayPal hingegen wickelte Ende 2014 rund 10 Millionen Transaktionen pro Tag ab, was einem Durchschnitt von 115 tps entspricht.

Lassen Sie uns 4.000 tps als Anfangsziel nehmen. Wenn wir wollen, dass Bitcoin alle Wirtschaftstransaktionen weltweit, einschließlich Bargeld, abwickelt, wäre das natürlich viel höher, vielleicht eher im Bereich von ein paar hunderttausend tps. Und da wir in der Lage sein müssen, DoS-Angriffen zu widerstehen (mit denen VISA nicht zu kämpfen hat), würden wir weit über die Standard-Spitzenraten hinaus skalieren wollen. Die Auswahl eines Ziels ermöglicht uns jedoch einige grundlegende Berechnungen, auch wenn sie etwas willkürlich ist.

Heute ist das Bitcoin-Netzwerk auf eine anhaltende Rate von 7 tps beschränkt, da das Bitcoin-Protokoll die Blockgröße auf 1MB beschränkt.

CPU

Das Protokoll hat zwei Teile. Die Knoten senden „inv“-Nachrichten an andere Knoten, um ihnen mitzuteilen, dass sie eine neue Transaktion haben. Wenn der empfangende Knoten diese Transaktion nicht hat, fordert er sie mit „getdata“ an.

Die großen Kosten sind die Krypto- und Blockkettenabfragen, die mit der Verifizierung der Transaktion verbunden sind. Die Verifizierung einer Transaktion bedeutet einige Hash- und ECDSA-Signaturüberprüfungen. RIPEMD-160 läuft mit 106 Megabyte/Sekunde (nennen wir es der Einfachheit halber 100) und SHA256 ist ungefähr gleich schnell. Also sollte das Hashing von 1 Megabyte etwa 10 Millisekunden dauern und das Hashing von 1 Kilobyte würde 0,01 Millisekunden dauern – schnell genug, dass wir es ignorieren können.

Bitcoin ist derzeit in der Lage (mit ein paar einfachen Optimierungen, die prototypisch sind, aber noch nicht zusammengeführt wurden), etwa 8000 Signaturüberprüfungen pro Sekunde auf einem Quad-Core Intel Core i7-2670QM 2.2Ghz Prozessor durchzuführen. Die durchschnittliche Anzahl der Eingaben pro Transaktion beträgt etwa 2, so dass wir die Rate halbieren müssen. Das bedeutet, dass 4000 tps mit einer einzigen Mainstream-CPU leicht zu erreichen sind.

Wie wir sehen können, bedeutet dies, dass, solange Bitcoin-Knoten mindestens 4 Kerne der Maschinen, auf denen sie laufen, auslasten dürfen, uns die CPU-Kapazität für die Signaturprüfung nicht ausgehen wird, es sei denn, Bitcoin bewältigt 100 Mal so viel Verkehr wie PayPal. Seit Ende 2015 wickelt das Netzwerk 1,5 Transaktionen pro Sekunde ab. Selbst wenn wir von einem enormen Wachstum der Popularität ausgehen, werden wir dieses Niveau für lange Zeit nicht erreichen.

Natürlich macht Bitcoin noch andere Dinge als die Signaturprüfung, am offensichtlichsten ist die Verwaltung der Datenbank. Wir verwenden LevelDB, die den Großteil der schweren Arbeit auf einem separaten Thread erledigt und sehr hohe Lese-/Schreiblasten bewältigen kann. Insgesamt wird die CPU-Nutzung von Bitcoin von ECDSA dominiert.

Netzwerk

Gehen wir von einer durchschnittlichen Rate von 2000tps aus, also nur VISA. Transaktionen variieren in der Größe von etwa 0,2 Kilobyte bis über 1 Kilobyte, aber im Durchschnitt ist es heute ein halbes Kilobyte.

Das bedeutet, dass man mit etwa 8 Megabits/Sekunde an Transaktionsdaten Schritt halten muss (2000tps * 512 Bytes) / 1024 Bytes in einem Kilobyte / 1024 Kilobytes in einem Megabyte = 0,97 Megabytes pro Sekunde * 8 = 7,8 Megabits/Sekunde.

Diese Art von Bandbreite ist heute sogar für private Verbindungen üblich und liegt sicherlich am unteren Ende dessen, was Colocation-Anbieter erwarten würden.

Wenn Blöcke aufgelöst werden, sendet das derzeitige Protokoll die Transaktionen erneut, selbst wenn ein Peer sie bereits zur Sendezeit gesehen hat. Wenn man dies behebt und aus den Blöcken nur eine Liste von Hashes macht, wäre das Problem gelöst und die für die Blockübertragung benötigte Bandbreite wäre vernachlässigbar. Obwohl diese Optimierung heute noch nicht vollständig implementiert ist, wird die Bandbreite für die Blockübertragung hier nicht berücksichtigt.

Speicher

Bei sehr hohen Transaktionsraten kann jeder Block über ein halbes Gigabyte groß sein.

Für die meisten vollständig validierenden Knoten ist es nicht erforderlich, die gesamte Kette zu speichern. In Satoshis Papier beschreibt er das „Pruning“, eine Möglichkeit, unnötige Daten über Transaktionen zu löschen, die vollständig ausgegeben wurden. Dadurch wird die Datenmenge, die für einen vollständig validierenden Knoten benötigt wird, auf die Größe der aktuellen, nicht ausgegebenen Ausgabegröße reduziert, zuzüglich einiger zusätzlicher Daten, die für die Behandlung von Reorgs benötigt werden. Im Oktober 2012 (Block 203258) gab es 7.979.231 Transaktionen, aber die Größe des nicht verbrauchten Ausgabesatzes beträgt weniger als 100 MB, was klein genug ist, um selbst auf recht alten Computern problemlos in den Arbeitsspeicher zu passen.

Nur eine kleine Anzahl von Archivierungsknoten muss die vollständige Kette bis zurück zum Entstehungsblock speichern. Diese Knoten können verwendet werden, um neue, vollständig validierende Knoten von Grund auf zu booten, sind aber ansonsten unnötig.

Der primär begrenzende Faktor für die Leistung von Bitcoin sind die Festplattenzugriffe, sobald die nicht verbrauchten Transaktionsausgabesätze nicht mehr in den Speicher passen. Sobald Festplatten zugunsten von SSDs abgeschafft werden, ist es gut möglich, dass der Zugriff auf den UTXO-Satz nie zu einem ernsthaften Engpass wird.

Optimierungen

Die obige Beschreibung gilt für die aktuelle Software, wobei nur geringfügige Optimierungen angenommen werden (die Art, die von einem Mann in ein paar Wochen durchgeführt werden kann und wurde).

Es besteht jedoch die Möglichkeit, in Zukunft noch größere Optimierungen vorzunehmen, allerdings auf Kosten einer gewissen zusätzlichen Komplexität.

CPU

Es existieren Algorithmen zur Beschleunigung der Stapelverifikation über elliptische Kurvensignaturen. Es ist möglich, ihre Signaturen gleichzeitig zu überprüfen, um eine zweifache Beschleunigung zu erreichen. Dies ist eine etwas komplexere Implementierung.

Vereinfachte Zahlungsverifizierung

Es ist möglich, eine Bitcoin-Implementierung zu bauen, die nicht alles verifiziert, sondern sich stattdessen entweder auf eine Verbindung zu einem vertrauenswürdigen Knoten verlässt oder auf eine hohe Schwierigkeit als Proxy für einen Gültigkeitsnachweis setzt. bitcoinj ist eine Implementierung dieses Modus.

Im SPV-Modus (Simplified Payment Verification), benannt nach dem Abschnitt in Satoshis Papier, der diesen Modus beschreibt, verbinden sich Clients mit einem beliebigen vollständigen Knoten und laden nur die Blockheader herunter. Sie verifizieren, dass die Kettenheader korrekt zusammenhängen und dass die Schwierigkeit hoch genug ist. Dann fordern sie vom entfernten Knotenpunkt Transaktionen an, die bestimmten Mustern entsprechen (z. B. Zahlungen an Ihre Adressen), und dieser liefert Kopien dieser Transaktionen zusammen mit einem Merkle-Zweig, der sie mit dem Block verbindet, in dem sie erschienen sind. Auf diese Weise wird die Merkle-Baumstruktur ausgenutzt, um einen Einschlussnachweis zu ermöglichen, ohne dass der gesamte Inhalt des Blocks benötigt wird.

Als weitere Optimierung können Block-Header, die tief genug vergraben sind, nach einiger Zeit weggeworfen werden (z. B. müssen Sie wirklich nur bis zu 2016 Header speichern).

Der Schwierigkeitsgrad, der erforderlich ist, um die Gewissheit zu erlangen, dass der entfernte Knoten Ihnen keine fiktiven Transaktionen liefert, hängt von Ihrem Bedrohungsmodell ab. Wenn Sie eine Verbindung zu einem Knoten herstellen, der als zuverlässig bekannt ist, spielt der Schwierigkeitsgrad keine Rolle. Wenn Sie einen zufälligen Knoten auswählen wollen, sollten die Kosten für einen Angreifer, eine Blocksequenz zu schürfen, die eine gefälschte Transaktion enthält, höher sein als der Wert, der durch den Betrug an Ihnen erzielt wird. Indem man ändert, wie tief der Block vergraben sein muss, kann man die Bestätigungszeit gegen die Kosten eines Angriffs abwägen.

Programme, die diesen Ansatz implementieren, können einen festen Speicher-/Netzwerk-Overhead im Null-Fall ohne Nutzung und eine Ressourcennutzung proportional zu empfangenen/gesendeten Transaktionen haben.

Siehe auch: Thin Client Security.

Verwandte Arbeiten

Es gibt ein paar Vorschläge zur Optimierung der Skalierbarkeit von Bitcoin. Einige davon erfordern eine Alt-Chain / Hard Fork.

  • Ultimative Blockchain-Kompression – die Idee, dass die Blockchain komprimiert werden kann, um „vertrauensfreie Lite-Knoten“ zu erreichen.
  • Das Finite-Blockchain-Papier, das die Aufteilung der Blockchain in drei Datenstrukturen beschreibt, die jeweils besser für ihren Zweck geeignet sind. Bei den drei Datenstrukturen handelt es sich um eine endliche Blockchain (die N Blöcke in der Vergangenheit aufbewahrt), einen „Kontobaum“, der den Kontostand für jede Adresse mit einem Guthaben ungleich Null aufbewahrt, und eine „Proof Chain“, die eine (ständig wachsende) abgespeckte Version der Blockchain ist.
  • Lightning Network, ein alternatives Protokoll für die Transaktionsabwicklung, bei dem die Knoten untereinander Micropayment-Kanäle einrichten und gelegentlich auf der Blockchain abrechnen. Gewöhnliche Nutzer interagieren in erster Linie oder nur mit Zahlungskanälen und nutzen die Blockchain nur für große Überweisungen und Cold Storage.

admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

lg