Volver al índice
Modo oscuro
OpenZeppelin

OpenZeppelin por Santiago Soñora

star star star star star (5.0 de 5 estrellas, basado en 1 reseña)

Este tutorial está diseñado para guiar a quienes desean aprender más acerca de OpenZeppelin. Es ideal para un nivel intermedio.

OpenZeppelin Contracts es la librería de referencia para desarrollar contratos inteligentes seguros en Solidity sobre redes EVM. Ofrece implementaciones auditadas y probadas en producción de los estándares ERC-20, ERC-721, ERC-1155 y ERC-4626, módulos de control de acceso (Ownable, AccessControl), utilidades de seguridad (ReentrancyGuard, Pausable), criptografía (ECDSA, MerkleProof, EIP-712) y gobernanza on-chain (Governor, TimelockController). Su versión 5 introdujo errores personalizados, el hook unificado _update y un Ownable con propietario inicial explícito. Junto con los plugins de Upgrades para Hardhat y Foundry, permite desplegar contratos actualizables con proxies UUPS y Transparent validando automáticamente la compatibilidad del storage. Esta guía cubre la creación de tokens, el control de acceso y los patrones de actualización.

“Hola, mundo” en OpenZeppelin

Token ERC-20 con suministro inicial y acuñación restringida al propietario, usando OpenZeppelin Contracts v5.

📋 Copiar
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";

contract MiToken is ERC20, Ownable {
    // En v5, Ownable exige indicar el propietario inicial de forma explícita
    constructor(address initialOwner)
        ERC20("Mi Token", "MTK")
        Ownable(initialOwner)
    {
        _mint(initialOwner, 1_000_000 * 10 ** decimals());
    }

    /// @notice Acuña nuevos tokens; solo el propietario puede llamarla
    function mint(address to, uint256 amount) external onlyOwner {
        _mint(to, amount);
    }
}

Resultado:

Output
Contrato desplegado: se acuñan 1.000.000 MTK (18 decimales) al propietario. Si una cuenta distinta llama a mint(), la transacción revierte con el error personalizado OwnableUnauthorizedAccount(address).

Comandos básicos

Familiarizarse con estos comandos es esencial para interactuar eficientemente con OpenZeppelin:

Conceptos Clave

Comprender estos conceptos fundamentales te ayudará a dominar OpenZeppelin de forma más organizada y eficiente:

Casos de uso

Algunos ejemplos de aplicaciones prácticas donde se utiliza OpenZeppelin:

Consejos para Principiantes

Aquí tienes algunas recomendaciones para facilitar tus inicios en OpenZeppelin:

Herramientas relacionadas

Si te interesa OpenZeppelin, también podrías explorar estas herramientas:

Recursos útiles

Amplía tus conocimientos con estos enlaces y materiales:

También te puede interesar

Continúa aprendiendo con estos contenidos relacionados: