Antworten>Erfahren Sie mehr über Skalierbarkeit und Leistung>Warum Blockchains langsamer werden
Warum Blockchains langsamer werden
// Tags
Blockchain langsamBlockchain-Leistung
TL;DR: Blockchains werden langsamer, wenn die Nachfrage nach Blockplatz die Verarbeitungskapazität des Netzwerks übersteigt. Die häufigsten Ursachen sind Netzwerküberlastung (zu viele Transaktionen, die um begrenzte Blockkapazität konkurrieren), State Bloat (wachsender Speicherbedarf, der den Rechenaufwand für die Verarbeitung jedes Blocks erhöht), Konsens-Overhead (Kommunikationskosten, die mit der Anzahl der Validatoren skalieren) und infrastrukturelle Einschränkungen (langsame Knoten, RPC-Endpunkte mit hoher Latenz und ineffiziente Datenpipelines). Verlangsamungen äußern sich in längeren Bestätigungszeiten, höheren Gebühren, veralteten Daten in Anwendungen und einer verschlechterten Benutzererfahrung. Einige Ursachen sind dem Blockchain-Design inhärent, während andere durch eine bessere Infrastruktur gemildert werden können.
Die einfache Erklärung
„Langsam“ bedeutet je nach Fragesteller etwas anderes. Für einen Endnutzer, der eine Transaktion einreicht, bedeutet „langsam“, dass er Minuten oder Stunden statt Sekunden auf die Bestätigung warten muss. Für einen Entwickler, der eine Datenpipeline betreibt, bedeutet „langsam“, dass er hinter die Kettenspitze zurückfällt und veraltete Daten ausliefert. Für einen DeFi-Händler bedeutet „langsam“, dass er Kursaktualisierungen verspätet erhält und Arbitrage-Chancen verpasst. Jede Art von Verlangsamung hat unterschiedliche Ursachen und erfordert unterschiedliche Lösungen.
Auf Protokollebene unterliegen Blockchains festen Leistungsgrenzen, die durch ihren Konsensmechanismus, ihre Blockparameter und ihre Ausführungsumgebung bestimmt werden. Diese Grenzen sind beabsichtigt und kein Zufall. Sie sind der Preis für Dezentralisierung und Sicherheit. Wenn die Nachfrage an diese Grenzen stößt, bricht das Netzwerk nicht zusammen. Es passt seine Leistung schrittweise an, indem es die Gebühren erhöht (wodurch Transaktionen mit geringerem Wert ausgeschlossen werden) und die Bestätigungszeiten verlängert (wodurch Nutzer länger warten müssen). Aus Sicht der Nutzer fühlt sich diese „kontrollierte Leistungsminderung“ jedoch immer noch langsam an.
Auf der Infrastrukturebene funktioniert die Blockchain selbst vielleicht einwandfrei, doch die Tools, die Ihre Anwendung für die Interaktion mit ihr nutzt, könnten den Engpass darstellen. Ein langsamer oder überlasteter RPC- endpoint , verursacht bei jeder Anfrage zusätzliche Latenz. Eine auf Polling basierende Datenpipeline führt zu Verzögerungen zwischen der Blockerstellung und der Verfügbarkeit der Daten. Ein unterdimensionierter Knoten fällt hinter die Kettenspitze zurück. Diese Verlangsamungen auf Infrastrukturebene sind oft schwerwiegender (und leichter zu beheben) als solche auf Protokollebene.
Ursache
Was passiert?
Wer kann sich damit befassen?
Netzwerküberlastung
Die Nachfrage übersteigt die verfügbaren Blockkapazitäten, sodass Gebühren und Wartezeiten steigen
Nutzer (Gebühren) und App-Design
Staatsapparat
Mit zunehmender Größe steigen die Kosten für die Verarbeitung jedes Blocks
Protokoll- und Kernentwickler
Konsens-Overhead
Die Kommunikation mit dem Validator führt zu unvermeidbaren Verzögerungen
Protokollentwurf
Infrastrukturengpässe
Langsames RPC, Polling und entfernte Knoten verursachen Verzögerungen
Entwickler, direkt
Netzwerküberlastung
Netzwerküberlastung ist die häufigste und offensichtlichste Ursache für Verzögerungen in der Blockchain. Wenn mehr Transaktionen eingereicht werden, als in den nächsten Block passen, bildet sich ein Rückstau im Mempool. Blockproduzenten wählen zuerst die Transaktionen mit den höchsten Gebühren aus, während Transaktionen mit niedrigeren Gebühren warten müssen. Bei starker Überlastung kann der Mempool Hunderttausende ausstehender Transaktionen enthalten, wobei sich die Bestätigungszeiten von Sekunden bis zu Stunden erstrecken.
Netzüberlastung ist von Natur aus sporadisch. Die meiste Zeit über arbeiten beliebte Blockchains weit unterhalb ihrer Kapazitätsgrenzen, und Transaktionen werden schnell und kostengünstig bestätigt. Bestimmte Ereignisse lösen jedoch Nachfragespitzen aus, die das Netzwerk überlasten. NFT-Mints, Token-Launches, Airdrop-Ansprüche, Marktcrashs und der Handel mit viralen Meme-Token führen allesamt zu Transaktionsspitzen, die das normale Niveau bei weitem übersteigen. Während der „Otherside“-Mint von Yuga Labs im Mai 2022 stiegen die Gaspreise auf Ethereum auf über 8.000 Gwei – das Hundertfache des normalen Niveaus.
Die wichtigste Erkenntnis ist, dass eine Überlastung zwar die Bestätigung einzelner Transaktionen verlangsamt, den Durchsatz des Netzwerks jedoch nicht verringert. Die Blockchain erzeugt weiterhin Blöcke in ihrer normalen Geschwindigkeit (alle 12 Sekunden bei Ethereum, alle 400 ms bei Solana). Was sich ändert, ist die Wartezeit, bis eine Transaktion in einen Block aufgenommen wird. Das Netzwerk verarbeitet weiterhin die gleiche Anzahl an Transaktionen pro Sekunde; es ist die Warteschlange der wartenden Transaktionen, die wächst.
Staatsaufblähung
Der „State Bloat“ ist eine langsamere, schleichendere Form der Verschlechterung der Blockchain. Jede Bereitstellung eines Smart Contracts, jedes neue Konto und jeder Eintrag zum Token-Guthaben trägt zum Zustand der Blockchain bei – also der Gesamtheit aller aktuellen Kontostände und Vertragswerte, die die Knoten im Arbeitsspeicher oder auf der Festplatte vorhalten müssen, um neue Transaktionen zu validieren. Mit zunehmendem Zustand steigen die Rechenkosten für das Lesen und Schreiben des Zustands während der Transaktionsausführung.
Auf Ethereum ist der State-Trie von nahezu null zum Start auf Hunderte von Gigabyte angewachsen. Jede Transaktion, die den State liest oder schreibt, muss diese Datenstruktur durchlaufen, und je größer sie wird, desto mehr Festplatten-E/A benötigt jeder Vorgang. Dies betrifft alle Knoten gleichermaßen, einschließlich derer, die von RPC-Anbietern betrieben werden. State-Bloat verursacht keine dramatischen, plötzlichen Verlangsamungen wie es bei einer Überlastung der Fall ist. Stattdessen erhöht er schrittweise die Grundkosten für die Verarbeitung jedes Blocks, was sich in etwas längeren Blockverarbeitungszeiten, höheren Mindest-Gas-Kosten für Operationen mit State-Zugriff und erhöhten Hardwareanforderungen für den Betrieb von Knoten äußern kann.
Mehrere Blockketten haben Lösungen zur Zustandsverwaltung eingeführt oder vorgeschlagen. Der EIP-4444 von Ethereum sieht vor, dass alte Blockdaten von Full Nodes gelöscht werden („History Expiry“). Vorschläge zur „State Rent“ würden Verträge für den von ihnen beanspruchten Speicherplatz belasten und so Anreize für eine Bereinigung schaffen. Das „Account Rent“-System von Solana verlangt bereits Mindestguthaben, damit Konten aktiv bleiben. Diese Ansätze versuchen, das Wachstum des Zustands zu steuern, doch die grundlegende Spannung zwischen „Blockchains merken sich alles“ und „Speicherplatz ist nicht kostenlos“ bleibt bestehen.
Konsens-Overhead
Der Konsensmechanismus ist der Prozess, durch den sich die Validatoren darauf einigen, welche Transaktionen in den nächsten Block aufgenommen werden sollen und in welcher Reihenfolge. Dieser Prozess führt naturgemäß zu einer Verzögerung, da die Validatoren miteinander kommunizieren müssen und die Kommunikation Zeit in Anspruch nimmt. Je mehr Validatoren am Konsens teilnehmen, desto mehr Nachrichten müssen ausgetauscht werden und desto länger dauert der Konsens.
Dies ist eine Dimension des Blockchain-Trilemmas. Ein Netzwerk mit vier Validatoren kann sehr schnell einen Konsens erzielen (geringe Latenz), ist jedoch stark zentralisiert. Ein Netzwerk mit 400.000 Validatoren (wie Ethereum) weist eine starke Dezentralisierung auf, erfordert jedoch ein ausgeklügeltes Konsensprotokoll mit mehreren Kommunikationsrunden, Bestätigungszeiträumen und Finalitäts-Checkpoints, die zwischen der Aufnahme eines Blocks und seiner Finalität eine Latenz von mehreren Minuten verursachen.
Einige Ketten nutzen einen „Leader“-basierten Konsens, bei dem ein einzelner Validator einen Block vorschlägt und andere diesen validieren, was den Kommunikationsaufwand reduziert, jedoch einen einzigen Latenzpunkt (den „Leader“) einführt. Andere nutzen einen komitee-basierten Konsens, bei dem eine zufällig ausgewählte Untergruppe von Validatoren den Konsens für jeden Slot übernimmt, wodurch Dezentralisierung und Geschwindigkeit in Einklang gebracht werden. Die Wahl des Konsensmechanismus bestimmt direkt die grundlegende Latenzschwelle des Netzwerks, also die Mindestzeit zwischen der Einreichung einer Transaktion und ihrer endgültigen Bestätigung, die unabhängig von der Geschwindigkeit der zugrunde liegenden Hardware nicht weiter reduziert werden kann.
Infrastrukturengpässe
Für die meisten Entwickler liegen die Verzögerungen, mit denen sie tagtäglich konfrontiert sind, gar nicht auf Protokollebene. Sie liegen auf der Ebene der Infrastruktur. Die wahrgenommene Blockchain-Geschwindigkeit Ihrer Anwendung wird durch das schwächste Glied in ihrem Datenpfad bestimmt: den RPC- endpoint , mit dem sie verbunden ist, die Datenpipeline, die ihre Datenbank versorgt, und die Verarbeitungslogik, die die rohen Blockchain-Daten in den Anwendungsstatus umwandelt.
Ein gemeinsam genutzter, öffentlicher RPC- endpoint , bei dem Hunderte anderer Nutzer um Kapazität konkurrieren, führt bei jeder Anfrage zu unvorhersehbaren Latenzzeiten. Die Ratenbegrenzung drosselt Ihr Anfragemodul während der Spitzenauslastung – genau dann, wenn Sie es am dringendsten benötigen. Die geografische Entfernung zwischen Ihren Anwendungsservern und dem nächstgelegenen Knoten erhöht die Round-Trip-Zeit bei jedem Aufruf. Ein unterdimensionierter Knoten, der hinter die Kettenspitze zurückfällt, liefert veraltete Daten, wodurch der Zustand Ihrer Anwendung hinter der Realität zurückbleibt.
Polling-basierte Datenpipelines führen zu einer künstlichen Latenz, die dem Polling-Intervall entspricht. Wenn Ihr Indexer alle 10 Sekunden nach neuen Blöcken sucht, hinkt er selbst unter perfekten Bedingungen immer 0 bis 10 Sekunden hinter der Chain-Spitze hinterher. Bei Überlastung, wenn die Blöcke voll sind und die Verarbeitungszeit zunimmt, wird das Polling-Intervall zum Engpass, der Ihre Anwendung daran hindert, Schritt zu halten.
Diese Infrastrukturengpässe sind die am ehesten behebbare Ursache für Verzögerungen in der Blockchain, da Entwickler sie direkt angehen können. Ein Wechsel zu einem dedizierten, leistungsstarken RPC-Anbieter verringert die Latenz bei „ endpoint “. Der Wechsel von Polling zu Streaming beseitigt künstliche Pipeline-Verzögerungen. Der Einsatz einer geografisch verteilten Infrastruktur reduziert die Round-Trip-Zeiten. Die Zuweisung isolierter Knotenressourcen beseitigt „Noisy-Neighbor“-Effekte.
Wie „ Quicknode “ Blockchain-Verzögerungen angeht
QuicknodeDie Infrastruktur von [Name] ist darauf ausgelegt, Engpässe auf Infrastrukturebene zu minimieren oder zu beseitigen, die zu Verzögerungen bei Blockchain-Anwendungen führen. Die Core-API läuft in einem global verteilten Netzwerk über mehr als 14 Regionen und mehr als 5 Cloud-Anbieter hinweg und leitet Anfragen automatisch an den nächstgelegenen, schnellsten verfügbaren Knoten weiter. Die Antwortzeiten sind im Durchschnitt 2,5-mal schneller als bei Wettbewerbern, wobei SLAs mit einer Verfügbarkeit von 99,99 % eine konsistente Verfügbarkeit auch bei Netzwerküberlastungen gewährleisten. Dedizierte „ Clusters “ bieten eine isolierte Infrastruktur, die „Noisy-Neighbor“-Effekte eliminiert und latenzempfindlichen Anwendungen eine vorhersehbare Leistung bietet, unabhängig davon, was andere Nutzer gerade tun.
Quicknode Streams beseitigt den Polling-Engpass vollständig, indem Blockchain-Daten per Push-basiertem Streaming mit garantierter Zustellung in der Reihenfolge der Finalität bereitgestellt werden. Es gibt kein Polling-Intervall, keine künstliche Verzögerung und kein Risiko, dass Blöcke übersehen werden. Bei Überlastung, wenn Blöcke größer sind und mehr Transaktionen enthalten, skaliert „ Streams “ die Datenübertragung entsprechend dem erhöhten Datenvolumen. Konfigurierbare Batch-Verarbeitung und Komprimierung optimieren den Durchsatz für historische Nachholvorgänge und Ketten mit hohem Datenaufkommen. Für „ Solana “ bietet „ Quicknode “ Yellowstone gRPC bietet den Datenzugriff mit der geringsten Latenz, der derzeit verfügbar ist. Dabei werden binäre Protocol Buffers anstelle von JSON verwendet, um den Serialisierungsaufwand in einer Blockchain zu minimieren, in der jede Millisekunde zählt.
Was ist der Unterschied zwischen einer langsamen Blockchain und einer langsamen Dapp?
Für den Nutzer fühlen sich diese beiden Fälle gleich an, haben jedoch unterschiedliche Ursachen. Eine langsame Blockchain ist ein Protokollproblem: Überlastung, Konsenszeitpunkt oder die Größe des Zustands schränken die Geschwindigkeit ein, mit der das Netzwerk Transaktionen bestätigt. Eine langsame DApp ist in der Regel ein Infrastrukturproblem: Die Blockchain funktioniert einwandfrei, aber ein weit entfernter oder überlasteter endpoint verursacht zusätzliche Verzögerungen. Ein Vergleich von Durchsatz und Latenz ist der eindeutigste Weg, um festzustellen, um welches Problem es sich tatsächlich handelt.
Aspekt
Protokollebene
Infrastrukturebene
Quelle
Konsens, Blockgrenzen, Speicherplatzgröße
RPC- endpoint, Datenpipeline, Knotenstandort
Wer hat die Kontrolle darüber?
Die Netzwerk- und Kernentwickler
Sie als Entwickler
Inwieweit lässt sich das beheben?
Schwierig, erfordert Protokoll-Upgrades
Ganz einfach: Wechseln Sie den Anbieter oder das Tarifmodell.
Beispiel
Hohe Gasgebühren beim Prägen von NFTs
Ein langsames Web endpoint , das zu Verzögerungen führt
Was führt zu plötzlichen Spitzen bei der Auslastung der Blockchain?
Die Überlastung tritt eher in Spitzen als kontinuierlich auf. Token-Launches, NFT-Prägungen, Airdrop-Ansprüche, Marktcrashs und viraler Handel überschwemmen das Netzwerk innerhalb kurzer Zeit mit Transaktionen, und die Gebühren steigen, da die Nutzer um den begrenzten Platz in den Blöcken konkurrieren. Wenn Sie verstehen, was die Überlastung der Blockchain verursacht, können Sie sich auf diese Ereignisse vorbereiten, anstatt davon überrascht zu werden.
Inwiefern tragen Layer-2-Lösungen und Skalierung dazu bei, Verzögerungen zu verringern?
Layer-2-Netzwerke verlagern die meisten Transaktionen aus der Basis-Blockchain und wickeln sie in Stapeln ab, was den Durchsatz erheblich steigert und die Gebühren für alltägliche Aktivitäten senkt. Der Betrieb Ihrer App auf einer Layer-2-Blockchain ist eine der effektivsten Möglichkeiten, eine Überlastung der Basis-Blockchain zu vermeiden und gleichzeitig die Sicherheit des zugrunde liegenden Netzwerks zu gewährleisten.
Welche Leistungsbeeinträchtigungen können Entwickler tatsächlich beheben?
Grenzwerte auf Protokollebene liegen meist außerhalb Ihres Einflussbereichs, Verzögerungen in der Infrastruktur hingegen nicht. Sie können zu einem schnelleren Anbieter wechseln, Knoten näher an Ihre Nutzer platzieren und das Polling durch eine Push-basierte Übermittlung ersetzen. Allein schon der Wechsel vom Polling zum Streaming beseitigt die künstliche Verzögerung, die in intervallbasierten Pipelines fest eingebaut ist.
Häufig gestellte Fragen
Bedeutet eine Überlastung, dass die Blockchain weniger Transaktionen verarbeitet?
Nein. Die Blockchain erzeugt weiterhin Blöcke in ihrer normalen Geschwindigkeit und verarbeitet denselben Durchsatz. Was bei einer Überlastung wächst, ist die Warteschlange der ausstehenden Transaktionen, weshalb einzelne Bestätigungen länger dauern und die Gebühren steigen.
Verlangsamt die Dezentralisierung Blockchains?
Das ist möglich. Mehr Validatoren bedeuten mehr Kommunikation, um eine Einigung zu erzielen, was die Grundlatenz erhöht. Dieser Kompromiss zwischen Geschwindigkeit und Dezentralisierung wird im Abschnitt „Dezentralisierung versus Leistung“ ausführlich behandelt.
Kann ein schnellerer RPC-Anbieter eine langsame Anwendung beschleunigen?
Oftmals ja. Wenn die Blockchain einwandfrei funktioniert, Ihre DApp sich aber langsam anfühlt, liegt der Engpass in der Regel bei Ihrem endpoint. Durch die Verringerung der RPC-Latenz mit einem näher gelegenen, dedizierten Anbieter lassen sich die meisten Verzögerungen beseitigen, die Ihre Nutzer wahrnehmen.
Ist „State Bloat“ ein Problem, das ich als Entwickler lösen kann?
Nicht direkt. Der „State Bloat“ ist ein Problem auf Protokollebene, das durch Upgrades wie das Ablaufen von Verlaufsdaten und die Kontomiete bewältigt wird. Sie können dessen Auswirkungen verringern, indem Sie leseintensive Daten zwischenspeichern und unnötige Speicherung auf der Blockchain in Ihren Smart Contracts vermeiden.
Warum steigen die Gebühren, wenn eine Blockchain langsamer wird?
Der Platz im Block ist begrenzt. Wenn die Nachfrage daher stark ansteigt, bieten die Nutzer höhere Gebühren, um früher berücksichtigt zu werden. Höhere Gebühren sind der Marktgleichgewichtsmechanismus, der darüber entscheidet, welche Transaktion es in den nächsten Block schafft.