Geth 1.17.4: Wartungsrelease mit Fortschritten für den Amsterdam-Hardfork

imagem 5

Dies ist ein Wartungsrelease mit zahlreichen gesammelten Fehlerbehebungen und Verbesserungen, das allen Nutzern empfohlen wird. Gleichzeitig setzt es die Implementierungsarbeiten für den bevorstehenden Amsterdam-Hardfork fort.

Besonders hervorzuheben: Clef wurde entfernt. Der eigenständige Clef-Signer ist in ein separates Repository unter https://github.com/ethereum/clef umgezogen.

Amsterdam-Hardfork-Implementierung

Für Amsterdam wurden mehrere EIPs umgesetzt. EIP-7928 (Block-Level Access Lists) ermöglicht die Erstellung und Überprüfung von Zugriffslisten auf Blockebene während der Ausführung; die serverseitige Seite der eth/71 BAL-Nachrichten ist nun implementiert. EIP-8189 bringt mit snap/2 ein neues Zustandssynchronisationsprotokoll, das auf diesen Blockzugriffslisten basiert. EIP-8037 erhöht die Gas-Kosten für die Zustandserstellung; für die mehrdimensionale Gasabrechnung stellt das Tracing-System jetzt den neuen OnGasChangeV2-Hook bereit. Die Engine API wurde um engine_newPayloadWithWitnessV5 erweitert und das Witness-Format verwendet nun die kanonische Feldreihenfolge aus der Spezifikation. Das evm t8n-Werkzeug unterstützt jetzt BAL, Slot-Nummern und den Export von Blättern im Binär-Trie-Format. Schließlich wird nach Amsterdam die Slot-Nummer für den anstehenden Block gesetzt.

Geth-Verbesserungen

Die Caches von Geth orientieren sich jetzt an der durch cgroups gesetzten Speicherbegrenzung, etwa bei Verwendung von Docker --memory. Eine Reihe lang veralteter Kommandozeilenoptionen wurde entfernt und kleinere Fehler bei Flags und Logging wurden behoben.

RPC-Weiterentwicklungen

Es gibt neue RPC-Methoden: eth_baseFee liefert die Basisgebühr des nächsten Blocks, eth_capabilities erlaubt Clients die Abfrage, welche historischen Daten ein Knoten bereitstellen kann, und debug_clearTxpool leert den Transaktionspool. Zustandslesende Methoden wie eth_getBalance, eth_getCode und eth_getStorageAt nutzen nun standardmäßig den Blockparameter latest, wenn er weggelassen wird. Probleme mit eth_simulateV1 wurden beseitigt: ein falscher Fehlercode für eine zu niedrige Basisgebühr sowie eine Regression bei Withdrawals vor dem Shanghai-Fork. debug_setHead gibt Rücksetzfehler jetzt korrekt weiter, anstatt sie still zu ignorieren. Transaktionen nach EIP-7702 mit einer leeren Zieladresse werden abgelehnt. HTTP-Antworten setzen nun stets den Content-Length-Header, und ein Statuscode-Fehler beim WebSocket-Handshake wurde behoben. Die Konfiguration von Trace-Context-Propagation über den traceparent-Header ist möglich, und Antwort-Schreibvorgänge werden jetzt ebenfalls getraced.

GraphQL

Anfrage-Bodies sind jetzt auf 5 MiB beschränkt. Log-Range-Abfragen mit begin > 0 und end == 0 werden abgewiesen. Der Block.raw-Resolver liefert leere Bytes, wenn der Blockkörper fehlt.

Kern (Core)

Ein globaler Cache für JUMPDEST-Bitmaps beschleunigt die EVM-Ausführung. EVM-Stack-Operationen werden jetzt direkt im Speicher ausgeführt, wodurch überflüssige Kopien entfallen. Neue Metriken messen Code-Cache-Treffer und -Fehlversuche. Zudem wurde eine Race-Condition beim Herunterfahren der Snapshot-Erzeugung behoben.

Engine-API & Blobs

Die JSON-Kodierung für große Blob-Payloads wurde optimiert und die Gzip-Komprimierung für die Engine API deaktiviert. Mit engine_hasBlobs gibt es eine neue Methode; engine_getBlobs zählt jetzt nur noch tatsächlich verfügbare Blobs. Ein Cache für GetBlobs-Anfragen reduziert die Latenz, und die entsprechenden Endpunkte verfügen über otel-Tracing. Reorganisierte v0-Blob-Sidecar-Transaktionen werden nun verworfen, anstatt konvertiert zu werden. testing_commitBlockV1 wurde als Schreib-Gegenstück zu testing_buildBlockV1 hinzugefügt. Neue Payloads werden unabhängig vom Sync-Status nun direkt beim Genesis-Block importiert.

Netzwerk

Die NAT-STUN-Erkennung schlägt auf IPv6-Servern nicht mehr fehl. Mehrere Robustheitsverbesserungen für die Snap-Synchronisation wurden umgesetzt: nicht abgedeckter Zustand wird vor dem Wiederaufnehmen entfernt, ein Stillstand beim Aufholen wurde behoben, die Synchronisation startet neu, wenn die benötigte BAL nicht verfügbar ist, und der Pivot wird nach Abschluss des Zustands-Downloads eingefroren.

Für einen vollständigen Überblick über alle Änderungen konsultieren Sie bitte den Geth 1.17.4-Meilenstein.


Wie bei allen vorherigen Versionen finden Sie:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert