Definición
La codificación ABI es un mecanismo que transforma firmas de funciones legibles por humanos y datos estructurados en una representación binaria de bajo nivel definida por una Application Binary Interface (ABI). Especifica exactamente cómo se disponen en bytes los argumentos, los valores de retorno y los tipos de datos complejos para que los smart contracts y los agentes externos los interpreten de forma coherente. Al seguir las reglas del ABI, distintas herramientas, wallets y aplicaciones pueden interactuar con el mismo contrato sin ambigüedades sobre cómo se formatea la información.
Esta codificación es fundamental para las llamadas a contratos, los registros de eventos y los formatos de almacenamiento de datos en muchas plataformas de smart contracts. Garantiza que, cuando se invoca una función, el contrato reciba sus parámetros en un orden y tamaño predecibles, y que los valores devueltos se decodifiquen correctamente. Sin la codificación ABI, los componentes on-chain y off-chain carecerían de un lenguaje común para intercambiar datos estructurados con los smart contracts.
Contexto y uso
La codificación ABI suele definirse junto con una especificación ABI, que enumera las funciones, los eventos y los tipos de datos expuestos por un smart contract. Cuando una transacción se dirige a una función del contrato, el campo de call data se construye utilizando la codificación ABI para que el contrato pueda identificar la función y analizar sus entradas. Las mismas reglas se aplican al decodificar registros de eventos o al interpretar los datos devueltos por la ejecución del contrato.
En la práctica, la codificación ABI actúa como puente entre los lenguajes de programación de alto nivel y la máquina virtual de bajo nivel que ejecuta los smart contracts. Permite que la lógica on-chain y las aplicaciones off-chain compartan un formato de datos común y determinista, reduciendo errores causados por tipos u órdenes de datos incompatibles. El término está estrechamente relacionado con el propio ABI, que define el esquema que el mecanismo de codificación debe seguir.