Me resulta muy interesante entender como la EVM interpreta las instrucciones. Excelente clase introductoria, ya me agendo el curso de EVM 👏
Inicia tu camino construyendo la Web3
Bienvenida al desarrollo en blockchain
Por qué iniciar en el desarrollo de blockchain
¿Quién puede ser blockchain developer?
Áreas de aplicación
Conociendo el entorno de desarrollo
Consideraciones básicas para desarrollo
Lenguajes y herramientas para el desarrollo blockchain
Arquitectura básica en Web 3
Glosario criptográfico
Desarrollo en Ethereum
Solidity: el lenguaje para programar contratos inteligentes
OpenZeppelin Contracts
Ethereum Virtual Machine
Mi camino programando - Ernesto García
Primeros pasos en Ethereum
Uso de wallets: Metamask
Redes de prueba
RemixIDE
Entorno de desarrollo con Hardhat
Compilando y desplegando contratos inteligentes
Conectando la blockchain con el navegador: Web3.js y Ether.js
Ejecutando tu aplicación descentralizada
De Web2 a Web3 - Alfredo Bonilla
Seguridad y protocolos de segunda capa
Desarrollando en capa 2
Aprovecha la descentralización - Oscar Barajas
Más allá del desarrollo
Base de datos en blockchain: IPFS, Filecoin y ARWEAVE
Blockchain startups y DAO
Cómo llegué a trabajar en programación - Natacha De La Rosa
Continúa tu aprendizaje en la Escuela de Blockchain y Criptomonedas
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
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 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.
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.
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.
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.
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
Me resulta muy interesante entender como la EVM interpreta las instrucciones. Excelente clase introductoria, ya me agendo el curso de EVM 👏
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.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?