Einer der wichtigsten Indikatoren dafür, wie viel Last die Ethereum -Blockchain sicher verarbeiten kann, ist, wie die Onkelrate auf die Gasverwendung einer Transaktion reagiert. In allen Blockchains der Satoshian Proof-of-Work-Sorte hat jeder veröffentlichte Block das Risiko, einen “abgestandenen” Howbecoming zu machen, dh. Nicht Teil der Hauptkette zu sein, weil ein anderer Bergmann einen konkurrierenden Block veröffentlichte, bevor der kürzlich veröffentlichte Block sie erreichte, was zu einer Situation führte, in der es ein “Rennen” zwischen zwei Blöcken gibt, und einer der beiden wird notwendigerweise zurückgelassen.
Eine wichtige Tatsache ist, dass je mehr Transaktionen ein Block enthält (oder je mehr Gas ein Block verwendet). Im Bitcoin -Netzwerk war eine wegweisende Studie dazu Decker and Wattenhofer (2013)was feststellte, dass die durchschnittliche Ausbreitungszeit eines Blocks etwa 2 Sekunden plus weitere 0,08 Sekunden pro Kilobyte im Block betrug (dh ein 1 -MB -Block würde ~ 82 Sekunden dauern). A Neuere Bitcoin Unlimited Study zeigten, dass dies inzwischen auf ~ 0,008 Sekunden pro Kilobyte aufgrund von Verbesserungen der Transaktionsausbreitungstechnologie reduziert wurde. Wir können auch sehen, dass die Ausbreitung eines Blocks länger dauert, die Chance, dass er zu einem abgestandenen wird. Zu einer Blockzeit von 600 Sekunden sollte eine Zunahme der Ausbreitungszeit um 1 Sekunde einer erhöhten 1/600 Chance entsprechen, zurückgelassen zu werden.
In Ethereum können wir eine ähnliche Analyse durchführen, außer dass wir dank des “Onkel” -Mechanikers von Ethereum sehr solide Daten haben, aus denen wir analysieren können. Abgestandene Blöcke in Ethereum können als “Onkel” in die Kette einbezogen werden, wo sie bis zu 75% ihrer ursprünglichen Blockbelohnung erhalten. Dieser Mechaniker wurde ursprünglich eingeführt, um den Zentralisierungsdruck zu verringern und den Vorteil zu verringern, dass gut vernetzte Bergleute über schlecht verbundene Bergleute verfügen, aber auch mehrere Seitenvorteile haben. Eine davon ist, dass abgestandene Blöcke für alle Zeiten in einer sehr leicht durchsuchbaren Datenbank – der Blockchain selbst – verfolgt werden. Wir können einen Datenentwurf der Blöcke 1 bis 2283415 (vor den Angriffen des September 2016) als Datenquelle für die Analyse nehmen.
Hier ist ein Skript, um einige Quelldaten zu generieren: http://github.com/ethereum/research/tree/master/uncle_regressions/block_datadump_generator.py
Hier sind die Quelldaten: http://github.com/ethereum/research/tree/master/uncle_regressions/block_datadump.csv
Die Spalten repräsentieren die Blockzahl, die Anzahl der Onkel im Block, die Gesamt -Onkel -Belohnung, das Gesamtgas, das von Onkeln verbraucht wird, die Anzahl der Transaktionen im Block, das vom Block verbrauchte Gas, die Länge des Blocks in Bytes und die Länge des Blocks in Bytes ohne Null -Bytes.
Wir können dieses Skript dann verwenden, um es zu analysieren: http://github.com/ethereum/research/tree/master/uncle_regressions/base_egression.py
Die Ergebnisse sind wie folgt. Im Allgemeinen liegt die Onkelrate durchweg etwa 0,06 bis 0,08 und das durchschnittliche Gas pro Block etwa 100000 bis 300000. Da wir das Gas von beiden Blöcken und Onkeln verbrauchen, führen wir eine lineare Regression durch, um zu schätzen, wie viel 1 Gaseinheit die Wahrscheinlichkeit ergänzt, dass ein bestimmter Block ein Onkel ist. Die Koeffizienten sind wie folgt:
Block 0 bis 200K: 3.81984698029E-08 Block 200K bis 400K: 5.35265798406e-08 Block 400K bis 600K: 2.33638832951E-08 Block 600 bis 800K: 2,124452421666E-08 Block 800K bis 1000K: 1000K: 1000K: 1000K: 1000K: 1000K: 1000K: 1000K: 1000K: 1000K: 1000K: 2.7023102773e-08 Block 1000K bis 1200K: 2.864090500222E-08 Block 1200K bis 1400K: 3.2448993833e-08 Block 1400K bis 1600K: 3.12258208662e-08 Block 1600K bis 1800K bis 1800K: 3.18276549008E-08-08-08-08. 2000K: 2.41107348445e-08 Block 2000K bis 2200K: 1.99205804032E-08 Block 2200K bis 2285K: 1.86635688756e-08
Daher erhöht die Wahrscheinlichkeit, dass dieser Block ein Onkel wird, jeder 1-Million-Gas-Wert von Transaktionen, die in einem Block aufgenommen werden, aber während der Grenze näher bei 3-5%. Die “Basis” (dh Onkelrate eines 0-Gas-Blocks) beträgt konstant ~ 6,7%. Im Moment werden wir dieses Ergebnis so lassen, wie es ist, und nicht weitere Schlussfolgerungen ziehen. Es gibt eine weitere Komplikation, die ich später zumindest in Bezug auf die Auswirkungen dieser Feststellung auf die Gasgrenze -Richtlinie diskutieren werde.
Gaspreise
Ein weiteres Problem, das Onkel -Raten und Transaktionsausbreitung berührt, ist die Gaspreise. In Bitcoin -Entwicklungsdiskussionen ist ein häufiges Argument, dass Blockgrößengrenzen unnötig sind, da Bergleute bereits einen natürlichen Anreiz haben, ihre Blockgrößen zu begrenzen. Dies ist, dass jeder Kilobyte, den sie haben, die abgestandene Rate erhöht und somit ihre Blockbelohnung bedroht. Angesichts der 8 Sekunden pro Megabyte Impedanz, die durch die Bitcoin Unlimited Study festgestellt wurde, und die Tatsache, dass jede Sekunde der Impedanz einer 1/600 -Wahrscheinlichkeit entspricht, eine 12,5 -BTC -Blockbelohnung zu verlieren, deutet dies darauf hin, dass eine Gleichgewichts -Transaktionsgebühr von 0,000167 BTC pro Kilobyte angenommen wird, bei denen keine Blockgrößengrenze angenommen werden.
In Bitcoins Umgebung gibt es Gründe, langfristig skeptisch gegenüber der Wirtschaftlichkeit eines solchen No-Limit-Anreizmodells zu sein andere Transaktionen, dann gibt es ein wirtschaftliches Argument, dass die Gleichgewichtsrate sein wird bis zu 50%. Es gibt jedoch Modifikationen, die am Protokoll vorgenommen werden können, um diesen Koeffizienten zu begrenzen.
In der aktuellen Umgebung von Ethereum sind Blockprämien 5 ETH und bleiben so, bis der Algorithmus geändert wird. Das Akzeptieren von 1 Million Gas bedeutet eine 1,86% ige Wahrscheinlichkeit, dass der Block ein Onkel wird. Glücklicherweise hat der Onkelmechanismus von Ethereum hier einen glücklichen Nebeneffekt: Die durchschnittliche Belohnung von Onkel liegt in jüngster Zeit bei rund 3,2 ETH, daher bedeutet 1 Million Gas nur eine Chance von 1,86%, 1,8 ETH in Gefahr zu bringen, dh. Ein erwarteter Verlust von 0,033 ETH und nicht 0,093, wie dies ohne Onkelmechanismus der Fall wäre. Daher sind die aktuellen Gaspreise von ~ 21 Shannon tatsächlich dem “wirtschaftlich rationalen” Gaspreis von 33 Shannon nahe (dies ist vor den DOS -Angriffen und den daraus ergebenen Optimierungen; jetzt ist es wahrscheinlich sogar niedriger).
Der einfachste Weg, um das Gleichgewichts -Gaspreis weiter nach unten zu drücken, besteht darin, die Einschlussmechanik der Onkel zu verbessern und zu versuchen, nicht in Blöcken in den Blöcken einbezogen wie möglich einzubeziehen (möglicherweise indem sie jeden Block als “potenzieller Onkel -Header” separat ausbreiten). Wenn jeder Onkel so schnell wie möglich aufgenommen ist, würde der Gleichgewichtsgaspreis auf etwa 11 Shannon sinken.
Ist Daten unterbewertet?
Eine zweite lineare Regressionsanalyse kann hier mit Quellcode durchgeführt werden: http://github.com/ethereum/research/tree/master/uncle_regressions/tx_and_bytes_egression.py
Der Zweck hier ist zu sehen, ob, Nach Berücksichtigung der oben genannten berechneten Koeffizienten für GasEs besteht eine Korrelation mit der Anzahl der Transaktionen oder mit der Größe eines Blocks in Bytes übrig. Leider haben wir keine Blockgröße oder Transaktionszahlen für Onkel, daher müssen wir auf einen indirekteren Trick zurückgreifen, der Blöcke und Onkel in Gruppen von 50 Jahren untersucht. Eine mögliche Erklärung ist, dass, wenn ein einzelner Block eine hohe Ausbreitungszeit hat und zu einem Onkel führt, eine 50% ige Wahrscheinlichkeit besteht, dass dieser Onkel der Hochpropagations-Zeit-Block ist, aber es besteht auch eine 50% ige Wahrscheinlichkeit, dass der Onkel der andere Block sein wird, gegen den er konkurriert. Diese Theorie passt gut mit den 0,04 pro Million “Social Onkel -Rate” und der Erkenntnis von ~ 0,02 pro Million “Private Onkel” überein; Daher werden wir es als die wahrscheinlichste Erklärung betrachten.
Die Regression stellt fest, dass nach der Berücksichtigung dieser sozialen Onkelrate ein Byte zusätzlich ~ 0,000002 Onkel -Rate ausmacht. Bytes in einer Transaktion nehmen 68 Gas auf, von denen 61 Gas erklärt für Sein Beitrag zur Bandbreite (die verbleibenden 7 sind für das Aufblähen der Verlaufsdatenbank). Wenn wir wollen, dass der Bandbreitenkoeffizient und der Berechnungskoeffizient in der Gas Tabelle beide die Ausbreitungszeit widerspiegeln, bedeutet dies, dass wenn wir wollten, wenn wir wollten Wirklich Optimieren Sie die Gaskosten, wir müssten die Gaskosten pro Byte um 50 erhöhen (dh bis 138). Dies würde auch die Erhöhung der Basisgaskosten einer Transaktion um 5500 bedeuten (Hinweis: Eine solche Wiederholung würde nicht bedeuten, dass alles teurer wird; die Gasgrenze würde um ~ 10% angehoben, damit die Durchschnittsfall Der Transaktionsdurchsatz würde unverändert bleiben). Andererseits ist das Risiko einer Verweigerung des Dienstes von Worst-Case-Denial-of-Service für die Ausführung schlechter als für Daten, und daher erfordert die Ausführung größere Sicherheitsfaktoren. Daher gibt es wohl nicht ausreichend starke Beweise, um zumindest vorerst hier noch einmal zu beurteilen.
Eine mögliche Langzeitprotokolländerung wäre die Einführung separater Gaspreismechanismen für In-EVM-Ausführungs- und Transaktionsdaten. Das Argument hier ist, dass die beiden viel einfacher zu trennen sind, da Transaktionsdaten separat von allem anderen berechnet werden können. Daher kann die optimale Strategie darin bestehen, den Markt irgendwie zu ermöglichen, sie auszugleichen. Genauige Mechanismen für so etwas müssen jedoch noch entwickelt werden.
Gasgrenzepolitik
Für einen einzelnen Bergmann, der ihren Gaspreis ermittelt, ist der “private Onkelsatz” von 0,02 pro Million Gas die relevante Statistik. Aus Sicht des gesamten Systems ist die “soziale Onkelrate” von 0,04 pro Million Gas wichtig. Wenn wir uns nicht für Sicherheitsfaktoren interessierten und mit einer Onkelrate von 0,5 Onkeln pro Block in Ordnung wären (dh ein “51% -Angriff” würde nur 40% Hash -Power benötigen, um erfolgreich zu sein, wie es sich anhört, dann legt zumindest diese Analyse darauf nahe, Mit den neuesten Optimierungen könnte dies noch höher gestoßen werden. Da wir uns jedoch um Sicherheitsfaktoren kümmern und eine niedrigere Onkelrate zur Linderung von Zentralisationsrisiken vorziehen, sind 5,5 Millionen wahrscheinlich ein optimales Niveau für die Gasgrenze, obwohl eine “dynamische Gasgrenze” -Formel, die auf eine bestimmte Blockverarbeitungszeit abzielt, ein besserer Ansatz wäre, da es in der Lage wäre, sich an Angriffe und Risiken schnell und automatisch anzupassen.
Beachten Sie, dass die Besorgnis über die Zentralisierungsrisiken und die Notwendigkeit von Sicherheitsfaktoren nicht übereinander stapeln. Der Grund dafür ist, dass die Blockchain während einer aktiven Denial-of-Service-Angriff überleben muss und nicht langfristig wirtschaftlich zentralisierungsresistent sein muss. Das Argument ist, dass der Angreifer, wenn das Ziel des Angreifers es war, die Zentralisierung wirtschaftlich zu fördern, nur Geld an den größten Pool spenden könnte, um andere Bergleute zu bestechen, um sich ihm anzuschließen.
In Zukunft können wir erwarten, dass die Verbesserungen der virtuellen Maschine die Onkelraten weiter verringern, obwohl schließlich auch Verbesserungen an der Vernetzung erforderlich sind. Es gibt eine Grenze dafür, wie viel Skalierbarkeit in einer einzelnen Kette möglich ist, wobei der primäre Engpass-Leses und schreibt. Wenn wir nur die Gleichgewichtsgaspreise senken wollen, hilft Casper erheblich, indem wir die “Neigung” der Onkelrate für den Gasverbrauch in der Nähe von Null bis zu einem bestimmten Punkt herstellen.

