Librerías de contratos inteligentes
Última actualización de la página: 21 de agosto de 2025
No es necesario que escribas cada contrato inteligente de tu proyecto desde cero. Hay muchas bibliotecas de contratos inteligentes de código abierto disponibles, que proporcionan bloques de construcción reutilizables para tu proyecto que pueden salvarte de tener que reinventar la rueda.
Requisitos previos
Antes de adentrarte en las bibliotecas de contratos inteligentes, te recomendamos que comprendas bien la estructura de estos documentos. Visite la anatomía de los contratos inteligentes si aún no lo ha hecho.
¿Qué hay en una librería?
Normalmente puede encontrar dos tipos de bloques de construcción en las librerías de contratos inteligentes: comportamientos reutilizables que puede añadir a sus contratos e implementaciones de varios estándares.
Comportamientos
Al escribir contratos inteligentes, es muy probable que se encuentre escribiendo patrones similares una y otra vez, como asignar una dirección de administrador para llevar a cabo operaciones protegidas en un contrato o añadir un botón de pausa de emergencia en caso de un problema inesperado.
Las librerías de contratos inteligentes suelen proporcionar implementaciones reutilizables de estos comportamientos como libreríasopens in a new tab o a través de la herenciaopens in a new tab en Solidity.
Como ejemplo, a continuación se muestra una versión simplificada del contrato Ownableopens in a new tab de la librería OpenZeppelin Contractsopens in a new tab, que designa una dirección como propietaria de un contrato y proporciona un modificador para restringir el acceso a un método solo a ese propietario.
1contract Ownable {2 address public owner;34 constructor() internal {5 owner = msg.sender;6 }78 modifier onlyOwner() {9 require(owner == msg.sender, "Ownable: caller is not the owner");10 _;11 }12}Mostrar todoPara utilizar un bloque de construcción como este en tu contrato, primero tendrás que importarlo y, a continuación, ampliarlo en tus propios contratos. Esto le permitirá utilizar el modificador proporcionado por el contrato base Ownable para asegurar sus propias funciones.
1import ".../Ownable.sol"; // Path to the imported library23contract MyContract is Ownable {4 // La siguiente función solo puede solicitarla el propietario5 function secured() onlyOwner public {6 msg.sender.transfer(1 ether);7 }8}Otro ejemplo popular es SafeMathopens in a new tab o DsMathopens in a new tab. Se trata de bibliotecas (en oposición a los contratos base) que proveen funciones aritméticas con controles de desbordamiento, que no proporciona el lenguaje. Recomendamos utilizar cualquiera de estas bibliotecas en lugar de operaciones aritméticas nativas para proteger tu contrato contra desbordamientos, que pueden tener consecuencias nefastas.
Estándares
Para facilitar la componibilidad y la interoperabilidad, la comunidad de Ethereum ha definido varios estándares en forma de ERC. Puede leer más sobre ellos en la sección de estándares.
Al incluir un ERC como parte de sus contratos, recomendamos buscar implementaciones estándar, en lugar de intentar desplegar las tuyas. Muchas bibliotecas de contratos inteligentes incluyen implementaciones para los ERC más populares. Por ejemplo, el omnipresente estándar de token fungible ERC20 se puede encontrar en HQ20opens in a new tab, DappSysopens in a new tab y OpenZeppelinopens in a new tab. Adicionalmente, algunos ERC también proveen implementaciones canónicas como parte del propio ERC.
Vale la pena mencionar que algunos ERC no son autónomos, sino adiciones a otros ERC. Por ejemplo, ERC2612opens in a new tab añade una extensión a ERC20 para mejorar su usabilidad.
Cómo agregar una librería
Consulta siempre la documentación de la biblioteca que estás incluyendo para obtener instrucciones específicas sobre cómo incluirla en tu proyecto. Varias librerías de contratos de Solidity están empaquetadas usando npm, por lo que puede instalarlas con npm install. La mayoría de las herramientas para compilar contratos buscarán en su directorio node_modules las librerías de contratos inteligentes, por lo que puede hacer lo siguiente:
1// Esto cargará la biblioteca @openzeppelin/contracts desde tu node_modules2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";34contract MyNFT is ERC721 {5 constructor() ERC721("MyNFT", "MNFT") public { }6}Independientemente del método que utilice, al incluir una librería, preste siempre atención a la versión del lenguaje. Por ejemplo, no puede utilizar una biblioteca para Solidity 0.6 si estás escribiendo tus contratos en Solidity 0.5.
Cuándo usar
Usar una biblioteca de contratos inteligentes para tu proyecto tiene varias ventajas. En primer lugar y principalmente, te ahorra tiempo al proporcionarte los bloques de construcción listos para que los puedas incluir en tu sistema, en lugar de tener que codificarlos tú mismo.
La seguridad también es un beneficio importante. Las bibliotecas de contratos inteligentes de código abierto también suelen ser objeto de un severo escrutinio. Dado que muchos proyectos dependen de ellos, existe un fuerte incentivo por parte de la comunidad para mantenerlos bajo una constante revisión. Es mucho más común encontrar errores en el código de aplicación que en las bibliotecas de contratos reutilizables. Algunas librerías también se someten a auditorías externasopens in a new tab para mayor seguridad.
Sin embargo, el uso de bibliotecas de contratos inteligentes conlleva el riesgo de incluir código con el que no estés familiarizado en tu proyecto. Es tentador importar un contrato e incluirlo directamente en tu proyecto, pero sin entender bien lo que hace ese contrato, puedes estar introduciendo inadvertidamente un problema en tu sistema debido a un comportamiento inesperado. Asegúrate siempre de leer la documentación del código que estás importando y, a continuación, revisa el código antes de incluirlo en tu proyecto.
Por último, al decidir si incluir o no una biblioteca, considera su uso general. Si seleccionas una que se suela adoptar con frecuencia la ventaja será que, como la utiliza una comunidad de personas mayor, hay más ojos controlando los posibles errores. La seguridad debe ser tu enfoque principal durante la redacción de contratos inteligentes.
Herramientas relacionadas
OpenZeppelin Contracts - La librería más popular para el desarrollo seguro de contratos inteligentes.
DappSys - Bloques de construcción seguros, simples y flexibles para contratos inteligentes.
HQ20 - Un proyecto de Solidity con contratos, librerías y ejemplos para ayudarle a crear aplicaciones distribuidas con todas las funciones para el mundo real.
thirdweb Solidity SDK - Proporciona las herramientas necesarias para crear contratos inteligentes personalizados de forma eficiente
Tutoriales relacionados
- Consideraciones de seguridad para desarrolladores de Ethereum – Un tutorial sobre consideraciones de seguridad al crear contratos inteligentes, incluido el uso de librerías.
- Entender el contrato inteligente de token ERC-20 -Tutorial sobre el estándar ERC20, proporcionado por múltiples librerías.
Lecturas adicionales
¿Conoce algún recurso de la comunidad que le haya sido de ayuda? ¡Edite esta página y agréguela!