Saltar al contenido
0%

¿Qué es la interfaz de contrato de Solidity?

Alchemy team headshot

Escrito por Alchemy

Publicado el 4 de octubre de 20224 min de lectura

Solidity es un lenguaje orientado a objetos de alto nivel para implementar smart contracts. Al escribir smart contracts en Solidity, 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.

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
  2. Los contratos pueden heredar interfaces de la misma forma en que heredan otros contratos
  3. Puedes sobrescribir una función de interfaz
  4. 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 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) 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í:

Cómo crear una interfaz de Solidity
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:

Reutilizar interfaz de Solidity
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
  2. Las funciones de una interfaz solo pueden ser de tipo external
  3. La interfaz no puede declarar un constructor
  4. 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, 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.

Ejemplo de código de interfaz
Ejemplo de código de interfaz

El siguiente ejemplo de interfaz en Solidity, tomado de Solidity by Example, muestra un contrato completo con la declaración e implementación de la interfaz.

Contrato completo con declaración e implementación de interfaz
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, explora el Ethereum Developer Bootcamp gratuito 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.

Background gradient

Construye magia blockchain

Alchemy combina los productos y herramientas de desarrollo Web3 más potentes con recursos, comunidad y un soporte legendario.