Glosario cripto
Bytecode y ABI
El bytecode es el código máquina compilado de un contrato que ejecuta la EVM; la ABI es la descripción que usan las apps para llamarlo y leer sus respuestas.
Los desarrolladores escriben contratos en lenguajes como Solidity o Vyper, pero la cadena solo almacena bytecode: una secuencia de instrucciones de bajo nivel de la EVM, los opcodes, que todos los nodos ejecutan igual. La ABI, o interfaz binaria de aplicación, es una descripción en JSON que se genera al compilar y enumera las funciones del contrato, sus parámetros y los eventos que emite. Wallets y aplicaciones la usan para convertir una llamada como transfer(dirección, cantidad) en los bytes exactos que espera el contrato.
Cada función se identifica con un selector, los cuatro primeros bytes del hash de su firma, seguido de los argumentos codificados. Son los datos en bruto que muestra una wallet en su vista avanzada y que los exploradores de bloques traducen a texto legible cuando conocen la ABI. Las herramientas de seguridad, los descompiladores y los analistas leen el bytecode directamente cuando no hay código fuente publicado.
El bytecode es público pero difícil de leer, y la ABI solo describe lo que el contrato dice ofrecer, no lo que hace su código. Los selectores pueden coincidir entre funciones, algo que algunas estafas usan para ocultar una llamada maliciosa tras un nombre inofensivo.
Ejemplo
Una wallet que no tiene la ABI de un token muestra la aprobación como datos hexadecimales que empiezan por 0x095ea7b3, el selector de la función approve.
