← Volver al blog

Pausable de OpenZeppelin: el interruptor de tu contrato inteligente

Publicado el
•
1 min de lectura
•
--- vistas

En el mundo blockchain es obligatorio poder frenar el caos. A veces no llegaste a pensar en todo, y en algún momento los mecanismos que armaste fallan. Entonces queda un último mecanismo: un interruptor para encender y apagar.

Diapositiva «Access Control Design Patterns: Pausable» con un ejemplo de token hecho con OpenZeppelin, Devconnect 2025

Esta diapositiva se mostró en Devconnect 2025, que se hizo en Buenos Aires, Argentina.

Pausable en OpenZeppelin

Para eso existe el mecanismo y la interfaz Pausable de la biblioteca OpenZeppelin. En la diapositiva de arriba se suma a un token ERC20 con ERC20Pausable. Solo quien tiene el rol PAUSER_ROLE puede pausar y reanudar el contrato, y las funciones marcadas con whenNotPaused no se ejecutan mientras está en pausa:

function pause() public onlyRole(PAUSER_ROLE) {
    _pause();
}

function unpause() public onlyRole(PAUSER_ROLE) {
    _unpause();
}

function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) whenNotPaused {
    _mint(to, amount);
}

No te olvides del interruptor

Recomiendo Pausable a todos los que desarrollan contratos inteligentes. No te olvides nunca de él: cuando todo lo demás ya falló, es lo único que permite frenar el contrato.

Disponible para colaboración por contrato

Estoy disponible para colaborar por contrato. Si tiene una idea de proyecto interesante, reserve una llamada por Calendly.

Agenda una llamada de 30 min