Despliegue y ejecución de contratos proxy

Remix IDE has the functionality to assist in the handling of proxy contracts that use the UUPS pattern.

Un contrato proxy UUPS es la parte de implementación de un ERC1967Proxy.

Once you have deployed a UUPS implementation contract, Remix will deploy an ERC1967 with your implementation contract’s address.

Para interactuar con las funciones del contrato de implementación, utilice la instancia desplegada de la instancia ERC1967 que no se encuentra en el contrato de implementación.

When it’s time to upgrade your contract, Remix has a UI for this.

Para probarlo, deberá obtener un contrato proxy. Vaya a wizard.openzeppelin.com y seleccione un contrato. A continuación, en la sección Actualizabilidad, marque la opción UUPS. A continuación, copie y pegue el archivo en Remix. Compile el archivo y vaya a Desplegar y ejecutar.

Desplegando

Cuando se selecciona un contrato UUPS en el cuadro de selección de contratos de Despliegue y Ejecución, verá algunas casillas de verificación debajo del botón de Despliegue:

Marque la casilla de Implementación con proxy. Esto creará dos transacciones: una para la implementación (su contrato) y otra para el contrato proxy ERC1967. Obtendrá dos modales para comprobar:

y luego

Si está desplegando en la VM Remix, estos modales aparecerán uno tras otro. Si está conectado a la red principal o a una red de prueba pública, el segundo modal aparecerá después de que se haya realizado la primera operación.

Una vez desplegado el contrato proxy ERC1967, en la sección Contratos desplegados, verá dos instancias desplegadas.

Para interactuar con su contrato de implementación NO utilice la instancia de su contrato. En su lugar, debe utilizar el proxy ERC1967. El proxy tendrá todas las funciones de su implementación.

Actualización de

Para actualizar, marque la casilla Actualizar con proxy y marque hacia abajo el signo de intercalación para ver las opciones:

Deberá utilizar el último contrato ERC1967 desplegado o introducir la dirección del contrato ERC1967 que desee utilizar.