Gibt es einen Mechanismus in Bitcoin, der es ihm ermöglicht, sich dynamisch an den Transaktionsfluss anzupassen?

Ich habe einige Bücher und Artikel über Bitcoin gelesen und habe das Gefühl, viele seiner Konzepte verstanden zu haben, aber ich kann keine Antwort auf eine Frage finden, die ich seit langem habe:

Wie passt sich das Bitcoin-Netzwerk an eine erhöhte oder verringerte Anzahl von Transaktionen pro Zeitintervall an?

Ich weiß, dass das Netzwerk versucht, die kryptografische Schwierigkeit ständig so anzupassen, dass neue Blöcke im Durchschnitt in 10-Minuten-Intervallen geschürft werden. Wenn die Blockgröße begrenzt ist, kann jeder Block nur eine maximale Anzahl von Transaktionen enthalten.

Das bedeutet, dass Miner einige Transaktionen gegenüber anderen priorisieren müssen (höchstwahrscheinlich diejenigen, die die höheren Gebühren zahlen), wenn die Anzahl der eingehenden Transaktionen pro 10-Minuten-Intervall dieses Maximum überschreitet. Wenn die Anzahl der eingehenden Transaktionen im Laufe der Zeit unter dieses Maximum sinkt, werden diese nicht verarbeiteten Transaktionen (die mit den niedrigeren Gebühren) in die nächsten Blöcke aufgenommen.

Aber was passiert, wenn über einen längeren Zeitraum die Anzahl der eingehenden Transaktionen pro 10-Minuten-Intervall nie abnimmt?

Konsequenterweise würde dies bedeuten, dass alle Transaktionen mit einer zu geringen Gebühr nie (oder zumindest nicht sehr lange) in die Blockchain gelangen.

Wie löst das Bitcoin-Netzwerk dieses Problem?

(Mit zunehmender Akzeptanz wird es sicherlich alle 10 Minuten mehr als ein paar hundert oder tausend Transaktionen geben?)

Es löst dieses Problem nicht :)

Antworten (2)

Warum gibt es eine Grenze? Warum ändern wir es nicht?

Unabhängig von der Anzahl der an das Netzwerk gesendeten Transaktionen gibt es eine implizite maximale Anzahl von Transaktionen, die in einen Block aufgenommen werden können (siehe Antwort von @JamesC), und die Anzahl der gefundenen Blöcke wird durch den Schwierigkeitsanpassungsalgorithmus des Netzwerks geregelt, der darauf abzielt durchschnittlich alle zehn Minuten einen Block. Dadurch wird die Anzahl der Transaktionen pro Sekunde, die das Netzwerk im Blockchain-Datensatz bestätigen kann, effektiv begrenzt.

Sie könnten daher glauben, dass das Hinzufügen eines Anpassungsmechanismus für die Größe oder Häufigkeit von Blöcken für das Netzwerk von Vorteil wäre, aber weitere Untersuchungen zeigen, dass dies der Gesundheit des Netzwerks tatsächlich abträglich ist . Der Grund dafür, dass die Anzahl der in einem Block enthaltenen Transaktionen (d. h. eine einstellbare Blockgröße) nicht angepasst wird, besteht darin, dass ein solcher Mechanismus unerwünschte Auswirkungen auf die Fähigkeit der Benutzer, Knoten auszuführen, und auf die Spieltheorie des Bitcoin-Mining hätte :

Für vollständige Knoten: Im Allgemeinen gilt: Je größer ein Block ist, desto mehr Rechenressourcen (Bandbreite, Speicher, Berechnung) benötigt ein Knoten, um ihn zu validieren. Eine größere Blockgröße übt also Druck auf die am wenigsten leistungsfähigen Knoten im Netzwerk aus, und es sollte damit gerechnet werden, dass jede Erhöhung der Ressourcenanforderungen dazu führt, dass einige Knoten aus dem Netzwerk fallen. Daher können wir sehen, dass eine wachsende Blockgröße als DOS-Angriff gegen ressourcenbeschränkte Knoten im Netzwerk verwendet werden kann, und dies ist offensichtlich unerwünscht.

Für Miner: Unabhängig von der Hardware dauert das Herunterladen und Validieren eines größeren Blocks länger. Als Miner bedeutet dies, dass Sie, wenn Sie von einem neuen Block im Netzwerk hören, einen kurzen Zeitraum haben, in dem Sie den neuen Block herunterladen, aber nicht mit dem Mining beginnen können, bevor Sie sicherstellen, dass er gültig ist . Dies führt zu einer Erhöhung der Orphan-Block-Rate, was kleinere Miner stärker betreffen wird als größere Miner . Wir können also sehen, dass ein größerer Miner einen Anreiz hätte, größere Blöcke zu erstellen, da die mit großen Blöcken verbundenen Latenzprobleme ihre Konkurrenten (kleinere Miner) stärker betreffen als sie selbst. Letztendlich würden wir erwarten, dass dies die Mining-Macht auf einige wenige Großbetriebe konzentriert, was offensichtlich unerwünscht ist.


Welche anderen Lösungen gibt es?

Das alles klingt also ziemlich düster in Bezug auf die Skalierung des Bitcoin-Netzwerks, um mit einem globalen Transaktionsvolumen fertig zu werden. ABER! Die gute Nachricht ist, dass die Skalierung der Blockgröße vielleicht der naheliegendste Ansatz ist, aber sicherlich nicht der einzige.

