¿Qué es la EVM?
La EVM, o Ethereum Virtual Machine, es el entorno de ejecución que procesa transacciones y ejecuta código de contratos inteligentes en Ethereum.Actúa como un ordenador virtual compartido cuyas reglas siguen los clientes de ejecución de Ethereum de todo el mundo.Cuando un usuario transfiere un token, intercambia criptomonedas mediante una aplicación descentralizada, crea un NFT, aporta garantías a un protocolo de préstamos o llama a otro contrato inteligente, la EVM calcula el resultado de esa acción.La EVM no existe como una única máquina física o servidor.En su lugar, cada nodo de Ethereum participante aplica de forma independiente las mismas reglas de ejecución a las mismas transacciones ordenadas.Este diseño permite que los nodos confirmen que los saldos de las cuentas, el almacenamiento de los contratos, la propiedad de los tokens y otros cambios de estado de la blockchain se han calculado correctamente.La documentación oficial de Ethereum Virtual Machine describe la EVM como un entorno virtual descentralizado que ejecuta código de forma coherente en los nodos de Ethereum.
La EVM es una parte fundamental de la capa de ejecución de Ethereum, pero no constituye toda la red Ethereum.Ethereum también depende del consenso, la comunicación entre pares, el almacenamiento de datos, la producción de bloques, los validadores y otros componentes del protocolo.La EVM se centra específicamente en la computación y las transiciones de estado.¿Qué hace la EVM?
La EVM lee las instrucciones de las transacciones, ejecuta el bytecode de los contratos inteligentes, calcula el consumo de gas y determina cómo debe cambiar el estado de Ethereum.Puede transferir ETH, llamar a una función de un contrato, desplegar un contrato nuevo, actualizar el almacenamiento de un contrato, crear registros de eventos o devolver los datos solicitados.Antes de aplicar una transacción, el sistema de ejecución de Ethereum comprueba requisitos como la firma del remitente, el nonce, el saldo disponible, el límite de gas y el formato de la transacción.Si la transacción llama a un contrato inteligente, la EVM ejecuta sus instrucciones en el orden definido por el bytecode.La EVM también puede llamar a otros contratos durante la misma transacción.Esta capacidad permite que las aplicaciones descentralizadas combinen varios protocolos y sistemas de tokens en una sola operación atómica.Tras la ejecución, la EVM produce un cambio de estado satisfactorio o notifica un fallo.Si la ejecución se revierte, normalmente se cancelan los cambios de estado previstos en el contrato, aunque, por lo general, el remitente sigue pagando por el trabajo computacional ya realizado.El resultado final de la ejecución puede incluir saldos actualizados, almacenamiento modificado, registros emitidos, datos devueltos y un recibo de transacción.Por qué es importante la EVM en el mundo cripto
La EVM es importante porque convierte Ethereum de una simple red para transferir criptomonedas en una plataforma blockchain programable.Sin un entorno de ejecución programable, una blockchain puede limitarse principalmente a registrar transferencias de su activo nativo.La EVM permite a los desarrolladores crear tokens, mercados de préstamos, protocolos de trading descentralizados, sistemas de stablecoins, juegos blockchain, herramientas de gobernanza, aplicaciones de identidad y otros servicios on-chain.Los contratos inteligentes que se ejecutan en la EVM pueden custodiar activos y aplicar reglas sin que un administrador central tradicional tenga que aprobar cada acción.Cualquier persona que pueda enviar una transacción válida y pagar la comisión requerida puede utilizar las mismas reglas de ejecución.Esta estructura sin permisos facilita la creación de aplicaciones cripto abiertas que pueden interactuar entre sí.La EVM también se ha convertido en un estándar técnico importante más allá de Ethereum, ya que muchas otras redes blockchain utilizan un entorno de ejecución compatible o equivalente con la EVM.Esta adopción más amplia permite a los desarrolladores reutilizar contratos inteligentes, wallets, lenguajes de programación, estándares de tokens y herramientas de desarrollo en varias redes.¿Es la EVM una blockchain?
La EVM no es una blockchain por sí misma.Es el sistema de ejecución virtual que se utiliza para calcular los efectos de las transacciones de una blockchain.Ethereum es la red blockchain que registra bloques, mantiene el consenso, distribuye datos y utiliza la EVM para procesar actividad programable.Una comparación útil es que Ethereum es la red completa, mientras que la EVM es el motor de computación de su capa de ejecución.Otras redes blockchain pueden implementar la EVM sin compartir el historial de la blockchain de Ethereum, sus validadores, saldos, presupuesto de seguridad ni activo nativo.Por eso, dos cadenas basadas en la EVM pueden ejecutar código de contratos inteligentes parecido y, aun así, seguir siendo redes completamente independientes.Cómo procesa una transacción la EVM
Una transacción EVM suele comenzar cuando un usuario elige una acción en una wallet de criptomonedas o una aplicación descentralizada.La wallet crea una transacción que incluye detalles como la dirección de destino, el valor transferido, los datos de entrada, el nonce, el límite de gas y los ajustes de comisiones.El usuario firma la transacción con una clave privada.La firma demuestra que el controlador de la cuenta remitente ha autorizado la transacción.La transacción firmada se envía a un nodo de Ethereum y puede entrar en el pool de transacciones pendientes.Un productor de bloques selecciona transacciones y las incluye en una carga de bloque ordenada.La EVM procesa cada transacción sobre el estado creado por todas las transacciones anteriores de ese bloque.El orden importa porque una transacción puede modificar los saldos, precios, autorizaciones o valores de almacenamiento que utiliza otra transacción.Tras procesar el bloque completo, los clientes de ejecución calculan el estado resultante de Ethereum.Otros nodos repiten el mismo trabajo para confirmar que el bloque propuesto cumple las reglas de Ethereum.La documentación oficial de Ethereum sobre transacciones explica cómo las instrucciones firmadas pueden transferir valor, crear contratos o llamar a contratos existentes.
Transiciones de estado de la EVM
Una transición de estado es el paso de un estado válido de Ethereum a otro estado válido de Ethereum.El estado de Ethereum incluye cuentas, saldos de ETH, código de contratos inteligentes, almacenamiento de contratos y nonces de las cuentas.La EVM recibe como datos de entrada el estado actual y una transacción ordenada.A continuación, aplica las reglas de ejecución de Ethereum para calcular el estado siguiente.En una transferencia básica de ETH, la transición de estado reduce el saldo del remitente y aumenta el del destinatario.En un intercambio de tokens, la transición puede actualizar saldos de tokens, autorizaciones, reservas de pools de liquidez, registros de comisiones y registros de eventos.En una transacción de préstamo, puede actualizar las cantidades de garantías, los saldos de deuda, los índices de intereses y las mediciones de riesgo de las cuentas.Todos los clientes de ejecución honestos deberían calcular la misma transición de estado a partir de las mismas condiciones iniciales.Este comportamiento determinista es esencial, ya que los nodos deben coincidir en el resultado sin confiar en un ordenador central.Cuentas de Ethereum y EVM
Ethereum tiene cuentas de propiedad externa y cuentas de contrato.Una cuenta de propiedad externa se controla mediante una clave privada.Una cuenta de contrato se controla mediante código de contrato inteligente.Ambos tipos de cuenta pueden tener ETH, pero su comportamiento es diferente.Una cuenta de propiedad externa puede iniciar una transacción cuando su controlador la firma.Una cuenta de contrato no firma de forma independiente una transacción normal con una clave privada.Su código se ejecuta cuando recibe una llamada válida a través de otra transacción o interacción con un contrato.La documentación oficial de Ethereum sobre cuentas explica que las cuentas pueden estar controladas por usuarios o desplegarse como contratos inteligentes.
La EVM lee la información de las cuentas al validar transacciones, transferir valor, cargar código de contratos y actualizar el almacenamiento.Contratos inteligentes y EVM
Un contrato inteligente es un programa almacenado en una dirección de Ethereum.La EVM ejecuta ese programa cuando una transacción u otro contrato llama a una de sus funciones.Los contratos inteligentes pueden contener variables, funciones, permisos, eventos, errores y reglas para gestionar activos digitales.Los desarrolladores suelen escribir contratos inteligentes de Ethereum en Solidity o Vyper.El código fuente se compila en bytecode EVM de bajo nivel antes del despliegue.La guía oficial de Ethereum sobre contratos inteligentes explica que desplegar e interactuar con contratos requiere transacciones y gas.
Una vez desplegado un contrato, su bytecode de ejecución se almacena como parte de la cuenta del contrato.La EVM lee y ejecuta ese bytecode, en lugar de interpretar directamente el código fuente original de Solidity o Vyper.Esta distinción es importante porque el bytecode desplegado es el código que realmente controla el comportamiento on-chain.¿Qué es el bytecode EVM?
El bytecode EVM es la secuencia de instrucciones legible por máquina que ejecuta Ethereum Virtual Machine.Suele mostrarse como un valor hexadecimal largo.Cada parte del bytecode representa un opcode, un valor de datos u otra información de ejecución.El código fuente de un contrato inteligente es más fácil de leer para las personas, mientras que el bytecode está diseñado para que lo procese la EVM.Un contrato desplegado suele tener código de creación y código de ejecución.El código de creación se ejecuta una sola vez durante el despliegue y devuelve el código de ejecución que permanece en la dirección del contrato.El código de ejecución se ejecuta cada vez que los usuarios u otros contratos interactúan con el contrato desplegado.La introducción de Solidity a los contratos inteligentes explica que la EVM lee, interpreta y ejecuta los bytes almacenados en el área de código de un contrato.
Los desarrolladores suelen publicar y verificar el código fuente para que los usuarios puedan comparar el contrato legible con el bytecode desplegado.¿Qué son los opcodes de la EVM?
Los opcodes son las instrucciones individuales de bajo nivel que entiende la EVM.Cada opcode realiza una operación específica.Algunos realizan operaciones aritméticas, comparaciones o cálculos bit a bit.Otros leen datos de transacciones, inspeccionan una dirección, cargan memoria, acceden al almacenamiento de un contrato, crean registros o llaman a otro contrato.Algunos ejemplos son ADD para sumar, SLOAD para leer el almacenamiento de un contrato, SSTORE para modificarlo, CALL para llamar a otra cuenta y REVERT para detener la ejecución y devolver un error.La referencia oficial de opcodes de Ethereum EVM enumera las instrucciones disponibles y sus costes de gas.
Los opcodes se ejecutan secuencialmente, salvo que una instrucción cambie el contador del programa o finalice la ejecución.Las actualizaciones de Ethereum pueden añadir instrucciones, modificar los costes de gas o cambiar el comportamiento de ciertas operaciones.Por tanto, los ajustes del compilador deben tener como objetivo una versión de la EVM compatible con la red de destino.Cómo funciona la pila de la EVM
La EVM suele describirse como una máquina virtual basada en pila.Una pila es una estructura de datos temporal que sigue el orden «último en entrar, primero en salir».Los opcodes de la EVM suelen tomar valores de la parte superior de la pila y devolver el resultado a esa misma posición.Por ejemplo, una instrucción de suma retira dos valores de la pila, los suma y vuelve a colocar el resultado en ella.La EVM utiliza palabras de 256 bits para muchas operaciones.Este tamaño de palabra es adecuado para los cálculos criptográficos y los valores de las cuentas de Ethereum.La pila tiene una profundidad limitada, por lo que los compiladores y desarrolladores deben organizar cuidadosamente los cálculos complejos.Un error de pila puede hacer que falle la ejecución.Memoria de la EVM
La memoria de la EVM es un área temporal direccionable por bytes disponible durante una llamada a un contrato.Puede contener argumentos de funciones, datos devueltos, matrices temporales, valores codificados y resultados de cálculos intermedios.La memoria se borra al terminar el contexto de ejecución actual.No se utiliza para el almacenamiento on-chain permanente.El coste de gas de la memoria puede aumentar cuando un contrato accede a áreas de memoria más grandes.Por tanto, un uso eficiente de la memoria puede reducir el coste de las transacciones complejas.Los desarrolladores deben distinguir entre memoria y almacenamiento, ya que ambas áreas tienen duraciones, propósitos y costes de gas diferentes.Almacenamiento de la EVM
El almacenamiento de la EVM es el área de datos persistentes asociada a un contrato inteligente.Los valores almacenados siguen formando parte del estado de Ethereum una vez finalizada la transacción.Los contratos utilizan el almacenamiento para saldos de tokens, registros de propiedad, ajustes de protocolos, deuda de cuentas, votos de gobernanza y otra información a largo plazo.Escribir en el almacenamiento suele ser más caro que leer memoria temporal, ya que todos los nodos que validan deben conservar y procesar el cambio de estado.El almacenamiento se organiza en espacios de 256 bits.Solidity asigna variables de alto nivel, matrices, estructuras y mappings a esos espacios conforme a reglas de disposición definidas.Los cambios inseguros en la disposición del almacenamiento de un contrato actualizable pueden corromper los datos existentes.Por ello, el diseño del almacenamiento es importante para la seguridad de los contratos inteligentes y la optimización del gas.Calldata y datos devueltos
Calldata son los datos de entrada de solo lectura que se proporcionan a una llamada externa a un contrato.Suele contener un selector de función seguido de argumentos codificados.La EVM utiliza esta información para determinar qué función debe ejecutarse y qué valores debe recibir.Calldata se diferencia de la memoria porque el contrato receptor no puede modificarla directamente.Los contratos también pueden devolver datos a la cuenta o al contrato que los llama.Los datos devueltos pueden incluir un saldo de tokens, una cotización calculada, el resultado de una transacción o un error codificado.Las aplicaciones externas suelen utilizar llamadas de solo lectura para simular funciones de contratos y obtener datos devueltos sin crear una transacción on-chain.Gas y EVM
El gas es la unidad que mide el trabajo computacional realizado por la EVM.Cada opcode tiene un coste de gas definido.Una transferencia sencilla de ETH suele requerir menos gas que una transacción compleja que implique varios contratos inteligentes y cambios de almacenamiento.El remitente elige un límite de gas que establece la cantidad máxima que puede consumir la transacción.Si la ejecución agota todo el gas disponible antes de completarse, la transacción se queda sin gas y los cambios de estado previstos se revierten.El remitente sigue pagando por la computación ya realizada.La documentación oficial de Ethereum sobre gas y comisiones explica que las transacciones de contratos inteligentes más complejas requieren más trabajo computacional y un límite de gas mayor.
El gas impide que los programas utilicen recursos ilimitados de la red.Sin gas, un código defectuoso o malicioso podría imponer una carga de computación interminable a todos los clientes de ejecución.Límite de gas frente a precio del gas
El límite de gas es la cantidad máxima de gas computacional que puede utilizar una transacción.El precio del gas determina cuánto está dispuesto a pagar el remitente por cada unidad de gas conforme a las reglas de comisiones aplicables.Un límite de gas alto no significa necesariamente que la transacción vaya a consumir todo ese gas.Por lo general, el remitente paga en función de la cantidad realmente utilizada, conforme a las reglas de comisiones vigentes.Un límite de gas demasiado bajo puede hacer que una transacción falle antes de completar la ejecución.Una comisión demasiado baja puede dejar la transacción pendiente cuando la demanda de espacio en los bloques es elevada.Las wallets suelen estimar ambos valores, pero las estimaciones pueden cambiar porque el estado de Ethereum y la demanda de la red pueden variar antes de que la transacción se incluya en un bloque.Contratos precompilados
Los contratos precompilados son funciones especiales del protocolo disponibles en direcciones reservadas de Ethereum.Se pueden llamar de forma parecida a un contrato inteligente normal.Sin embargo, su comportamiento está implementado directamente por los clientes de ejecución, en lugar de mediante bytecode EVM normal almacenado en la dirección.Los precompilados suelen utilizarse para operaciones criptográficas que resultarían ineficientes si se realizaran mediante secuencias de opcodes convencionales.La documentación de Solidity sobre contratos precompilados explica que su comportamiento y consumo de gas se implementan dentro del entorno de ejecución de la EVM.
Las actualizaciones de Ethereum pueden introducir precompilados adicionales cuando la red necesita operaciones estandarizadas más eficientes.Llamadas de mensaje
Una llamada de mensaje es una interacción de la EVM en la que una cuenta llama a otra.Una cuenta de propiedad externa puede iniciar el proceso enviando una transacción firmada.Durante la ejecución, un contrato inteligente puede llamar a otro contrato.Una llamada de mensaje puede transferir ETH, proporcionar datos de entrada, asignar gas y solicitar la ejecución del código de un contrato.Las llamadas anidadas permiten que varias aplicaciones interactúen durante una misma transacción.Sin embargo, también plantean riesgos de seguridad, ya que un contrato externo puede comportarse de forma inesperada o maliciosa.Los contratos seguros deben gestionar cuidadosamente las llamadas externas y proteger el estado importante frente a la reentrada y otros riesgos de interacción.Creación de contratos
La EVM puede crear un nuevo contrato inteligente al procesar una transacción de creación de contratos o un opcode de creación.El despliegue comienza con el código de inicialización.El código de inicialización puede procesar argumentos del constructor, establecer valores iniciales de almacenamiento y devolver el bytecode de ejecución.Después, el bytecode de ejecución se almacena en la nueva dirección del contrato.El despliegue de contratos requiere gas, ya que la EVM debe ejecutar el código de creación y añadir código y estado persistentes a Ethereum.Los contratos más grandes y los constructores más complejos suelen costar más de desplegar.Un despliegue puede fallar si se queda sin gas, infringe las reglas de ejecución o revierte durante la inicialización.Eventos y registros
Los contratos inteligentes pueden crear registros durante la ejecución de la EVM.Los desarrolladores suelen exponer estos registros mediante eventos de Solidity.Los eventos pueden registrar transferencias de tokens, intercambios, depósitos, votos de gobernanza, cambios de permisos y otras actividades de contratos.Los registros se almacenan en los recibos de transacción y las aplicaciones externas pueden indexarlos.Son útiles para wallets, exploradores de blockchain, sistemas de análisis e interfaces de aplicaciones descentralizadas.Los contratos no pueden leer directamente los registros de eventos anteriores del mismo modo que leen el almacenamiento.Por tanto, un evento no debería ser la única fuente de información que necesite una ejecución futura del contrato.Reversiones y transacciones EVM fallidas
Una transacción EVM puede fallar por varios motivos.Puede tener una firma no válida, un nonce incorrecto, saldo insuficiente, gas inadecuado o un formato no compatible.Un contrato inteligente también puede revertir deliberadamente si no se cumple una condición requerida.Por ejemplo, una transferencia de tokens puede revertirse si el remitente no tiene suficientes tokens.Un intercambio descentralizado puede revertirse si la cantidad recibida queda por debajo del mínimo establecido por el usuario.Una comprobación de permisos del contrato puede revertirse si la persona que realiza la llamada no está autorizada.Normalmente, una reversión cancela los cambios de estado realizados durante la ruta de ejecución fallida.Por lo general, no se devuelve el gas ya consumido, porque los clientes de ejecución han realizado el trabajo solicitado.Una transacción fallida no indica necesariamente un fallo de Ethereum o de la EVM.A menudo significa que la transacción concreta no pudo cumplir las reglas del contrato o del protocolo en el estado actual.Ejecución atómica
Las transacciones EVM son atómicas: sus cambios de estado se ejecutan conjuntamente o fallan conjuntamente dentro del ámbito de ejecución de la transacción.Esta propiedad permite que una transacción compleja realice varios pasos relacionados sin dejar incompleto el resultado previsto.Por ejemplo, una transacción de finanzas descentralizadas puede pedir prestado un activo, intercambiarlo, devolver otra obligación y actualizar garantías en una sola ejecución.Si falla un paso requerido y la transacción se revierte, también se revierten los cambios de estado anteriores realizados dentro de esa transacción.La atomicidad reduce algunos riesgos de liquidación, pero no garantiza que una transacción sea rentable o segura.Un contrato malicioso puede completar una transacción atómica que transfiera activos desde un usuario que haya concedido una autorización.Ejecución determinista
La EVM es determinista porque las mismas entradas válidas y el mismo estado inicial deberían producir el mismo resultado en todos los clientes de ejecución honestos.El determinismo es necesario para la verificación descentralizada.Si los nodos calcularan resultados distintos para una misma transacción, no podrían ponerse de acuerdo sobre los saldos o el estado de los contratos.Por tanto, los contratos inteligentes no pueden solicitar directamente información externa cambiante de sitios web normales o bases de datos privadas durante la ejecución de la EVM.Los datos externos suelen introducirse mediante un oráculo u otra transacción on-chain.Así, todos los nodos pueden procesar el mismo valor enviado con las mismas reglas del contrato.EVM y consenso
La EVM realiza la ejecución, mientras que el sistema de consenso de Ethereum ayuda a los validadores a ponerse de acuerdo sobre el orden aceptado y la finalidad de los bloques.La ejecución determina si las transacciones y sus cambios de estado cumplen las reglas de Ethereum.El consenso determina qué historial válido acepta la red.Desde la transición de Ethereum a Proof of Stake, un nodo completo utiliza tanto un cliente de ejecución como un cliente de consenso.El cliente de ejecución procesa las transacciones y mantiene el estado de ejecución de Ethereum.El cliente de consenso sigue la actividad de los validadores, las propuestas de bloques, las atestaciones, la elección de bifurcación y la finalidad.La documentación oficial de Ethereum sobre nodos y clientes explica cómo trabajan conjuntamente estos componentes.
La EVM no puede decidir por sí sola qué bloque propuesto se convierte en canónico.El consenso tampoco puede calcular por sí solo resultados complejos de contratos inteligentes sin la capa de ejecución.Clientes de ejecución de la EVM
Un cliente de ejecución es un software que implementa las reglas de ejecución de Ethereum.Valida transacciones, procesa bytecode EVM, mantiene el estado de la blockchain, se comunica con otros nodos y proporciona interfaces para aplicaciones.Las distintas implementaciones de clientes de ejecución pueden estar escritas en diferentes lenguajes de programación y, aun así, seguir las mismas especificaciones del protocolo.La diversidad de clientes mejora la resiliencia, ya que Ethereum no depende por completo de una sola base de código.Sin embargo, todos los clientes compatibles deben calcular el mismo resultado válido.Las especificaciones de la capa de ejecución de Ethereum ofrecen una referencia ejecutable y legible del comportamiento de ejecución y las actualizaciones de red de Ethereum.
Las pruebas de las especificaciones de ejecución ayudan a los desarrolladores a confirmar que distintos clientes gestionan las condiciones poco habituales de forma coherente.EVM y JSON-RPC
Las wallets y aplicaciones descentralizadas suelen comunicarse con los clientes de ejecución mediante métodos JSON-RPC.Estos métodos pueden consultar saldos de cuentas, estimar gas, simular llamadas a contratos, recuperar registros, inspeccionar bloques y enviar transacciones firmadas.La especificación de la API de ejecución de Ethereum describe JSON-RPC como la interfaz canónica entre los usuarios, la infraestructura y los clientes de ejecución.
Una llamada RPC de solo lectura puede pedir a un cliente de ejecución que simule el comportamiento de la EVM sin añadir una transacción a la blockchain.Un método de envío de transacciones firmadas difunde una transacción que podría incluirse posteriormente en un bloque.Los proveedores de RPC facilitan el uso de las aplicaciones, pero los usuarios que dependen de un proveedor remoto confían en que este proporcione datos precisos y esté disponible.Ejecutar un nodo propio puede proporcionar un acceso más directo e independiente a la información de ejecución de Ethereum.Cadenas compatibles y equivalentes con la EVM
Una cadena compatible con la EVM admite contratos inteligentes y herramientas creados para Ethereum Virtual Machine.Una cadena equivalente con la EVM suele intentar reproducir con mayor fidelidad el comportamiento de ejecución de Ethereum.Ambos modelos pueden permitir que los desarrolladores utilicen Solidity, direcciones de estilo Ethereum, wallets conocidas y estándares de tokens habituales.Sin embargo, otra red EVM puede tener validadores, comisiones, reglas de finalidad, tiempos de bloque, bridges, contratos de sistema y supuestos de seguridad diferentes.Un contrato que funcione en Ethereum puede necesitar pruebas antes de desplegarse en otra red EVM.El objetivo del compilador, los opcodes admitidos, los precompilados, los tipos de transacciones, el comportamiento del gas y las dependencias externas pueden variar.La documentación del compilador de Solidity advierte de que compilar para una versión incorrecta de la EVM puede provocar un comportamiento incorrecto o fallos.
La compatibilidad con la EVM mejora la portabilidad, pero no convierte las distintas cadenas en redes idénticas.Actualizaciones de la EVM
La EVM puede cambiar mediante actualizaciones del protocolo de Ethereum.Una actualización puede introducir un opcode, modificar costes de gas, añadir un tipo de transacción, cambiar el comportamiento de las cuentas o proporcionar un nuevo precompilado.Los cambios propuestos para el protocolo suelen documentarse mediante Ethereum Improvement Proposals.Tras su revisión, pruebas, coordinación y adopción por la comunidad, algunos cambios pueden incluirse en una actualización de la red.Los clientes de ejecución deben actualizar su software para seguir las nuevas reglas desde el momento de activación.Los desarrolladores de contratos inteligentes deberían seguir las actualizaciones, ya que las nuevas reglas pueden afectar a los objetivos de compilación, las estimaciones de gas, el ensamblador de bajo nivel y el comportamiento de los contratos.Los contratos deberían evitar depender de comportamientos de la EVM no documentados que podrían no mantenerse estables tras futuras actualizaciones.Riesgos de seguridad de la EVM
La EVM ejecuta de forma coherente el bytecode válido, pero no garantiza que ese bytecode sea seguro o justo.Un contrato inteligente puede contener un error de programación, permisos débiles, un mecanismo de actualización inseguro, un fallo económico o una función maliciosa intencionada.La EVM puede ejecutar correctamente esa lógica perjudicial, porque las instrucciones en sí son válidas.Entre los riesgos habituales de los contratos inteligentes se encuentran la reentrada, los errores de control de acceso, la manipulación de oráculos, los errores aritméticos, el uso indebido de firmas, las colisiones de almacenamiento y las llamadas externas inseguras.Los errores del compilador también pueden afectar al bytecode desplegado.La lista oficial de errores conocidos del compilador de Solidity ayuda a los desarrolladores a identificar problemas relevantes para la seguridad asociados a distintas versiones del compilador.
Las auditorías, las pruebas, la verificación formal, la revisión del código, los permisos limitados y los controles prudentes de actualización pueden reducir el riesgo.Ninguna auditoría puede garantizar que un contrato EVM no vaya a fallar o ser explotado.Riesgos de la EVM para los usuarios de criptomonedas
Los usuarios de criptomonedas interactúan con la EVM cada vez que autorizan tokens, firman transacciones o utilizan un contrato inteligente de Ethereum.La firma de una wallet puede autorizar algo más que una simple transferencia.Puede autorizar el gasto de tokens, llamar a un contrato, crear una delegación o conceder otro tipo de permiso.Los usuarios deberían leer las solicitudes de transacción y verificar el contrato de destino antes de firmar.Una ejecución satisfactoria de la EVM solo demuestra que la transacción ha seguido las reglas del código y del protocolo.No demuestra que el usuario quisiera ese resultado ni que la aplicación fuera de confianza.Las aplicaciones descentralizadas maliciosas pueden utilizar llamadas EVM válidas para transferir activos autorizados.Los usuarios deberían evitar enlaces desconocidos, verificar las direcciones de los contratos, limitar las autorizaciones de tokens y mantener los activos destinados al largo plazo separados de las wallets que utilizan para aplicaciones experimentales.Riesgos de la EVM para los traders de criptomonedas
Los traders de criptomonedas pueden afrontar riesgos relacionados con la EVM al utilizar protocolos descentralizados de trading, préstamos, staking, bridge o liquidación.Una operación puede fallar porque el precio haya cambiado antes de que la ejecución de la EVM llegue a la transacción.Un intercambio puede ofrecer un resultado peor si el usuario permite un rango amplio de deslizamiento.Una transacción puede reordenarse respecto a otras del mismo bloque.Este orden puede afectar a los precios de los pools, los resultados de liquidaciones y la disponibilidad de tokens.Las altas comisiones de gas también pueden encarecer el cierre o ajuste de una posición on-chain durante periodos de tensión en el mercado.Un trader puede tener suficientes tokens como garantía, pero no disponer del ETH nativo necesario para pagar la ejecución.Por tanto, mantener saldo para gas y revisar los ajustes de las transacciones forman parte de la gestión del riesgo del trading on-chain.EVM y valor máximo extraíble
El valor máximo extraíble hace referencia al valor que se puede obtener controlando o influyendo en la inclusión y el orden de las transacciones.La EVM procesa las transacciones en el orden establecido por el bloque.Si dos transacciones interactúan con el mismo pool de liquidez, la primera puede cambiar el resultado que recibe la segunda.Los buscadores y los sistemas de construcción de bloques pueden aprovechar esta propiedad para realizar arbitraje, liquidaciones u otras estrategias.Algunas estrategias mejoran la alineación de precios, mientras que otras pueden empeorar la ejecución para los usuarios.Un ataque sandwich coloca transacciones antes y después del intercambio de un usuario para beneficiarse de su impacto en el precio.La documentación oficial de Ethereum sobre el valor máximo extraíble explica cómo la inclusión, exclusión y ordenación de transacciones pueden generar valor económico.
Los usuarios pueden reducir parte de su exposición mediante límites de deslizamiento adecuados, evitando mercados con poca liquidez y revisando las opciones de ejecución protegida disponibles.EVM y estándares de tokens
La EVM permite a los desarrolladores implementar interfaces de tokens compartidas mediante contratos inteligentes.ERC-20 define una interfaz común para tokens fungibles.ERC-721 y ERC-1155 admiten estructuras habituales para activos únicos y multitoken.Los estándares compartidos permiten que wallets, interfaces de trading, exploradores de blockchain y aplicaciones descentralizadas interactúen con muchos tokens mediante funciones conocidas.La documentación oficial de Ethereum sobre estándares de tokens explica cómo las interfaces comunes mejoran la interoperabilidad.
Un estándar de tokens define las funciones y los eventos previstos, pero no garantiza que todos los contratos de tokens sean seguros o estén gestionados honestamente.Los contratos de tokens pueden seguir incluyendo reglas de transferencia personalizadas, comisiones, listas negras, facultades de acuñación o permisos de actualización.EVM y redes de capa 2
Muchas redes de capa 2 de Ethereum ofrecen un entorno de ejecución compatible o equivalente con la EVM.Procesan transacciones fuera del entorno principal de ejecución de Ethereum y utilizan Ethereum para parte de su liquidación, disponibilidad de datos o modelo de seguridad.Esto puede reducir los costes de transacción y aumentar la capacidad de procesamiento.La descripción general oficial de Ethereum sobre Layer 2 explica cómo los rollups procesan actividad fuera de Ethereum Layer 1 y utilizan Ethereum como base de liquidación.
Una EVM de capa 2 puede ejecutar bytecode de contratos inteligentes similar, pero con procesos distintos de producción de bloques, cálculo de comisiones, retiradas y finalidad.Los usuarios deberían entender el secuenciador, el bridge, el sistema de pruebas, el método de publicación de datos y los controles de actualización de cada red de capa 2.La similitud con la EVM no elimina los riesgos adicionales que introduce la infraestructura de capa 2.Ventajas de la EVM
La EVM proporciona un entorno estandarizado para aplicaciones cripto programables.Permite que nodos independientes verifiquen los mismos resultados de contratos inteligentes.Admite el despliegue abierto, ya que, por lo general, los desarrolladores no necesitan permiso de un operador central para publicar un contrato.Permite la composabilidad, ya que un contrato inteligente puede interactuar con otro.Es compatible con estándares de tokens y herramientas de desarrollo muy utilizados.También proporciona a otras redes blockchain un modelo de ejecución común que puede reducir los costes de migración para los desarrolladores.La amplia disponibilidad de herramientas EVM, documentación, conocimientos de pruebas e investigación de seguridad puede facilitar el desarrollo de aplicaciones.Limitaciones de la EVM
La computación de la EVM es más cara que la computación normal en un servidor centralizado, porque muchos nodos deben verificar el resultado.El almacenamiento persistente también tiene un coste elevado, ya que se añade al estado de la blockchain que mantienen los clientes de ejecución.El espacio de los bloques de Ethereum es limitado, por lo que las comisiones de transacción pueden aumentar cuando muchos usuarios compiten por ejecutar transacciones.La EVM procesa transiciones de estado ordenadas, lo que puede limitar la capacidad de procesamiento cuando muchas transacciones acceden al mismo estado.Los contratos inteligentes no se pueden modificar fácilmente después del despliegue, salvo que se haya diseñado de antemano un sistema de actualización.La capacidad de actualización aporta flexibilidad, pero también introduce riesgos relacionados con los administradores y la disposición del almacenamiento.La EVM tampoco puede determinar si la información externa es verdadera sin recurrir a datos enviados mediante un oráculo u otro proceso de confianza.Ejemplo de intercambio de tokens con la EVM
Supongamos que un usuario quiere intercambiar un token ERC-20 por otro mediante un pool de liquidez descentralizado.La wallet crea datos de transacción que llaman al pool o al contrato de enrutamiento.El usuario firma la transacción y la envía a la red Ethereum.Cuando la transacción se incluye en un bloque, la EVM comprueba la autorización de tokens del usuario y llama a los contratos necesarios.Los contratos calculan el resultado del intercambio actual, aplican las comisiones del protocolo y comparan la cantidad de salida con el mínimo aceptado por el usuario.Si se cumplen los requisitos, la EVM actualiza los saldos de tokens y el almacenamiento del pool de liquidez.También crea registros de eventos que pueden consultar las aplicaciones externas.Si el resultado es inferior al mínimo del usuario o no se cumple otra condición, la transacción se revierte.Por lo general, el usuario sigue pagando el gas consumido antes de la reversión.Este ejemplo muestra cómo la ejecución de la EVM conecta las firmas de wallets, las autorizaciones de tokens, los contratos inteligentes, el gas, los cambios de estado y los recibos de transacción.Cómo revisar una transacción EVM
Primero, confirma la red en la que se ejecutará la transacción.Segundo, verifica la dirección de destino o el contrato inteligente.Tercero, revisa el activo y la cantidad que se van a transferir.Cuarto, comprueba si la transacción solicita una autorización de tokens u otro permiso continuado.Quinto, revisa la estimación de gas y los ajustes de la comisión máxima.Sexto, comprueba el resultado previsto, la cantidad mínima recibida y el plazo de una operación descentralizada.Séptimo, cuando corresponda, utiliza un explorador de blockchain o una herramienta de simulación de confianza para revisar la transacción.Octavo, no firmes si la wallet no puede explicar la acción o si se desconoce el origen de la transacción.Noveno, mantén suficiente ETH disponible para futuras transacciones, incluidas salidas de emergencia de posiciones on-chain.Décimo, recuerda que una transacción EVM confirmada suele ser difícil o imposible de revertir.Malentendidos habituales sobre la EVM
Un malentendido frecuente es creer que la EVM es un ordenador físico propiedad de una organización.En realidad, es un modelo de ejecución compartido que implementan muchos clientes independientes.Otro malentendido es creer que la EVM almacena todas las criptomonedas dentro de contratos inteligentes.La EVM procesa el estado, mientras que la propiedad se representa mediante registros de cuentas y contratos de la blockchain.Un tercer malentendido es pensar que la EVM y Ethereum son lo mismo.La EVM es un componente importante del protocolo Ethereum en su conjunto.Un cuarto malentendido es creer que una ejecución válida de la EVM garantiza una transacción segura.La EVM puede ejecutar correctamente lógica de contratos maliciosa o perjudicial desde el punto de vista económico.Un quinto malentendido es pensar que todas las redes EVM tienen la seguridad de Ethereum.Otras redes basadas en la EVM pueden tener validadores, bridges, sistemas de gobernanza y supuestos de confianza diferentes.Un sexto malentendido es pensar que una transacción fallida no tiene coste.Una ejecución EVM fallida suele consumir gas por el trabajo ya realizado.Preguntas frecuentes
¿Qué significan las siglas EVM?
EVM son las siglas de Ethereum Virtual Machine.¿Qué es la EVM en términos sencillos?
La EVM es el entorno de computación virtual que ejecuta contratos inteligentes de Ethereum y calcula los resultados de las transacciones on-chain.¿Es la EVM un ordenador real?
No. Es un modelo de ejecución virtual implementado por clientes de ejecución de Ethereum que funcionan en muchos ordenadores independientes.¿Es la EVM lo mismo que Ethereum?
No. La EVM es el entorno de ejecución de contratos inteligentes de Ethereum, mientras que Ethereum también incluye consenso, redes, validadores, bloques y otros componentes del protocolo.¿Qué lenguajes de programación funcionan con la EVM?
Solidity y Vyper son lenguajes de contratos inteligentes muy utilizados que se compilan en bytecode EVM.¿Qué es el bytecode EVM?
El bytecode EVM es la secuencia de instrucciones de bajo nivel legible por máquina que ejecuta Ethereum Virtual Machine.¿Qué son los opcodes de la EVM?
Los opcodes son instrucciones individuales de la EVM que realizan operaciones como cálculos aritméticos, acceso al almacenamiento, llamadas a contratos y gestión de errores.¿Por qué utiliza gas la EVM?
El gas mide el trabajo computacional, asigna un precio a los recursos de ejecución limitados e impide que los programas consuman potencia de procesamiento ilimitada.¿Qué ocurre cuando una transacción EVM se queda sin gas?
Los cambios de estado previstos se revierten, pero, por lo general, el remitente paga el gas consumido antes de que se detuviera la ejecución.¿Puede la EVM ejecutar contratos maliciosos?
Sí. La EVM ejecuta bytecode técnicamente válido, aunque el contrato contenga lógica perjudicial, deshonesta o insegura.¿Están conectadas todas las cadenas EVM?
No. Las cadenas EVM pueden utilizar tecnologías de ejecución similares y mantener saldos, bloques, validadores, contratos e historiales de transacciones independientes.¿Funciona la misma dirección de wallet en todas las cadenas EVM?
Normalmente, la misma clave privada puede generar el mismo formato de dirección, pero los activos y la actividad de esa dirección siguen separados en cada cadena.¿Se pueden revertir las transacciones EVM?
Por lo general, una transacción EVM confirmada no se puede revertir, salvo que el contrato receptor incluya una función válida capaz de generar una nueva transacción correctora.¿Por qué puede fallar una transacción EVM aunque la simulación de la wallet haya sido satisfactoria?
El estado de la blockchain, las condiciones de gas, los precios, la liquidez o el almacenamiento del contrato pueden cambiar antes de que se ejecute realmente la transacción.¿Cuál es la diferencia entre la EVM y un cliente de ejecución?
La EVM es la máquina virtual y el conjunto de reglas para la computación de contratos inteligentes, mientras que un cliente de ejecución es un software que implementa esas reglas y gestiona los datos de ejecución de Ethereum.¿Utilizan la EVM las redes de capa 2?
Muchas redes de capa 2 utilizan entornos compatibles o equivalentes con la EVM para poder reutilizar los contratos inteligentes y las herramientas de Ethereum.Conclusión
La EVM, o Ethereum Virtual Machine, es el entorno de ejecución programable que ocupa el centro del sistema de contratos inteligentes de Ethereum.Procesa instrucciones de transacción, ejecuta bytecode, calcula el consumo de gas, actualiza el estado de la blockchain y genera resultados de transacción.La EVM permite que Ethereum admita tokens, finanzas descentralizadas, NFT, sistemas de gobernanza, juegos blockchain y muchas otras aplicaciones cripto.Sus reglas deterministas permiten que clientes de ejecución independientes verifiquen el mismo resultado sin confiar en un único ordenador central.Los contratos inteligentes se escriben en lenguajes legibles para las personas y se compilan en bytecode EVM formado por opcodes de bajo nivel.Durante la ejecución, la EVM utiliza la pila, la memoria, calldata, el almacenamiento persistente, las llamadas de mensaje, los registros y otros componentes para procesar la lógica de los contratos.El gas limita el trabajo computacional y exige que los usuarios paguen por los recursos de red que consumen sus transacciones.La EVM trabaja con la capa de consenso de Ethereum, pero la ejecución y el consenso realizan funciones diferentes.Las cadenas compatibles con la EVM y las redes de capa 2 pueden reutilizar tecnología de Ethereum, aunque su seguridad, comisiones, finalidad e infraestructura pueden variar.Para los usuarios de criptomonedas, entender la EVM facilita la evaluación de las comisiones de gas, las autorizaciones de contratos inteligentes, las transacciones fallidas, los estándares de tokens, las aplicaciones descentralizadas y los riesgos del trading on-chain.La EVM es potente porque ejecuta reglas programables transparentes, pero no determina si esas reglas son seguras o beneficiosas desde el punto de vista económico.Los usuarios y desarrolladores siguen teniendo que verificar contratos, gestionar permisos, probar código, revisar las diferencias entre redes y tratar cada transacción firmada como una autorización importante.También te puede interesar
WhatsMiner M30S++
Dominios Web3
Proyectos Web3
POPULAR
Criptomonedas de moda que están acaparando la atención del mercado
Volumen TOP
Las criptomonedas con mayor volumen de trading
Recién Añadidos
Criptomonedas recientemente listadas y disponibles para operar

