No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Ethereum Virtual Machine

11/27
Recursos

Todo el funcionamiento de blockchains como Ethereum, o de segundas capas de la misma como Polygon, Arbitrum u Optimisms, entre otras; se debe gracias a la Ethereum Virtual Machine. El corazón técnico de Ethereum.

La CPU de Ethereum

La Ethereum Virtual Machine es una compleja obra de ingeniería de software capaz de poner en funcionamiento todo el protocolo de Ethereum. Podríamos hacer una analogía en su funcionamiento con una típica CPU de cualquier computadora. Su trabajo es procesar instrucciones, una a una.

Cada nodo de la red de Ethereum ejecuta la EVM. Es gracias a esta que es posible la comunicación entre nodos, intercambio de información, ejecución de contratos, almacenamiento de la información, y demás funcionalidades.

Funcionamiento de la EVM

La EVM es una máquina simple con arquitectura de pila (stack). La misma almacena elementos de 256 bits en la pila, e interactúa con una memoria volátil (memory) y un almacenamiento permanente (storage). Las instrucciones que procesa se realiza en forma cíclica, entregadas estas en formato "bytecode".

Como desarrolladores, programamos la lógica de nuestros contratos inteligentes en lenguajes como Solidity. Cualquier lenguaje que compile para la EVM es una capa de abstracción de un lenguaje hexadecimal mucho más complejo de entender para el ser humano denominado bytecode.

Funcionamiento de bytecode

El bytecode es un código resultado de compilar código fuente escrito en Solidity, u otros lenguajes. El mismo fue creado especialmente para la EVM y solo funciona para esta.

Un ejemplo de bytecode puede verse de la siguiente manera: 0x6080604052.... Una larga cadena de números hexadecimales que la EVM sabe traducir en operaciones y parámetros.

Las instrucciones se recorren una a una gracias a una pieza fundamental de la EVM llamada "program counter". Retomando el ejemplo anterior, 0x6080604052..., el contador toma el operador 60 y el parámetro 80, evalúa y ejecuta la instrucción. Luego toma el 60 y el 40, y nuevamente evalúa y ejecuta. Así, hasta finalizar con todo el bytecode.

Podemos entender la ejecución de instrucciones por parte del program counter con el siguiente gráfico.

Arquitectura EVM

El contador tomar las operaciones del bytecode y este, a su vez, puede tomar del stack en memoria o del storage cualquier tipo de dato que necesite para hacer su labor. Parámetros, variables, etc.

Esta es una sencilla forma de comprender el funcionamiento de la EVM. Encontrarás, aquí en Platzi, el Curso de Manejo de la Ethereum Virtual Machine donde aprenderás a profundidad sobre el funcionamiento de la máquina virtual de Ethereum.

Conclusión

La EVM es una máquina abstracta, distribuida en cientos de nodos en una cadena de bloques, capaz de ejecutar instrucciones. Solidity es solo uno de los lenguajes capaces de ser compilados para este propósito. Te darás cuenta de que no cualquier lenguaje de programación está preparado para esto.

¿Conoces algún otro lenguaje compatible con la EVM?


Contribución creada por: Kevin Fiorentino (Platzi Contributor).

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Me resulta muy interesante entender como la EVM interpreta las instrucciones. Excelente clase introductoria, ya me agendo el curso de EVM 👏

La EVM es una gran obra de ingeniería de software.
Otros lenguajes que compila para la EVM son Vyper y hace poco conocí Cairo.

Un resumen de lo aprendido, por el momento.

Hace poco supe que existe un lenguaje llamado **Cairo **que permite escribir smart contracts creo que en la blockchain de StarckNet, creo que **Rust **tambien permite escribir smart contracts

Es genial comprender toda la arquitectura que esta detrás de lo que es Ethereum, que va desde su blockchain hasta elementos que lo diferencian como la Evm, su funcionamiento en forma de Stack interactuando con memory y storage, el Bytecode con el Program Counter y lógicamente los Smarts Contracts, cool!. Dentro de los lenguajes tenemos Rust, Cairo, Vyper y por supuesto Solidity.