Beispielsweise verschiebt das Lightning Network (LN) Transaktionen Off-Chain, wodurch ein nahezu unbegrenztes Transaktionsvolumen Off-Band zwischen LN-Teilnehmern stattfinden kann. Darüber hinaus könnten LN-Channel-Factorys den Teilnehmern Transaktionen mit unglaublichen Kosteneinsparungen ermöglichen. Beachten Sie, dass es bei der Verwendung des LN Kompromisse gibt und dass das Vertrauens- und Sicherheitsmodell etwas anders ist als bei Transaktionen in der Kette.

Sidechains kommen auch online, ein solches Beispiel ist das von Blockstream erstellte Liquid Network . Beachten Sie, dass Sidechains die Skalierbarkeit nicht erhöhen, aber die Skalierung erhöhen können , allerdings wiederum mit einer anderen Sicherheits- und Vertrauensannahme als der der zugrunde liegenden Bitcoin-Blockchain.

Schnorr-Signaturen bieten eine Reihe von Vorteilen gegenüber ECDSA. In Bezug auf die Skalierbarkeit können wir sehen, dass Signaturen kleiner sein können (was weniger Bytes pro Transaktion bedeutet) und eine flexiblere Signaturaggregation (viele Teilnehmer werden durch eine einzige aggregierte Signatur repräsentiert, wodurch die Anzahl effektiv reduziert wird Bytes pro Benutzer' in einer Transaktion). Beachten Sie, dass Schnorr-Signaturen derzeit nicht im Bitcoin-Netzwerk verwendet werden, aber viele Entwickler würden ihre Implementierung gerne in der Zukunft sehen.


Abschließend: Lassen Sie uns noch einmal darüber nachdenken, was eine „Transaktion“ darstellen kann

Um all dies zusammenzufassen, möchte ich Sie ermutigen, sich zu dem Verständnis zu bewegen, dass ein Benutzer, der mit dem Bitcoin-Netzwerk interagiert, um einen Wert auszutauschen, nicht unbedingt 1:1 einer On-Chain-Transaktion zuordnen muss . Eine On-Chain-Transaktion kann tatsächlich eine große Anzahl einzelner Benutzertransaktionen darstellen (z. B. eine Transaktion, die einen LN-Kanal öffnet, oder eine Transaktion, die eine aggregierte Signatur enthält, die eine große Anzahl von Personen darstellt, die an einer einzelnen Transaktion teilnehmen), oder als Nic Carter hat es so formuliert :

[Bitcoin-Transaktionen] sind nichts wie Visa-Transaktionen, mit denen sie üblicherweise verglichen werden. Ich bezeichne sie gerne als Containerschiffe, nicht als Pakete.

Das heißt, dass eine einzige On-Chain-Transaktion die wirtschaftliche Aktivität einer großen Anzahl einzelner Benutzer darstellen kann, nicht nur die Transaktion eines einzelnen Benutzers.

Wir können also sehen, dass die „Anzahl der Transaktionen pro Sekunde“ kein perfektes Maß für die soziale Skalierbarkeit von Bitcoin ist, stattdessen ist der „ökonomische Durchsatz pro Sekunde“ vielleicht interessanter. Wenn wir die wirtschaftlichen Handlungen von mehr Benutzern pro Transaktion einbeziehen können, finden wir möglicherweise einen praktikableren Weg, um das Bitcoin-Netzwerk auf eine globale Ebene zu skalieren.

Sehr ausführliche Antwort mit vielen großartigen Links, die dazu beitragen, sich ein breiteres Bild zu machen. Vielen Dank!
Ich liebe die Analogie, eine Transaktion als „Containerschiff“ zu sehen. Sehr ausführliche Erklärungen dazu gibt es in dem Buch Mastering Bitcoin von Andreas M. Antonopoulos, das ich gerade zu Ende gelesen habe.

Die Menge gültiger Sendedaten, die alle 10 Minuten bestätigt werden können, ist gebunden:

  • 1 MB (TX-Serialisierung ohne Zeugen)
  • 4m Gesamtblockgewicht:

Das Gewicht einer einzelnen Transaktion ist1 * TX-bytes(incl. witness) + 3 * TX-bytes(without witness)

Daher gibt es keinen Mechanismus, um mehr Transaktionen zu berücksichtigen, als ihre individuelle Bytegröße und Gewichtung zu reduzieren.

Sie sagen also, dass Bitcoin (es sei denn, diese Beschränkungen werden im Rahmen einer Hard Fork gelockert) nicht skaliert werden kann und nicht mehr als 2000-3000 Transaktionen alle 10 Minuten durchführen kann – ist das richtig? (Wenn ja, wäre das ein grundlegender Designfehler, der Bitcoin daran hindern würde, jemals eine dominierende Währung zu werden. Das ist kaum zu glauben ...)
Bitcoin ist nicht skalierbar. Das ist für die dezentrale Validierung notwendig, die die Sicherheit für das System bietet. Softforks wie Segwit bieten eine logische Erhöhung der TX-Bestätigung pro Block, aber das ist keine Skalierung im engeren Sinne. Erwägen Sie Lightning oder Sidechains für alternative Möglichkeiten, Offchain-Transaktionen durchzuführen.