Cryptonews

NeoGo v0.119.0 zielt auf die Gorgon-Hard-Fork-Bereitschaft ab und behebt 41 VM-Diskrepanzen

Source
CryptoNewsTrend
Published
NeoGo v0.119.0 zielt auf die Gorgon-Hard-Fork-Bereitschaft ab und behebt 41 VM-Diskrepanzen

Neo SPCC hat NeoGo v0.119.0 „Yawl“ veröffentlicht, das Protokolländerungen einführt, die beim kommenden Gorgon-Hard-Fork aktiviert werden, 41 MainNet-Transaktionsunterschiede zwischen NeoGo und dem C#-Referenzknoten behebt und Leistungsoptimierungen für Knotenbetreiber liefert. Die Version ist mit C#-Knoten v3.9.2 kompatibel und erfordert keine Neusynchronisierung der Datenbank.

Das Update erscheint, während sich die Infrastrukturteams von Neo auf Gorgon vorbereiten, den nächsten Hard Fork des Netzwerks. Der Neo-Rat stimmte im April dafür, eine vorgeschlagene Senkung der Ausführungsgebühr zu verschieben und stattdessen auf Gorgons dynamisches Opcode-Preismodell zu warten, das Neo SPCC entwickelt hat, um Standardtransaktionen deutlich günstiger zu machen und böswillige Transaktionen exponentiell teurer zu machen. Für den Hard Fork wurde kein Bereitstellungsdatum festgelegt.

Änderungen des Gorgon-Protokolls

Mehrere Verhaltensänderungen in v0.119.0 werden erst wirksam, wenn Gorgon aktiviert wird. Dazu gehört eine strengere Behandlung ungültiger kryptografischer Signaturargumente bei CryptoLib- und System.Crypto-Vorgängen, die nun einen FAULT auslösen, anstatt stillschweigend fortzufahren. Die Version fügt außerdem Prüfungen auf fehlende Operanden für die SHR- und SHL-VM-Anweisungen sowie eine Indexgrenzenprüfung für HASKEY hinzu, wodurch das Verhalten von NeoGo an die erwartete Gorgon-Spezifikation angepasst wird.

Änderungen an der Vertragsverwaltung sind ebenfalls enthalten – der ContractManagement-Cache wird jetzt aktualisiert, bevor der Vertrag bei der Zerstörung blockiert wird, und Vertragskonten werden vor der Vertragsvernichtung gesperrt, beides wirksam bei Gorgon.

VM-Kompatibilitätskorrekturen

v0.119.0 behandelt 41 MainNet-Transaktionen, bei denen NeoGo und der C#-Referenzknoten unterschiedliche FAULT-Ergebnisse erzeugten. Diese Diskrepanzen führten dazu, dass die beiden Implementierungen bestimmte Verträge unterschiedlich verarbeiteten – ein Problem hinsichtlich der Zuverlässigkeit eines Multi-Client-Netzwerks.

Zu den Korrekturen gehören die korrigierte Handhabung von asynchronen System.Contract.CallNative-Rückrufen, die Validierung des Methodenrückgabewerttyps während Vertragsaufrufen und mehrere Refcounting-Korrekturen für das Parsen von PACKMAP-, SETITEM- und SYSCALL-Argumenten. Außerdem wurden mehrere VM-Panikfehler behoben, darunter Abstürze beim Zugriff auf Strukturfelder und eine falsche Antwort von Ledgers getBlock, wenn ein Blockindex über der aktuellen Höhe liegt – NeoGo gibt jetzt null zurück, was dem Verhalten des C#-Knotens entspricht.

Die zugrunde liegende Implementierung von stackitem.Map wurde ebenfalls überarbeitet und von der C#-Referenzimplementierung portiert, um eine geordnete Struktur zu verwenden.

Leistungsverbesserungen

Eine neue DirectRelay-RPC-Option ermöglicht die direkte Übertragung von Transaktionen an Peers, anstatt sie über die Standardwarteschlange für sendrawtransaction-Aufrufe weiterzuleiten. Die Funktion ist besonders relevant, nachdem Ende April im MainNet Blockzeiten von drei Sekunden aktiviert wurden, wo eine schnellere Ausbreitung größere Auswirkungen hat. Neo SPCC stellte fest, dass synthetische Netzwerktests nur minimale Verbesserungen zeigten, obwohl die realen Bedingungen abweichen können.

Der Mempool-Betrieb erhielt Mikrooptimierungen, die zu einer Zeit- und Zuweisungsreduzierung von bis zu 24 % für das übliche Szenario mit gleichen Gebühren führten. Die Zustellung von Konsensnachrichten über die P2P-Ebene wurde ebenfalls verbessert und BoltDB wurde auf eine zuordnungsoptimierte Version aktualisiert, um den Speicherdruck zu verringern.

Betriebsaktualisierungen

Knotenbetreiber, die systemd ausführen, können jetzt die sd_notify-Integration verwenden und so ordnungsgemäße Type=notify-Diensteinheiten mit READY-, RELOADING- und STOPPING-Signalen aktivieren. Es wurde eine neue Prometheus-Metrik für aktive WebSocket-Verbindungen hinzugefügt, die darauf zurückzuführen ist, dass NeoFS-Speicherknoten auf WebSocket-Client-Grenzwerte stoßen.

Vier bestehende Prometheus-Metriken wurden ohne Übergangsfrist umbenannt – current_state_height, current_block_height, current_persisted_height und current_header_height verlieren das Präfix „current_“. Betreiber müssen Dashboards und Warnungen entsprechend aktualisieren.

Für Entwickler wurde der Fehlertyp „actor.ErrExecFailed“ zugunsten von „neorpc.FaultException“ veraltet, was eine Migration in Anwendungen erfordert, die nach Ausführungsfehlern suchen.

Blick nach vorn

NeoGo v0.119.0 bringt den Go-Client näher an die Gorgon-Bereitschaft heran und verbessert gleichzeitig seine Ausrichtung an der C#-Referenzimplementierung. Der Gorgon-Hardfork hat noch kein geplantes Datum, da die dynamische Opcode-Preisgestaltung bereits auf der NeoGo-Seite implementiert ist und auf die Fertigstellung im C#-Knoten wartet. Frühere NeoGo-Berichterstattung finden Sie im NNT-Artikel zu v0.118.0.

Die vollständigen Versionshinweise finden Sie unter dem folgenden Link: https://github.com/nspcc-dev/neo-go/releases/tag/v0.119.0

NeoGo v0.119.0 zielt auf die Gorgon-Hard-Fork-Bereitschaft ab und behebt 41 VM-Diskrepanzen