Glosario cripto

Calldata

Definición

Calldata es el campo de datos de entrada de una transacción de Ethereum: indica a un contrato qué función ejecutar y con qué argumentos.

Toda transacción de Ethereum lleva un campo de datos llamado calldata. Cuando la transacción llama a un contrato, los cuatro primeros bytes seleccionan la función y el resto codifica los argumentos según las reglas de la ABI. Los contratos pueden leer el calldata pero no modificarlo, por lo que resulta más barato que copiar datos a memoria o almacenamiento. Cada byte paga gas, y los bytes a cero cuestan menos que los demás.

Como el calldata queda guardado para siempre en el historial de la cadena, los primeros rollups publicaban ahí sus lotes comprimidos de transacciones para garantizar la disponibilidad de datos. Eso convirtió el calldata en el mayor coste de usar una capa 2 hasta que la actualización Dencun, en marzo de 2024, introdujo los blobs, un espacio de datos aparte y mucho más barato al que migraron casi todos los rollups.

El calldata es público: cualquiera puede decodificarlo con un explorador de bloques, así que nunca debe contener secretos. Pectra encareció después el coste mínimo de las transacciones cargadas sobre todo de datos, para empujar ese uso hacia los blobs. Al revisar una transacción sospechosa, el calldata decodificado muestra qué autoriza realmente una firma, por ejemplo una aprobación ilimitada de tokens.

Ejemplo

Antes de firmar, un usuario revisa el calldata decodificado en su wallet y ve que la llamada es approve(spender, max uint256), una autorización ilimitada y no el simple swap que esperaba.

Términos relacionados