Glosario cripto
Opcode (códigos de operación EVM)
Un opcode es una instrucción de bajo nivel, como ADD, SSTORE o CALL, que ejecuta la EVM u otra máquina virtual con un coste de gas propio.
Los contratos inteligentes escritos en Solidity o Vyper se compilan a bytecode, una secuencia de opcodes de un byte acompañados de sus datos. La máquina virtual de Ethereum los lee uno a uno sobre una pila: PUSH coloca valores, ADD y MUL hacen cálculos, SLOAD y SSTORE leen y escriben en el almacenamiento permanente, CALL y DELEGATECALL invocan otros contratos y LOG emite eventos. Bitcoin Script también usa opcodes, aunque con un repertorio mucho más limitado.
Los opcodes importan porque el gas se cobra por instrucción. Escribir en almacenamiento es de lo más caro, y por eso los desarrolladores optimizan los contratos en torno a ello. Las actualizaciones de red cambian a menudo el conjunto de instrucciones: PUSH0 llegó con Shanghai, el almacenamiento transitorio (TSTORE y TLOAD) y MCOPY con Dencun, y varios ajustes de precios corrigieron opcodes demasiado baratos para el trabajo que generaban.
El comportamiento de los opcodes es una fuente habitual de problemas de seguridad. SELFDESTRUCT se restringió en 2024 por sus efectos secundarios, y las cadenas compatibles con EVM no siempre implementan todos los opcodes igual, de modo que un código que funciona en Ethereum puede comportarse distinto en otra red. Los auditores leen trazas de opcodes cuando no hay código fuente disponible.
Ejemplo
Un desarrollador abarata una transferencia de tokens guardando un valor en memoria en lugar de llamar tres veces a SLOAD sobre la misma posición de almacenamiento.
