Saltar al contenido
0%

¿Qué es la máquina virtual de Ethereum (EVM)?

Alchemy team headshot

Escrito por Alchemy

Publicado el 2 de marzo de 20226 min de lectura

La EVM: una máquina con muchos nombres

La Computadora Mundial. La Máquina Imparable. El Corazón de Ethereum. La Ethereum Virtual Machine (EVM) tiene muchos nombres, lo que resalta su importancia para la red Ethereum. Es la característica central que hace que no sea solo un 'libro contable distribuido' como Bitcoin, sino una 'máquina de estados distribuida'.

La EVM permite a los desarrolladores crear contratos inteligentes en un lenguaje de programación llamado Solidity. Una aplicación popular de los contratos inteligentes es gestionar la generación e intercambio de tokens. Muchas aplicaciones y protocolos usan tokens para recompensar a los usuarios por acciones importantes para su objetivo. Sin la EVM, nada de esto sería posible.

Para entender mejor el poder de la EVM, veamos algunos de sus componentes centrales:

Máquinas virtuales: la plataforma de la EVM

Las redes descentralizadas son difíciles de derribar. Si quisieras hacerlo, tendrías que eliminar cada nodo actualmente en línea y encontrar una forma de evitar que aparezcan más.

Diagrama que compara las topologías de red centralizada, descentralizada y distribuida
Redes distribuidas

Una buena forma de escalar una red descentralizada es mediante el uso de máquinas virtuales (VM). Esto se debe a que las VM pueden ejecutarse en distintos sistemas operativos y hardware, y desde cualquier ubicación geográfica. Las VM funcionan como una capa de abstracción entre el código y la máquina que lo ejecuta.

Las VM funcionan de manera similar a una máquina física con almacenamiento, memoria y CPU, pero operan puramente como código. En teoría, cualquiera puede ejecutar una VM, lo que la convierte en una plataforma altamente portable para una red descentralizada. La EVM utiliza una red descentralizada de nodos para ejecutar contratos inteligentes.

Contratos inteligentes: la aplicación de la EVM

Los contratos inteligentes son líneas de código autoejecutables que permiten a las partes realizar transacciones entre sí sin necesidad de una autoridad central. Dentro de un contrato inteligente hay una lista de operaciones definidas que se ejecutan cuando se cumplen ciertas condiciones, dentro o fuera de la cadena. Algunas operaciones pueden ser transferir fondos a una dirección determinada, comunicarse con otro contrato o incluso crear un nuevo contrato. En lugar de que un tercero ejecute la transacción, cualquier emisor puede enviar fondos a la dirección del contrato inteligente para activar estas operaciones.

Diagrama de cómo un contrato inteligente se autoejecuta cuando se cumplen sus condiciones
Cómo funciona un contrato inteligente

Lo que hace que los contratos inteligentes sean un método seguro para realizar transacciones es el hecho de que el código no puede alterarse ni cambiarse. Siempre hay un resultado esperado del contrato inteligente, que es la confianza incorporada en el código. Cada vez que se ejecuta un contrato, se dice que altera el estado de la EVM.

La EVM puede describirse como una "máquina de estados" porque es responsable de computar los cambios de estado que resultan de la ejecución del código de los contratos inteligentes. Esto significa que mantiene los saldos de ether de las cuentas, el almacenamiento de datos de los contratos inteligentes, y las transacciones tanto a nivel de cuenta como de contrato a medida que se completan. Todas estas acciones son las que cambian el 'estado' de la red.

Diagrama de cómo las transacciones EVM cambian el estado de la red Ethereum
Transacciones EVM

Los contratos inteligentes se escriben principalmente en el lenguaje Solidity. La EVM no puede ejecutar Solidity directamente, así que primero el código debe compilarse a instrucciones de máquina de nivel inferior llamadas opcodes.

Opcodes: el lenguaje de la EVM

La EVM se describe ampliamente como Turing completa, o más precisamente, cuasi-Turing completa. Esto significa que la EVM puede, en teoría, resolver cualquier problema computacional. Esto se logra ejecutando instrucciones a nivel de máquina llamadas opcodes de la EVM.

Los opcodes de la EVM ayudan a la EVM a completar las tareas específicas de un contrato inteligente o una transacción. Actualmente, hay aproximadamente 150 opcodes que la EVM puede ejecutar. Cubren una variedad de operaciones que incluyen: aritmética, detención, registro, duplicación, push, memoria, comparación e intercambio. Así como también la obtención de información de bloques y del entorno. Puedes encontrar una lista de opcodes aquí.

Diagrama de los opcodes EVM, las instrucciones a nivel de máquina que ejecuta la EVM
Opcodes EVM

Por eficiencia, la EVM convierte su bytecode a opcode, donde a cada opcode se le asigna uno o más bytes en el bytecode. Cada operación de opcode requiere una cantidad específica de gas para ser ejecutada por la EVM. Probablemente hayas escuchado hablar sobre el gas, pero ¿qué es?

Gas: el combustible de la EVM

