Was ist die JIT-VM von Geth?

Während ich die Blockchain heruntergeladen habe, was ungefähr eine Woche gedauert hat, um 1,09 Millionen zu blockieren, erhielt ich nach einem Neustart zwischen 1050999 und 1060888 eine Nachricht von geth.exe

Sie sind einer der wenigen Glücklichen, die die JIT VM (zufällig) ausprobieren werden. Wenn Sie einen Konsensfehler erhalten, seien Sie bitte so freundlich, diesen Vorfall mit dem fehlgeschlagenen Block-Hash zu melden. Sie können zur regulären VM wechseln, indem Sie --jitvm=false festlegen

Irgendeine Ahnung, was das bedeutet? Es ist eine virtuelle Just-in-Time - Maschine? Nach dem Lesen und Lesen vermute ich, dass dies eine Art Gabel sein muss? Korrigiert mich, wenn ich falsch liege, danke für die Rückmeldung! Aufgrund meines Echsenhirns habe ich die Synchronisierung neu gestartet.

Ich kann keinen Humor hinzufügen und sagen "Gewonnen im Lotto?" Sheessk, denke ich, danke für die Erinnerung an die positive Bewertung. Also sagen wir alle n'stuff
Nicht wirklich :) Unsere Seite ist derzeit ziemlich locker im Vergleich zu anderen, wo die Dinge wirklich gestrafft sind, kein Platz für "Danke" usw. Beispiel: stackoverflow.com/posts/1642028/revisions

Antworten (1)

Wie Sie erraten haben, ist dies die neue virtuelle Just-In-Time-Maschine in der gethEthereum-Knotensoftware.

Von go-ethereum - cmd/util/flags.go, Zeilen 683 bis 688 :

jitEnabled := ctx.GlobalBool(VMEnableJitFlag.Name)
// if the jit is not enabled enable it for 10 pct of the people
if !jitEnabled && rand.Float64() < 0.1 {
    jitEnabled = true
    glog.V(logger.Info).Infoln("You're one of the lucky few that will try out the JIT VM (random). If you get a consensus failure please be so kind to report this incident with the block hash that failed. You can switch to the regular VM by setting --jitvm=false")
}

Nur 10 % der gethInstanzen, auf denen diese neue Softwareversion ausgeführt wird, verwenden diese JIT-VM, und diese 10 % werden zufällig ausgewählt.

Wenn es einen größeren Fehler in der neuen JIT-VM-Implementierung gibt, werden 90 % der Knoten weiterhin die Ethereum-Blockchain minen. Der Fehler kann gemeldet und während der Behebung kann die JIT-Funktion über die gethBefehlszeile mit dem Parameter deaktiviert werden --jitvm=false.

Wenn Sie die Meldung erneut sehen möchten, starten Sie einfach gethwiederholt neu, und im Durchschnitt sollten Sie diese Meldung bei 1 von 10 Neustarts sehen.

Es ist kein Fork in der Blockchain.

Hier ist ein Artikel über die neue JIT VM – Optimizing the Ethereum Virtual Machine .

Das nennt sich A/B-Testing und stellt sicher, dass wir eine Reihe von Themen haben, die wir verwenden können, wenn etwas schief geht :-) Es stellt sicher, dass wir, wenn etwas schief geht, noch genügend Leute zur Verfügung haben, die "richtig" laufen. Zusätzlich finden Sie hier einen Artikel über das JIT selbst : medium.com/@jeff.ethereum/go-ethereums-jit-evm-27ef88277520