« Back to Glossary Index

ABI (Application Binary Interface)

⚡ Definición Rápida

La ABI (Application Binary Interface) es el estándar que define cómo codificar y decodificar los datos para interactuar con smart contracts en el ecosistema Ethereum. Es un archivo en formato JSON que describe las funciones, eventos y tipos de datos de un contrato inteligente, actuando como un «manual de instrucciones» que permite a las aplicaciones externas (dApps, wallets, scripts) comunicarse con el bytecode almacenado en la blockchain.

Términos relacionados: Smart ContractEthereumEVMSolidityAPI


📄 ¿Qué es la ABI y por qué es el puente entre las aplicaciones y la blockchain?

Imagina que quieres llamar a una función de un smart contract en Ethereum desde una aplicación JavaScript. Tu código está escrito en un lenguaje de alto nivel, con funciones llamadas «transfer» o «balanceOf», parámetros con nombres como «to» o «amount». Pero el smart contract, una vez compilado y desplegado en la blockchain, es solo un conjunto de bytecode (una secuencia de bytes) que la Máquina Virtual de Ethereum (EVM) puede ejecutar. Tu aplicación no puede enviar directamente la cadena «transfer» al contrato porque el contrato no entiende texto legible por humanos. Aquí es donde entra la ABI (Application Binary Interface).

La ABI actúa como un traductor universal que convierte las intenciones de tu aplicación (como «llamar a la función transfer con dirección 0x123 y 100 tokens») en una secuencia de bytes que el smart contract puede entender y ejecutar. Es el «pegamento» que hace posible la interoperabilidad entre los millones de aplicaciones descentralizadas (dApps) y los cientos de miles de contratos inteligentes desplegados en Ethereum y otras blockchains compatibles con la EVM.

La ABI es una pieza fundamental del ecosistema blockchain. Sin ella, interactuar con un smart contract requeriría descifrar manualmente el bytecode, una tarea prácticamente imposible. Por eso, cada vez que usas un explorador de bloques como Etherscan para leer los datos de un contrato, o cuando interactúas con una dApp desde MetaMask, la ABI está trabajando silenciosamente en segundo plano. Para profundizar en el funcionamiento de los smart contracts, puedes leer nuestra guía sobre Smart Contract.

📖 Definición Técnica

La Application Binary Interface (ABI) es una especificación formal que define cómo codificar y decodificar los datos que se envían a un smart contract y se reciben de él. En el contexto de Ethereum, la ABI se utiliza para:

  • Codificar las llamadas a funciones (function calls) en el campo `calldata` de una transacción.
  • Decodificar los valores de retorno (return values) después de ejecutar una función.
  • Codificar y decodificar los argumentos de los eventos (event logs).
  • Interpretar los datos almacenados en la blockchain cuando se leen desde una aplicación externa.

La ABI se representa como un archivo en formato JSON. Este archivo contiene metadatos sobre cada función (nombre, parámetros de entrada y salida, mutabilidad) y cada evento (nombre, parámetros, indices) que posee el contrato inteligente. No contiene el código ejecutable, solo la descripción de la interfaz. La ABI está fuertemente tipada, se conoce en tiempo de compilación y es estática. Para conocer cómo interactúan las aplicaciones con la blockchain usando la ABI, puedes leer nuestro tutorial de Web3.


🔍 ABI vs API: La diferencia entre el mundo descentralizado y el centralizado

La ABI y la API (Application Programming Interface) cumplen funciones análogas, pero operan en paradigmas tecnológicos distintos. Mientras que una API se utiliza para que dos aplicaciones se comuniquen a través de servidores centralizados y protocolos web (generalmente usando JSON/XML sobre HTTP), la ABI es la interfaz que permite interactuar con un smart contract compilado que reside en una blockchain descentralizada.

Esta tabla resume las principales diferencias entre una API tradicional y la ABI en el contexto blockchain:

CaracterísticaAPI (Web2)ABI (Web3)
Formato de datosJSON, XML, texto legible por humanosBinario (bytes), codificación altamente específica
ProtocoloHTTP/HTTPS, comunicación cliente-servidorTransacciones blockchain, llamadas RPC
Interfaz con el códigoLlamadas a funciones en un servidor remotoCodificación de datos para un contrato en bytecode
DescripciónDocumentación en texto (OpenAPI, Swagger)Archivo JSON con tipos de datos, funciones y eventos

En resumen, la API es la interfaz de una aplicación, mientras que la ABI es la interfaz de un smart contract compilado a bytecode.


⚙️ Anatomía de una ABI: la estructura en formato JSON

La ABI es un archivo JSON que contiene un array de objetos. Cada objeto describe un elemento de la interfaz del contrato: una función, un evento, el constructor o las funciones fallback y receive. A continuación, se muestran los campos más importantes para describir una función:

  • type: El tipo de elemento («function», «constructor», «receive», «fallback», «event»).
  • name: El nombre de la función o evento.
  • inputs: Un array de objetos que define los parámetros de entrada. Cada objeto tiene un `name` (nombre del parámetro) y un `type` (tipo de dato). Si el tipo es `tuple`, se usa un campo `components` para definir sus propiedades internas.
  • outputs: Un array similar a `inputs` que define los valores de retorno de una función.
  • stateMutability: Define la mutabilidad de la función. Puede ser `pure` (no lee ni modifica el estado), `view` (lee pero no modifica), `payable` (puede recibir ether), `nonpayable` (no recibe ether).

