No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de Introducci贸n a OpenZeppelin

Curso de Introducci贸n a OpenZeppelin

Sebasti谩n Leonardo Perez

Sebasti谩n Leonardo Perez

Contratos actualizables

18/19
Recursos

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.

Contratos Proxy

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.

Implementando un contrato Proxy

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.

image.png

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.

image.png

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.

TIP

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

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

La verdad es que para mi este curso deber铆a llevar la palabra 鈥淚ntroducci贸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 鈥渃ontracts-upgradeable鈥.

  • evita hacer actualizables los contratos de la librer铆a.

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.