Contenido del curso
Entendiendo la EVM
Herramientas de Solidity
Retiros y control de permisos
Interactuando con la Blockchain de Celo
Interactuando con Smart Contracts
- 16

Conectando React con Celo usando ContractKit
09:34 min - 17

Conectar Valora a contratos inteligentes con Wallet Connect
05:16 min - 18

Despliegue de Contratos Inteligentes en Testnet Alfajores con Remix
03:07 min - 19

Liberación arbitral con Celo ContractKit
04:30 min - 20

Firma de transacciones con WalletConnect y Valora
03:06 min
Sigue practicando
Herencia en Solidity con OpenZeppelin
Resumen
La herencia en Solidity te permite que un contrato inteligente reciba variables, funciones y modificadores de otro, haciendo tu código más modular, mantenible y reutilizable. Si ya programaste en otros lenguajes orientados a objetos, este concepto te resultará familiar, pero con matices propios de los smart contracts.
¿Qué es la herencia en Solidity y por qué importa?
En Solidity, la herencia funciona como un mecanismo para traspasar de un contrato padre a un contrato hijo todos sus atributos: lógica contenida en funciones, variables de estado y modificadores. Así evitas duplicar código y empaquetas lógica común en un solo lugar.
¿Qué se puede heredar entre contratos en Solidity? Variables de estado, funciones y modificadores definidos en el contrato padre, además del constructor cuando se reorganiza la lógica.
La idea es simple: si tienes un patrón que se repite, como verificar quién es el dueño de un contrato, lo encapsulas una sola vez y lo reutilizas tantas veces como necesites.
¿Cómo aplicar herencia con un contrato Ownable en Remix?
El ejemplo práctico parte de un contrato Payables que ya tenía un modificador onlyOwner para validar que quien invoca un método sea el creador del contrato. Para aplicar herencia, creamos un nuevo contrato llamado Ownable dentro del mismo archivo y movemos ahí lo que tiene que ver con la propiedad.
¿Qué pasos sigues para que Payables herede de Ownable?
- Crear el contrato
Ownablecon la variable de estado tipo address public y el modificadoronlyOwner. - Mover el constructor que asigna el dueño al contrato
Ownable. - Declarar la herencia con la sintaxis
contract Payables is Ownable. - Eliminar del contrato
Payablesla variable, el constructor y la lógica del modificador que ahora viven enOwnable. - Actualizar las referencias internas: lo que antes apuntaba a
charityahora apunta a la variable heredada deOwnable.
Al terminar, el contrato Payables queda mucho más breve y la lógica de propiedad queda empaquetada de forma que puedes reutilizarla en cualquier otro contrato sin reescribirla.
¿Por qué esta refactorización mejora tu código?
Porque separas responsabilidades. Ownable se encarga exclusivamente de la propiedad, mientras Payables se concentra en su lógica propia. Eso te da código más legible, más fácil de mantener y menos propenso a errores cuando necesites extenderlo.
¿Qué es OpenZeppelin y cómo te ayuda con contratos inteligentes?
Una vez que entiendes herencia, la siguiente buena noticia es que no tienes que escribir todo desde cero. OpenZeppelin ofrece una librería muy completa de contratos inteligentes auditados, bien escritos y listos para heredar en tus propios proyectos.
En su sitio y en su GitHub encuentras módulos para casos comunes como:
- Tokenización y distintos estándares de tokens.
- Manejo de gobernanza on-chain.
- Control de acceso y propiedad de contratos inteligentes.
- Utilidades de seguridad y patrones probados.
¿Por qué usar OpenZeppelin en lugar de escribir todo a mano? Porque su código está auditado, es ampliamente usado por la industria y reduce el riesgo de vulnerabilidades en tus contratos inteligentes.
Incorporar OpenZeppelin a tu flujo es directo: importas el contrato que necesitas y lo heredas igual que hiciste con Ownable. Si quieres profundizar, en Platzi hay un curso dedicado a la seguridad de contratos inteligentes con esta plataforma.
¿En qué proyecto vas a aplicar herencia primero? Cuéntame en los comentarios qué contrato te gustaría modularizar.