A continuación, un ejemplo de una ABI que describe la función `balanceOf` del estándar ERC-20:


🔧 El Proceso de Codificación ABI: De JavaScript a Bytecode

Cuando una aplicación llama a una función de un smart contract, la biblioteca Web3 (como ethers.js o web3.js) utiliza la ABI para codificar la llamada en el formato que la EVM espera. Este proceso de codificación tiene dos partes principales:

1. El Function Selector: El «ID» de 4 bytes

El primer paso para llamar a una función es identificar qué función queremos ejecutar. Para ello, la ABI genera el Function Selector: los primeros 4 bytes del hash Keccak-256 (SHA-3) de la firma de la función. La firma se define como el nombre de la función seguido de la lista de tipos de parámetros entre paréntesis, sin espacios. Por ejemplo, para la función `transfer(address,uint256)`, se calcula su hash Keccak-256 y se toman los primeros 4 bytes. Este selector se coloca en los primeros 4 bytes del `calldata` de la transacción, actuando como un «ID» que la EVM utiliza para saber qué función ejecutar.

2. Codificación de Argumentos: Cómo se empaquetan los parámetros

Después del function selector, los argumentos de la función se codifican y se añaden al `calldata`. La especificación ABI define un proceso de codificación detallado, que distingue entre tipos estáticos (longitud fija) y tipos dinámicos (longitud variable).

  • Tipos estáticos: Se codifican directamente en 32 bytes (un «slot» de palabra en la EVM). Esto incluye tipos como `uint256`, `address` y `bool`.
  • Tipos dinámicos: La codificación se divide en dos partes. Primero, en la posición del argumento, se escribe un puntero (desplazamiento) de 32 bytes que indica dónde empiezan los datos reales. Luego, en esa posición, se escribe primero la longitud del dato (32 bytes) y luego el dato en sí mismo. Esto aplica a `string`, `bytes` y arrays dinámicos (`[]`).

Para ver la codificación en acción, podemos usar herramientas como `cast` de Foundry. El comando `$ cast calldata «transfer(address,uint256)» 0xRecipient 1000000000000000000` generaría el `calldata` completo, incluyendo el function selector y los argumentos codificados.


🛠️ Cómo obtener y usar la ABI de un Smart Contract

Para interactuar con un smart contract en tu código, necesitas su dirección (donde está desplegado) y su ABI. Existen varias formas de obtener la ABI:

  • Desde el código fuente (compilación): Si tienes el código fuente del contrato en Solidity, el compilador (solc) genera la ABI automáticamente. En entornos como Remix IDE o Hardhat, la ABI está disponible después de la compilación.
  • Desde un explorador de bloques (Etherscan): Si el contrato está verificado, Etherscan muestra su ABI en la pestaña «Contract». Herramientas como `cast interface` pueden obtenerla directamente.
  • Usando la interfaz de un estándar conocido: Para contratos que implementan estándares comunes (ERC-20, ERC-721), podemos usar la ABI genérica del estándar, que es pública y conocida por todas las bibliotecas Web3.

Una vez que tenemos la ABI y la dirección del contrato, podemos interactuar con él. Por ejemplo, usando la biblioteca ethers.js, podemos crear una instancia del contrato con `new ethers.Contract(address, abi, signer)` y luego llamar a sus funciones de forma nativa en JavaScript. Si estás empezando, te recomendamos nuestro tutorial de desarrollo Web3.


❓ Preguntas Frecuentes sobre ABI


📚 ¿Quieres profundizar?

Aprende más sobre los conceptos relacionados con la ABI y el desarrollo en Ethereum:

⚙️ ¿Qué es Blockchain? – La tecnología base que permite los smart contracts.

💻 Tutorial de MetaMask – Aprende a usar la wallet que interactúa con smart contracts usando la ABI.

🔧 Tutorial de Desarrollo Web3 – Guía práctica para crear dApps y usar ABIs.

📝 Smart Contract – El concepto fundamental que se conecta a través de la ABI.


🚀 ¿Empezando en Crypto?

Lee nuestra guía completa gratuita para principiantes y descubre todo lo que necesitas saber para empezar en el mundo blockchain, incluyendo cómo interactuar con smart contracts y entender conceptos técnicos como la ABI.


📋 ¿Por qué confiar en esta definición? Cada término de la Cryptopedia sigue una metodología de verificación con fuentes primarias, whitepapers y legislación oficial. Conoce nuestro proceso →


⚠️ Disclaimer: Este artículo es informativo y educativo. No constituye asesoramiento técnico ni legal. La ABI es un estándar técnico complejo y su implementación puede variar. Siempre consulta la documentación oficial de Ethereum y las bibliotecas que utilices.

📅 Actualizado: Abril 2026
📖 Categoría: Infraestructura Blockchain / Ejecución y EVM

« Volver al Glosario
Scroll al inicio