Código de máquina virtual Ethereum

¿Alguien tiene un ejemplo de cómo se ve el código de bytes EVM? Nuevo en ETH y tratando de entender qué es exactamente lo que ejecuta la máquina virtual. ¿Es similar a cómo se ejecuta el código de bytes JVM desde Java?

¡Gracias un montón!

Respuestas (2)

EVM es bastante similar a JVM en términos de modelo de ejecución. Ambas son máquinas de pila que ejecutan bytecodes. EVM agrega un concepto de almacenamiento y sus instrucciones de código de bytes son más adecuadas para el desarrollo de contratos.

La descripción más completa de EVM es el papel amarillo de Ethereum: https://ethereum.github.io/yellowpaper/paper.pdf ; consulte el punto H.2 para ver el conjunto de instrucciones.

Solidity tiene ensamblaje en línea: http://solidity.readthedocs.io/en/develop/assembly.html

El lenguaje más "cercano al metal" para programar EVM es probablemente LLL.

Tenga en cuenta que LLL probablemente realmente signifique compilador "Lovely Little Lisp" ...

Como escribe Michał, EVM es un código de máquina para una máquina virtual y el Libro amarillo no solo describe las instrucciones en EVM, sino que las define. Si desea aprender EVM, puedo recomendar compilar algunos contratos inteligentes a través de solc (el compilador de Solidity) y luego usar un desensamblador de EVM para leer las instrucciones de ensamblaje que se generaron. ¡Comience por desmontar el contrato inteligente más simple que pueda definir! Si ha intentado leer código ensamblador en cualquier otro idioma, no es demasiado difícil razonar.

El cliente de Ethereum geth viene con un desensamblador.