El gas es probablemente el tema más comentado y menos comprendido en relación con la EVM. Al momento de escribir esto, los precios del gas pueden ser extremadamente altos, aunque hay esfuerzos por mejorar esto. Los precios altos del gas pueden ser una barrera importante para que Ethereum sea adoptado de forma masiva. Pero ¿por qué tenemos que pagar precios de gas y qué causa que el precio sea tan alto?

El propósito del gas es actuar como una tarifa por la computación de las operaciones de un contrato inteligente realizada por cada nodo de Ethereum. Debe existir una tarifa por la computación para evitar que un atacante detenga la red desplegando una gran cantidad de contratos complejos que requieran tiempos de computación prolongados. Este tipo de ataque DDoS se desalienta porque resultaría demasiado costoso de ejecutar.

Cada opcode tiene un costo de gas asignado, y los opcodes más complejos tienen costos más altos. Por ejemplo, una suma simple cuesta 3 de gas y cada transacción comienza con un costo de 21,000 de gas. La mayoría de las quejas no son sobre el gas en sí, sino sobre el límite de gas necesario para completar una transacción con éxito.

El límite de gas es la cantidad máxima de gas que el emisor está dispuesto a pagar para que la transacción se ejecute y valide. Para obtener la tarifa de gas, puedes multiplicar el costo total de gas (los valores base de las operaciones) por el precio del gas (el costo de completar esas operaciones). De forma similar a cuando cargas combustible en tu auto, existe el costo del combustible en sí y la cantidad de combustible necesaria para llegar a tu destino.

Tarifa de gas = Costo total de gas x Precio del gas

La tarifa de gas sirve para compensar al validador, quien es responsable de asegurarse de que la información en la transacción sea válida, de que no haya errores/excepciones por parte de la EVM, y de que el emisor cuente con los fondos necesarios para pagar la computación. Cuando un emisor establece un límite de gas alto, indica que la operación es compleja, lo que incentiva a los validadores a tomar la transacción a cambio de una recompensa mayor.

Diagrama de cómo las tarifas de gas compensan a los validadores por el cómputo EVM
Gas de la EVM

Cuando la actividad de la red es alta, los validadores simplemente pueden elegir del conjunto de transacciones pendientes aquellas con límites de gas más altos. Las tarifas de gas están, por lo tanto, influenciadas por la oferta y la demanda. Lo bueno es que cualquier gas no consumido se reembolsa al emisor.

Si se alcanza el límite de gas prepagado, el validador de todas formas es compensado por su trabajo, pero la transacción no se completa. De esta forma, la EVM es cuasi-Turing completa, ya que las computaciones que puede completar están limitadas a la cantidad que un emisor esté dispuesto a pagar para que se completen.

Casos de uso de la EVM

Ahora que hemos cubierto cada uno de los elementos de la EVM, veamos cómo estas partes se combinan para impulsar los proyectos en Ethereum:

Tokens ERC-20

Los tokens ERC-20 son tokens que pueden transferirse entre direcciones, tienen una cantidad fija y su valor es el mismo en toda la red. Los contratos inteligentes que siguen una estructura de datos definida en la EVM se usan para crear tokens ERC-20. Esta estructura de datos controla el nombre, la distribución, la cantidad de suministro y el monitoreo del token.

Varias aplicaciones y proyectos usan tokens ERC-20 para incentivar a los usuarios. Livepeer, una red descentralizada de transmisión de video, usa el token Livepeer (LPT) para incentivar a quienes proveen recursos a la red. Nexus Mutual, un seguro descentralizado basado en contratos inteligentes, usa el token NXM para permitir a los usuarios adquirir cobertura y hacer reclamos.

Exchanges descentralizados

Un exchange descentralizado despliega contratos inteligentes que permiten a los usuarios intercambiar tokens ERC-20. Estos contratos inteligentes se llaman Automated Market Makers (AMM) porque permiten a los usuarios contribuir a pools de liquidez de ciertos tokens sin que ningún tercero los controle. Algunos de los exchanges populares como Uniswap y SushiSwap son aplicaciones de este modelo AMM.

Diagrama de un creador de mercado automatizado que empareja intercambios de tokens mediante pools de liquidez
Creador de mercado automatizado

Tokens ERC-721

El otro estándar de token ampliamente popular es el primo no fungible de ERC-20, ERC-721. Estos contratos inteligentes se usan para acuñar NFT's (tokens no fungibles), que son tokens con un valor único en toda la blockchain. Crear obras de arte únicas es el caso de uso más importante para este tipo de tokens. Otros proyectos en el ámbito de los videojuegos, como Axie Infinity y God Unchained, usan estos tokens para coleccionables dentro del juego.

La EVM y más allá

La EVM hace de Ethereum una plataforma y no solo una blockchain. Sin embargo, la EVM no es un sistema perfecto. Existen muchos desafíos en torno a la velocidad de las transacciones y el rendimiento de la red. Esta es un área de enfoque para la comunidad de desarrollo y para la hoja de ruta de Ethereum. Si Ethereum ha de cumplir su promesa de revolucionar la forma en que transaccionamos entre nosotros, será gracias a mejoras en la EVM.

Background gradient

Construye magia blockchain

Alchemy combina los productos y herramientas de desarrollo Web3 más potentes con recursos, comunidad y un soporte legendario.