¿Qué es la máquina virtual JIT de Geth?

Mientras descargaba la cadena de bloques que me llevó aproximadamente una semana llegar al bloque 1,09 mil, recibí un mensaje de geth.exe después de reiniciar alrededor de 1050999 -1060888

Eres uno de los pocos afortunados que probará la VM JIT (aleatoria). Si obtiene una falla de consenso, tenga la amabilidad de informar este incidente con el hash de bloque que falló. Puede cambiar a la VM regular configurando --jitvm=false

¿Alguna idea de lo que esto significa? ¿ Es una máquina virtual justo a tiempo ? después de leer y leer, ¿supongo que esto tiene que ser algún tipo de tenedor? Corrígeme si me equivoco, ¡gracias por los comentarios! Debido a mi cerebro de lagarto, reinicié la sincronización.

No puedo agregar humor y decir "¿Ganó la lotería?" sheessk supongo, gracias por el recordatorio en el upvote. Así que digamos que todos somos tontos
Realmente no :) Nuestro sitio actualmente es bastante flexible en comparación con otros, donde las cosas son realmente estrictas, no hay espacio para "gracias", etc. Ejemplo: stackoverflow.com/posts/1642028/revisions

Respuestas (1)

Como habrás adivinado, esta es la nueva máquina virtual Just-In-Time en el gethsoftware del nodo Ethereum.

Desde go-ethereum - cmd/util/flags.go, líneas 683 a 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")
}

Solo el 10 % de las gethinstancias que ejecutan esta nueva versión del software usarán esta VM JIT, y este 10 % se elige al azar.

Si hay una falla importante en la implementación de la nueva máquina virtual JIT, el 90 % de los nodos seguirán extrayendo la cadena de bloques de Ethereum. La falla se puede informar y mientras se soluciona, la función JIT se puede deshabilitar desde la gethlínea de comando usando el parámetro --jitvm=false.

Si desea volver a ver el mensaje, simplemente reinicie gethrepetidamente y, en promedio, debería ver este mensaje 1 de cada 10 reinicios.

No es una bifurcación en la cadena de bloques.

Aquí hay un artículo sobre la nueva máquina virtual JIT: optimización de la máquina virtual Ethereum .

Se llama prueba A/B y asegura que tenemos una variedad de temas que podemos usar si algo sale mal :-) Asegura que, si algo sale mal, todavía tenemos suficientes personas disponibles que se ejecutan "correctamente". Además, aquí hay un artículo sobre el propio JIT medium.com/@jeff.ethereum/go-ethereums-jit-evm-27ef88277520