---
title: "¿Qué es la interfaz de contrato de Solidity?"
description: "Todo lo que necesitas saber sobre la interfaz de smart contract de Solidity"
---

# ¿Qué es la interfaz de contrato de Solidity?

**[Solidity](https://www.alchemy.com/overviews/solidity)** es un lenguaje orientado a objetos de alto nivel para implementar smart contracts. Al [escribir smart contracts en Solidity](https://www.alchemy.com/overviews/solidity-smart-contract), es posible que quieras usar interfaces para interactuar con otros smart contracts. Saber cómo usar interfaces te ayudará a profundizar tu conocimiento del lenguaje Solidity y puede darte ideas nuevas sobre otros smart contracts interesantes que puedes construir.

En este artículo, explicamos qué es una interfaz de contrato en Solidity y te mostramos cómo crear una. Incluimos algunos ejemplos de implementación y declaración de interfaces que te sirvan de guía al momento de escribir una.

## **¿Qué es la interfaz en Solidity?**

**Una interfaz de contrato en Solidity es una lista de definiciones de funciones sin implementación.** En otras palabras, una interfaz es una descripción de todas las funciones que un objeto debe tener para poder operar. La interfaz impone un conjunto definido de propiedades y funciones sobre un contrato.

Solidity te permite interactuar con otros contratos sin tener su código, usando su interfaz. Por ejemplo, si quieres interactuar con otro contrato desde tu propio contrato, provees tus llamadas con un wrapper de interfaz. Al declarar una interfaz, puedes interactuar con otros contratos y [llamar funciones en otro contrato](https://www.alchemy.com/overviews/solidity-call-another-contract).

Las interfaces por lo general se encuentran en la parte superior de un contrato en Solidity, y se identifican con la palabra clave "interface". Debido a que las interfaces reducen la duplicación de código y la sobrecarga, son más útiles cuando las aplicaciones descentralizadas requieren extensibilidad y buscan evitar complejidad.

### **Características de la interfaz en Solidity**

1. La interfaz en Solidity puede heredar de otras interfaces
1. Los contratos pueden heredar interfaces de la misma forma en que heredan otros contratos
1. Puedes sobrescribir una función de interfaz
1. Los tipos de datos definidos dentro de interfaces pueden accederse desde otros contratos

Todas las funciones que heredan de la interfaz deben establecer el modificador override en cada función que sobrescribe una función de interfaz. De lo contrario, [el compilador de Solidity](https://www.alchemy.com/overviews/solidity-compiler) arrojará un error.

### **Contratos abstractos vs. interfaces**

**Los contratos abstractos y las interfaces son dos formas en que los desarrolladores web3 pueden construir aplicaciones distribuidas más grandes y complejas, ya que permiten la extensibilidad dentro de Solidity.**

Los contratos abstractos poseen al menos una función sin implementación, por lo que no pueden compilarse. Sin embargo, los contratos abstractos pueden usarse como contratos base de los cuales otros contratos pueden heredar.

Las interfaces son similares a los contratos abstractos, pero no pueden tener ninguna función implementada. Además, las interfaces están limitadas a lo que puede representar la [Application Binary Interface (ABI)](https://www.alchemy.com/overviews/solidity-abi) del contrato. La conversión entre la ABI y una interfaz es posible sin ninguna pérdida de información.

## **Cómo crear una interfaz en Solidity**

**Las interfaces normalmente se ubican en la parte superior de tu programa y se declaran con la palabra clave "interface". Luego puedes usar esa interfaz para comunicarte con otro contrato, o puedes implementar la interfaz.**

Supongamos que estás escribiendo un smart contract wallet; podría verse algo así:

<ImageBlock
  src="https://media.alchemy.com/1703924327-how-to-create-a-solidity-interface.png"
  alt="Cómo crear una interfaz de Solidity"
  width={1346}
  height={894}
  caption="Cómo crear una interfaz de Solidity"
/>

Nota el uso de "`is IWallet`" aquí. En este caso, estamos heredando la interfaz `IWallet` e implementándola en nuestro contrato, `Wallet`.

Luego, si tuvieras algún smart contract que quisiera poder comunicarse con wallets (`WalletFriendlyContract` aquí), podrías reutilizar la interfaz:

<ImageBlock
  src="https://media.alchemy.com/1703924551-re-use-solidity-interface.png"
  alt="Reutilizar interfaz de Solidity"
  width={1548}
  height={894}
  caption="Reutilizar interfaz de Solidity"
/>

### Requisitos de la interfaz en Solidity

Existen algunas restricciones al crear interfaces en Solidity, y los desarrolladores deben recordar esta lista de los principales requisitos de las interfaces:

1. La interfaz no puede tener ninguna función implementada
1. Las [funciones](https://www.alchemy.com/overviews/solidity-functions) de una interfaz solo pueden ser de tipo external
1. La interfaz no puede declarar un constructor
1. La interfaz no puede declarar variables de estado

## **Ejemplos de interfaces en Solidity**

Esta sección contiene algunos ejemplos que te guiarán al escribir código de interfaz en Solidity.

El siguiente [ejemplo de código de interfaz](https://docs.soliditylang.org/en/v0.8.17/contracts.html#interfaces), tomado de la **documentación de Solidity**, crea una interfaz llamada "Token" para obtener información sobre transacciones. Contiene una función para acceder a información sobre la dirección del destinatario y el monto transferido desde otros contratos.

<ImageBlock
  src="https://media.alchemy.com/1703924819-example-interface-code.png"
  alt="Ejemplo de código de interfaz"
  width={1318}
  height={550}
  caption="Ejemplo de código de interfaz"
/>

El siguiente [ejemplo de interfaz en Solidity](https://www.solidity-by-example.org/interface/), tomado de **Solidity by Example**, muestra un contrato completo con la declaración e implementación de la interfaz.

<ImageBlock
  src="https://media.alchemy.com/1703924953-full-contract-with-interface-declaration-and-implementation.jpg"
  alt="Contrato completo con declaración e implementación de interfaz"
  width={1053}
  height={1600}
  caption="Contrato completo con declaración e implementación de interfaz"
/>

## **Comienza a construir aplicaciones en Solidity con Alchemy**

Este artículo te introdujo a las interfaces en Solidity y mostró cómo los desarrolladores pueden usar interfaces para ahorrar tiempo y reducir la complejidad al construir aplicaciones en Solidity. Para [seguir aprendiendo sobre Solidity](https://www.alchemy.com/overviews/learn-solidity), explora el [Ethereum Developer Bootcamp gratuito](https://university.alchemy.com/?a=d3f70d2955) de Alchemy University, que explica los conceptos centrales del desarrollo en Solidity a lo largo de un curso de 7 semanas, a tu propio ritmo, repleto de retos de programación, video lecciones y los mejores recursos para dominar Solidity.

Si los desarrolladores son nuevos en el desarrollo en general, el **curso intensivo de JavaScript de 3 semanas** de Alchemy University es un excelente prerrequisito antes de comenzar un bootcamp de Ethereum.
