
Autor: Vitalik, Gründer von Ethereum;
In Ethereum sind bis vor kurzem die Ressourcen begrenzt und ein einziger Ressourcenpreis namens „Gas“ wird verwendet.Gas ist die Menge der „Berechnung“, die für eine bestimmte Transaktion oder einen bestimmten Block erforderlich ist.Gas integriert verschiedene Arten von „Anstrengungen“ zusammen.
-
Originalberechnung (z. B. hinzufügen, multiplizieren)
-
Lesen und schreiben Sie in Ethereum Storage (wie Sstore, Sloadeth Transfer)
-
Datenbandbreite
-
Die Kosten für die Erzeugung von Zk-Snark für die Erzeugung von Blöcken
Zum Beispiel die von mir gesendete Transaktion (https://etherscan.io/tx/0xc5195b64cc333b8098d71fbd032e05d4545917e3be8d123ab06e1Ad7998e))))))))))))> „>Insgesamt 47.085 Gas ausgegeben.Dies ist eine „Grundkosten“, die in (i) 21000 Gas unterteilt ist.Die Transaktionsgebühr, die Benutzer zahlen müssen, ist direkt proportional zum von der Transaktion verbrauchten Gas.> „>Ein Block kann bis zu 30 Millionen Gas enthalten, und der Gaspreis wird kontinuierlich über den EIP-1559-Zielmechanismus eingestellt, um sicherzustellen, dass der Block durchschnittlich 15 Millionen Gas enthält.
Diese Methode hat eine Haupteffizienz: Da alles in eine virtuelle Ressource zusammengefasst wird, führt sie zu einem sehr einfachen Marktdesign.Optimierte Transaktionen sind leicht zu minimieren.
Aber> „>In dieser Methode gibt es auch ein wichtiges ineffizientes Problem: Es betrachtet unterschiedliche Ressourcen als gegenseitige Konvertierung, aber die tatsächliche potenzielle Grenze, die das Netzwerk behandeln kann, ist nicht der Fall.Eine Möglichkeit, dieses Problem zu verstehen, besteht darin, dieses Bild zu sehen:
Gas begrenzt die folgenden Einschränkungen: x1*Daten+x2*Berechnung & lt;Die tatsächlichen zugrunde liegenden Sicherheitsbeschränkungen sind normalerweise näher an max (x1*Daten, x2*-Rechnung) & lt;Dieser Unterschied veranlasst Gas, den unnötigen Ausschluss der tatsächlichen Sicherheitsblöcke einzuschränken oder die tatsächlichen unsicheren Blöcke oder eine bestimmte Mischung der beiden zu akzeptieren.
Wenn es eine Ressource mit unterschiedlichen Sicherheitsbeschränkungen gibt, kann das eindimensionale Gas den Durchsatz von bis zu einem Faktor verringern?Daher interessiert sich die Menschen seit langem an dem Konzept des mehrdimensionalen Gass.In diesem Artikel werden die Vorteile dieser Methode und die Aussichten erörtert, diese Methode weiter zu verbessern.
Blobs: Mehrdimensionales Gas in Dencun
Anfang dieses Jahres betrug die durchschnittliche Blockgröße von Ethereum 150 kb.Ein großer Teil dieser Größe sind Rollup -Daten: Aus Sicherheitsgründen speichert das 2. Schichtprotokoll die Daten in der Kette.Diese Daten sind sehr teuer: Obwohl die Kosten für Rollup-Transaktionen etwa 5-10-mal niedriger sind als die entsprechenden Transaktionen auf dem Ethereum L1, sind diese Kosten für viele Fälle immer noch zu hoch.
Warum nicht die Kosten von Calldata (derzeit 16 Gas pro Nicht -Nummer -Byte und 4 Gas pro Anzahl von Bytes) senken, so dass Rollup billiger ist?Wir haben das schon einmal getan und können es wieder tun.Die Antwort hier lautet: Die Blockgröße im schlimmsten Fall beträgt 300.000/16 = 1875000 Nicht -Nummer -Bytes, und das Netzwerk ist fast unmöglich, mit dem Block dieser Größe umzugehen.Wenn die Kosten um das 4 -fache gesenkt werden, wird die maximale Kapazität auf 7,5 MB erhöht, was enorme Sicherheitsrisiken mit sich bringt.
Dieses Problem wird schließlich durch Einführung eines separaten Datenraums (als „Blob“) gelöst, indem in jedem Block einen separaten einfachen Rollup -Datenraum eingeführt wird.Diese beiden Ressourcen haben unterschiedliche Preise und unterschiedliche Einschränkungen: Nach der Hardgabelung von Dencun kann ein Ethereum -Block maximal (i) 30 Millionen Gas und (ii) 6 -Blob enthalten.Beide Ressourcen haben einen separaten Preis.
Infolgedessen wurden die Kosten für Rollups das 100 -mal reduziert, und das Transaktionsvolumen bei Rollups hat sich um mehr als das dreifache erhöht, und die theoretische maximale Blockgröße hat nur geringfügig gestiegen: von etwa 1,9 MB auf etwa 2,6 MB.
Die Rollup -Handelsgebühr erfolgt von WachstumEpie.xyz.Die Dencun -Gabel ereignete sich am 13. März 2024 und führte ein multi -dimensionaler PreisfloB ein.
Mehrdimensionales Gas und staatenloser Kunde
In naher Zukunft werden auch ähnliche Probleme mit Speicherzertifikaten ohne staatlich freien Kunden auftreten.Ein staatenloser Client ist ein neuer Client -Typ, der die Blockchain überprüfen kann, ohne dass sie vor Ort viel oder Daten speichern müssen.Der staatenlose Kunde implementiert dies, indem der Nachweis des Ethereum -spezifischen Teils der Transaktion im Block akzeptiert wird.
Ein staatlich freier Client erhält einen Block und beweist den Nachweis des aktuellen Werts des spezifischen Teils des Staates (z. B. Kontostand, Code, Speicher), die an der Ausführung der Blockausführung beteiligt sind.Auf diese Weise können Knoten den Block ohne Speicher selbst überprüfen.
Das Lesen von 2100 bis 2600 nach dem anderen lagern Sie je nach Art des Lesens und die Kosten für die Speicherschreibkosten sind höher.Im Durchschnitt führt ein Block etwa 1.000 Speicher- und Lesen aus (einschließlich ETH -Balance -Check, SSTORE -Anrufschleifen, Vertragscode -Lesen und anderen Vorgängen).Der theoretische Maximalwert beträgt jedoch 30000000/2100 = 14285.Die Bandbreitenlast eines staatlich freien Clients ist proportional zur Zahl.
Heute wird der Plan vom Merkle Patricia Tree zum Querbaum übertragen, indem der Staatsbaum von Ethereum entworfen wird, um den staatenlosen Kunden zu unterstützen.Der Leerzeichen hat jedoch keinen Quantenwiderstand und ist nicht die beste Wahl für das aktualisierte Stark Proof -System.Daher sind viele Menschen daran interessiert, einen staatlich freien Kunden durch den Dual Merkle Tree und Stark-e entweder komplett zu überspringen, oder nach dem Übergang von Leerkle für einige Jahre, sobald der Stark reifer wird, wird er verbessert.
Stark des binären Hashbaum Nur der Hash -Basis -Stark ist normalerweise nur nur nur Tausende von Hash pro Sekunde nachweisen, dass jeder Wert einen „Zweig“ erfordert, der viele Hash -Werte enthält.
Angesichts der Tatsache, dass aus dem superoptimierten Zertifizierungssystem (wie Binius und Plonky3) und dem Special Hash (wie Vision-Mark-32) wahrscheinlich in einer Zeit in weniger als einer Sekunde der Zustand der einzelnen Werte sein werden. Ist nicht 14.285.Jeder Block ist kein Problem, aber der schlimmste Fall (kann von einem Angreifer veröffentlicht werden) zerstört das Netzwerk.
Die „Standard“ -Methode, mit der wir uns mit dieser Situation befassen, besteht darin, den Speicher abzusehen: den Speicherlesen teurer zu lassen, um den Maximalwert jedes Blocks auf ein sichereres Niveau zu reduzieren.Wir haben dies jedoch oft getan.> „>Eine bessere Methode ist ein multi -dimensionales Gas: Einschränkungen und Gebühren für den Speicherzugriff, halten Sie die durchschnittliche Verwendung von 1.000 Speicherzugriff an jedem Block bei, setzen Sie jedoch die Grenze jedes Blocks auf das 2.000 -fache.
Häufigeres multi -dimensionales Gas
Eine weitere Ressource, die es wert ist, in Betracht zu ziehen, ist das Wachstum des Staates: die Erhöhung des Betriebs des Ethereum -Staates zu erhöhen, und der gesamte Knoten muss einen vollständigen Zustand halten.Die Einzigartigkeit des staatlichen Wachstums ist, dass der Grund für die Einschränkung des staatlichen Wachstums genau langfristig kontinuierlich und nicht den Höhepunkt ist.Daher kann es wertvoll sein , aber es ist überhaupt nicht eingestellt.
Dies zeigt eine der leistungsstarken Eigenschaften von Multi -Vitamin -Gas: Es ermöglicht uns, die folgenden Fragen zu stellen: ((> „>i) Was ist die ideale durchschnittliche Verwendung jeder Ressource und die maximale Sicherheitsverwendung von (ii) jedem Block.Wir setzen den Gaspreis nicht auf dem Maximalwert eines jeden Blocks, sondern die durchschnittliche Nutzung.
Kompliziertere Fälle, wie beispielsweise einige akkumulierte Sicherheitsüberlegungen von zwei Ressourcen, können bearbeitet werden, indem der Betriebscode oder die Ressourcen eine bestimmte Anzahl von Gas kosten (z. Lagergas).
Der Maximalwert jeder Transaktion: Der schwächere, aber einfachere Weg, um das multi -dimensionale Gas zu erhalten
Sei x1 die Kosten der Daten, und x2 sind die berechneten Gaskosten.
Im neuen Plan definieren wir die Gaskosten der Transaktion als: Gas = max (x1*Daten, x2*-Rechnung)
Mit anderen Worten, die Transaktion wird nicht auf der Grundlage der Berechnung von Data Plus berechnet, sondern mehr berechnet, basierend auf den Ressourcen der beiden Ressourcen, die sie verbraucht.Dies kann sich leicht erweitern, um mehr Dimensionen abzudecken (z. B. max (…, x3*storate_access)).
Es sollte leicht zu erkennen sein, wie dies den Durchsatz erhöht und gleichzeitig die Sicherheit gewährleistet.Die maximale Datenmenge in einem Block ist immer noch gaslimit/x1, was genau die gleiche wie die eindimensionale Gaslösung entspricht.Auf die gleiche Weise ist die theoretische maximale Berechnungsmenge Gaslimi/x2, die genau die gleiche wie die eine eindimensionale Gaslösung entspricht.Die Kosten für verbrauchte und berechnete Transaktionen werden jedoch reduziert.
Hier geht es um das vorgeschlagene Schema im vorgeschlagenen EIP-7623, um die maximale Blockgröße zu verringern und die Anzahl der Blob weiter zu erhöhen.Der genaue Mechanismus in EIP-7623 ist etwas komplizierter: Er hält den aktuellen Calldata-Preis von 16 Gas bei, fügt jedoch den „Reservat“ von 48 Gas pro Byte hinzu.Daher reduziert EIP-7623 die maximalen Transaktionsaufrufdaten im Block von etwa 1,9 MB auf etwa 0,6 MB, während die Kosten der meisten Anwendungen unverändert aufrechterhalten werden.Der Vorteil dieser Methode besteht darin, dass sie im Vergleich zu der aktuellen eindimensionalen Gaslösung sehr wenig verändert hat, sodass sie sehr einfach zu erreichen ist.
Es hat zwei Nachteile:
1. Auch wenn alle anderen Transaktionen im Block nur eine sehr geringe Ressource verwenden, muss eine große Anzahl von Transaktionen, die eine Ressource belegen, immer noch nicht viele Gebühren erheben.
2. Es inspiriert datenintensive und berechnete dichte Transaktionen zu einem Bundle -Paket, um Kosten zu sparen.
Meiner Meinung nach können die Regeln des EIP-7623-Stils den Transaktionsaufrufdaten oder anderen Ressourcen genügend Vorteile bringen, auch wenn es diese Mängel gibt, lohnt es sich.Wenn wir jedoch bereit sind, (signifikante und höhere) Entwicklungsbemühungen zu investieren, gibt es eine idealere Methode.
Mehrdimensionaler EIP-1559: Schwieriger, aber idealer Strategie
Lassen Sie uns zunächst das Arbeitsprinzip von „konventionell“ EIP-1559 überprüfen.Wir werden uns auf die von Blob in EIP-4844 eingeführte Version konzentrieren, da sie in der Mathematik eleganter ist.
Wir verfolgen einen Parameter, exess_blobs.Während jeder Zeit richten wir:
Exess_blobs & lt; – max (exess_blobs + len (block.blobs) -Target, 0)
Hier Ziel = 3.Mit anderen Worten, wenn die Anzahl der Blöcke eines Blocks mehr als das Ziel ist, erhöht sich Excess_Blobs, und wenn die Anzahl der Blöcke im Block geringer ist als das Ziel, nimmt dies ab.Anschließend richten wir Blob_basefee = exp (exzesst_blobs / 25.47) ein, wobei exp ein ungefährer Wert exp (x) der Indexfunktion ist.
Mit anderen Worten, wenn überschüssige Blobs um das 25 -fache um etwa das 25 -fache steigt, steigen die Grundkosten des Blob um etwa das 2,7 -fache.Wenn der Blob zu teuer wird, nimmt die durchschnittliche Verwendung ab, und dann verringert sich überschüssiges_Blobs, wodurch der Preis automatisch wieder gesenkt wird.Der Preis des Blobs wird ständig angepasst, um sicherzustellen, dass der Block halb voll ist. Jeder Block enthält durchschnittlich 3 Blobs.
Wenn die Nutzungsmenge kurzfristig erscheint, gibt es Einschränkungen: Jeder Block kann nur bis zu 6 Blob enthalten.Unter normalen Umständen muss jedoch jeder Blob nur Blob_basefee bezahlen und als Inspiration eine kleine zusätzliche Prioritätsgebühr hinzufügen.
Diese Gaspreise sind seit vielen Jahren in Ethereum: Bereits 2020 führte der EIP-1559 einen sehr ähnlichen Mechanismus ein.Durch EIP-4844 haben wir jetzt zwei separate Gas- und Blobpreise.
Die Grundkosten für Gas innerhalb einer Stunde am 8. Mai 2024 sind das Gerät Gwei.Quelle: Ultrasonic.Money
Grundsätzlich können wir Speicherlesung und anderen Arten von Operationen mehr Solokosten hinzufügen, aber es gibt eine Warnung, dass ich sie im nächsten Abschnitt ausführlich erklären werde.
Für Benutzer ist diese Erfahrung heute sehr ähnlich: Sie zahlen keine Grundgebühr mehr, sondern zahlen zwei Grundkosten, aber Ihre Brieftasche kann sie von Ihnen abstrahieren. Sie zeigen Ihnen nur, dass Sie erwarten können, dass Sie die erwarteten Ausgaben und maximale Ausgaben erwarten, die mit den erwarteten Ausgaben und maximalen Ausgaben rechnen können .
Für Blockbauer ist die meiste Zeit die beste Strategie wie heute: einschließlich effektiver Inhalte.Die meisten Blöcke sind nicht voll -ob es sich um Gas oder Blob handelt.Eine herausfordernde Situation ist, dass der Bauherr, wenn es genügend Gas oder genügend Blobs gibt, um die Blockbeschränkungen zu überschreiten, möglicherweise das mehrdimensionale Knapsack -Problem lösen, um seine Gewinne zu maximieren.Selbst wenn es einen ziemlich guten Annäherungsalgorithmus gibt, sind in diesem Fall die Vorteile, die durch die Optimierung des Gewinns durch Formulierung des proprietären Algorithmus erzielt werden, viel kleiner als die Verwendung von MEV für denselben Betrieb.
Für Entwickler besteht die Hauptherausforderung darin, die Funktionen von EVM und der peripheren Infrastruktur neu zu gestalten.Ein Problem für Anwendungsentwickler ist, dass die Optimierung etwas schwierig wird: In einigen Fällen können Sie nicht mehr klar sagen Wenn Calldata billig ist, ist es teurer, wenn Calldata teuer ist.Entwickler können jedoch immer noch ziemlich gute Ergebnisse erzielen, indem sie den langfristigen historischen Durchschnittspreis optimieren.
Mehrdimensionale Preisgestaltung, EVM und Sub-Calls (Sub-Calls)
Ein Problem wird weder in Blob erscheinen noch in EIP-7623 oder sogar in der „vollständigen“ multidimensionalen Preisimplementierung von CallData auftreten. Wenn wir jedoch versuchen, den Preisstatus oder andere Ressourcen zu Preisgestaltung oder andere Ressourcen Alle anderen Ressourcen.
Gas in EVM ist auf zwei Orte begrenzt.Zunächst wird jede Transaktion mit einer Gasgrenze eingerichtet, die die Gesamtmenge an Gas begrenzt, die in der Transaktion verwendet werden kann.Zweitens kann der Anruf ein eigenes Gaslimit festlegen, wenn ein Vertrag einen weiteren Vertrag anruft.Dies ermöglicht dem Vertrag, andere Verträge anzurufen, denen sie nicht vertrauen, und garantieren immer noch, dass er nach der Aufforderung zur Durchführung anderer Berechnungen immer noch über das verbleibende Gas verfügt.
Die Spur des Konto -Abstrakten Transaktion, eines der Konten ruft das andere Konto an und stellt dem Anrufer nur eine begrenzte Anzahl von Gas zur Verfügung, um sicherzustellen, dass der externe Anruf auch dann weiter ausgeführt wird .
Die Herausforderung ist: Gas wird zwischen verschiedenen Arten von Ausführung zu mehreren dimensional.
Dies ist einer der Gründe, warum der multi -dimensionale Gasvorschlag normalerweise in zwei Dimensionen bleibt: Daten und Ausführung.Daten (unabhängig davon, ob der Handel mit Calldata oder Blob handelt) werden nur außerhalb des EVM zugewiesen. Daher müssen der Inhalt innerhalb des EVM nicht geändert werden, um den CallData oder den Blob separat zu erstellen.
Wir können eine „EIP-7623-Lösung“ entwickeln, um dieses Problem zu lösen.Dies ist eine einfache Implementierung: Während der Implementierung betragen die Kosten für das Laden des Speicherbetriebs 4 -mal.Am Ende der Transaktion die Rückerstattung min (7500 * Storage_operations, Execution_gas).Infolgedessen muss der Benutzer nach Abzug der Rückerstattung die folgenden Ausgaben bezahlen:
Execution_gas + 10000 * Storage_operations -min (7500 * Storage_operations, Execution_gas)
Dies ist gleich:
MAX (Execution_gas + 2500 * Storage_operations, 10000 * Storage_operations)
Dies spiegelt die Struktur von EIP-7623 wider.Eine andere Methode besteht darin, die Storage_operations und Execution_gas in Echtzeit zu verfolgen, und der Betrag von 2500 oder 10000 Gas wird vom MAX (Execution_Gas + 2500 * Storage_operations, 10000 * Storage_operations) gemäß dem Call -Operation -Code aufgeladen.Dies vermeidet die Transaktion, die eine übermäßige Allokation von Skygas erfordert, und diese Gass werden hauptsächlich durch Rückerstattungen wiederhergestellt.
Wir haben keine feinkräftige Lizenz für Sub -Calls erhalten: Sub -Calls können alle „Zulagen“ von Transaktionen für billige Speichervorgänge konsumieren.Aber wir bekommen genug gute Dinge.
Die einfachste „vollständige mehrdimensionale Preislösung“, die ich mir vorstellen kann, ist: Wir betrachten den Unterkall des Kindes als Anteil.Mit anderen Worten, es geht
? Verschiedene Arten von Ausführung, jede Transaktion legt eine mehrfache Grenze fest?Unter der Annahme des aktuellen Ausführungspunkts das verbleibende Gas
Für?Unter der Annahme, dass Anrufe auf Anrufe einen Betriebscode mit einem Sub -Call -Gaslimit S. aufrufen.Sei S1 = S und dann S2 = S1/G1*G2, S3 = S1/G1*G3 usw.
Mit anderen Worten, wir betrachten die erste Art von Gas (in der Tat die Ausführung einer virtuellen Maschine) als eine „Kontoeinheit“ und weisen dann andere Gasarten zu, damit das Kind in jedem Typ aufgerufen werden kann.Dies ist ein bisschen hässlich, aber es maximiert die Abwärtskompatibilität.Wenn wir möchten, dass das Schema zwischen verschiedenen Gasarten „neutraler“ ist, können wir einfach den Parameter des Gasgrenats einen kleinen Teil des verbleibenden Gas darstellen lassen (z. B. [1. . 63] / 64).
> „>In jedem Fall lohnt es sich jedoch zu betonen, dass nach der Einführung der mehrdimensionalen Ausführung von Gas die inhärente Hässlichkeit zunimmt, was schwer zu vermeiden scheint.
Daher ist es unsere Aufgabe, einen komplexen Handel zu erstellen: Ob wir einige der hässlichen Dinge auf EVM -Ebene akzeptieren, um das bedeutende L1 -Skalierbarkeitseinkommen sicher zu veröffentlichen.
Es ist wahrscheinlich, dass es nicht jemand ist, den ich oben erwähnt habe, und es gibt immer noch Platz für elegantere und bessere Dinge.
Vielen Dank für das Feedback und die Überprüfung von Ansgar Dietrichs, Barnabe Monoton und Davide Crapis.