La verdad es que para mi este curso debería llevar la palabra “Introducción” en el título del mismo, puesto que es demasiado básico y no entra en nada de profundidad.
Bienvenida
Qué es OpenZeppelin
Control de acceso
Propiedad con Ownable
Control de acceso basado en roles
Gestión de demoras con TimelockController
Reto: control de acceso
Tokens
Estándar de tokens ERC20
Estándar de tokens ERC721
Estándar multitoken ERC1155
Extensión de la funcionalidad de los tokens
Reto: tokens
Utilidades
Operaciones matemáticas
Criptografía
Caso de uso: Escrow
Introspección de contratos inteligentes
Estructuras de datos
Reto: utilidades
Conceptos avanzados
Gobernanza y descentralización
Contratos actualizables
Despedida
Continúa aprendiendo
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Sebastián Leonardo Perez
Sabemos que todo en Blockchain es inmutable, es una de sus principales características. Sin embargo, existe una manera de que un contrato pueda actualizarse si tenemos la necesidad.
Llegado el caso de que nuestro contrato tenga un error de lógica o simplemente queramos actualizar la misma por un cambio en la regla de negocio, OpenZeppelin ofrece una serie de contratos denominados Proxy, o Patrón Proxy, para facilitar este propósito.
Este tipo de contratos actuarán de intermediario entre las transacciones y el contrato principal de un proyecto que contiene la lógica del mismo.
Todos los contratos que conoces de OpenZeppelin se encuentran replicados en un nuevo repositorio llamado openzeppelin-contracts-upgradeable donde se le agrega el sufijo Upgradeable a cada uno de ellos.
Es así como encontrarás el contrato ERC721.sol y el ERC721Upgradeable.sol en el otro repositorio.
Cada contrato tiene, en lugar de un constructor, una función inicializadora a la cual debes llamar desde tu contrato para crear la instancia del contrato actualizable. La misma posee la forma __{ContractName}_init
.
El resto del contrato es exactamente igual al no actualizable, con la misma lógica.
Utilizar este tipo de contratos es una tarea difícil. Requiere de un sólido conocimiento del patrón Proxy para evitar caer en problemas al actualizar un contrato.
Tanto los entornos de desarrollo de contratos inteligentes de Hardhat como Truffle ofrecen pluggins para realizar estas tareas de actualización de forma más sencilla.
El patrón Proxy permite que, por ejemplo, si el día de mañana se agregan nuevas funcionalidades al estándar ERC20 o ERC721, estos contratos puedan actualizarse e incorporar esas funcionalidades.
Tú puedes implementar tus contratos actualizables siguiendo este mismo patrón creando tu contrato MyContractUpgradeable.sol
. De esta forma, podrás crear contratos que puedan actualizarse en el futuro.
Contribución creada por: Kevin Fiorentino (Platzi contributor).
Aportes 4
Preguntas 0
La verdad es que para mi este curso debería llevar la palabra “Introducción” en el título del mismo, puesto que es demasiado básico y no entra en nada de profundidad.
¿Porqué actualizar un contrato?
En caso de tener:
error de código
mejorar o modificar la forma de realizar una operación
Puede ser una buena idea contar con un contrato que se pueda actualizar.
UpgradeableContracts
Con un repositorio de contratos separado del de los contratos originales con el nombre de “contracts-upgradeable”.
Desde la clas 9 nos la pasamos mirando el github y casi ni se hizo codigo 😕
UpgradeableContracts funcionaria como una especia de extensión a un contrato para que este sea actualizable en todo momento. Es bueno saber que existe, implementarlo es otra cosa.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?