No tienes acceso a esta clase

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

Proxies y sus consideraciones

6/14
Recursos

Aportes 12

Preguntas 2

Ordenar por:

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

o inicia sesi贸n.

creo que faltan como unos graficos 鈥ara ver el proceso鈥 un flujograma鈥o se me pierdo en el mar de conceptos

Toma trabajo entender la clase con tantos cortes, siento que falta mayor material para poder entenderle y una mejor explicaci贸n por parte del profesor.

Colisiones de almacenamiento

Al tener dos contratos, uno para la l贸gica y otro para el almacenamiento, cualquiera de ellos puede sobrescribir un espacio de almacenamiento que ya est茅 en uso.

Patr贸n de almacenamiento desestructurado

  • Una soluci贸n al problema de colisiones de almacenamiento.
  • Este patr贸n usa un espacio de memoria desestructurado que se define en el contrato proxy para almacenar la informaci贸n que se requiere para realizar actualizaciones, y es aleatorio.

Colisiones entre versiones del contrato con la l贸gica

Las colisiones no son algo que solo pueda ocurrir entre el proxy y el contrato con la l贸gica.

EIP 1967

Prop贸sito:

  • Implementar una interfaz para que las aplicaciones puedan determinar que est谩n interactuando con proxies y hacer seguimiento a los cambios que estos tengan.
  • Que el compilador garantice que nunca se reserven los espacios de memoria donde se almacena la informaci贸n del proxy para almacenar otras variables de estado.

Constructores en los contratos con la l贸gica

  • Muchas veces cuando desplegamos nuestros contratos necesitamos que estos tengan un estado inicial.
  • Los constructores son ideales para calcular el estado inicial del contrato.
  • Si el proxy es quien almacena el estado 驴los cambios que se calculen en le constructor quedan almacenados en el proxy?

Funciones para inicializar contratos actualizables

  • Un inicializador tiene que cumplir con las mismas caracter铆sticas de un constructor.
  • Debe ser invocado por el proxy una vez este ha sido desplegado.

Tipos de proxy con Open Zeppelin

  • Transparent proxy: El proxy contiene la l贸gica para actualizar y administrar el contrato.
  • UUPS (Universal Upgradeable Proxy Standard): El contrato con la l贸gica contiene las funciones para actualizar y administrar el proxy.

Open Zeppelin plugin para desplegar y actualizar contratos actualizables

  • Paquete de JavaScript que facilite el despliegue, actualizaci贸n y manejo de admin sobre el proxy de contratos inteligentes.
  • Versi贸n para Truffle y Hardhat.
  • Genera archivos que contienen metadata sobre los contratos desplegados para realizar verificaciones cuando nuevas versiones se vayan a desplegar.

no logre seguir para nada esta clase 馃槙

Coincido en que no est谩 bien explicado como dicen por ah铆, incluso ya sabiendo como funcionan los contratos proxies cuesta entenderle lo que dice. Por suerte para el que quiera verlo en openzeppelin est谩n bien explicados.

no entendi nada

Les dejo el link para la documentaci贸n del plugin

Una explicacion complementaria, muy buena a mi parecer https://youtu.be/a0Jc78zXRwY?t=2300

Patron Proxy: Es un patron estructural, que proporciona un sustituto o marcador de posicion para otro objeto.

Para entender en que consiste el patron proxy: Podriamos ver como en un partido de futbol, esta el 4 arbitro, el debe ser garante de que a la hora de sustituir un jugador por otro, cumpla con las normas de llevar pantalones cortos (shorts), canilleras, medias altas, no lleve cadena o anillo para entrar. El 4 arbitro, le avisa al arbitro principal una vez que es revisado, para que pueda ingresar al partido sustituyendo a otro jugador.

Entiendas: El patron proxy es el 4 arbitro, que permite la interaccion entre dos jugadores. SmartContrac A, SmartContracB, cada uno tiene sus caracteristicas especiales.

Aqui explican muy bien sobre los contratos actualizables: Transparent, UUPS, y Beacon https://blog.openzeppelin.com/the-state-of-smart-contract-upgrades/.

Y aqui esta la documentacion de los plugins de openzeppelin https://docs.openzeppelin.com/upgrades-plugins/1.x/