Déployer et exécuter des contrats proxy

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

Un contrat proxy UUPS est le côté implémentation d’un ERC1967Proxy.

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

Pour interagir avec les fonctions du contrat de mise en œuvre, utilisez l’instance déployée de l’instance ERC1967 qui ne figure pas dans le contrat de mise en œuvre.

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

Pour l’essayer, vous devez obtenir un contrat de proxy. Rendez-vous sur wizard.openzeppelin.com et sélectionnez un contrat. Ensuite, dans la section Upgradeability, cochez l’option UUPS. Copiez et collez ensuite le fichier dans Remix. Compilez le fichier et allez dans Deploy & Run.

Déploiement

Lorsqu’un contrat UUPS est sélectionné dans la boîte de sélection des contrats de Deploy & Run, vous verrez des cases à cocher sous le bouton Deploy :

Cochez la case Déployer avec Proxy. Cela créera deux transactions : une pour l’implémentation (votre contrat) et l’autre pour le contrat proxy ERC1967. Vous obtiendrez deux fenêtres modales à parcourir :

et ensuite

Si vous effectuez un déploiement sur la Remix VM, ces fenêtres apparaîtront l’une après l’autre. Si vous êtes connecté au réseau principal ou à un réseau de test public, la deuxième fenêtre s’affichera une fois que la première transaction aura été effectuée.

Une fois le contrat proxy ERC1967 déployé, dans la section Contrats déployés, vous verrez deux instances déployées.

Pour interagir avec votre contrat de mise en œuvre, N’UTILISEZ PAS l’instance de votre contrat. Au lieu de cela, vous devez utiliser le proxy ERC1967. Le proxy disposera de toutes les fonctions de votre implémentation.

Mise à niveau

Pour effectuer la mise à niveau, cochez la case Mise à niveau avec proxy et descendez le curseur pour voir les options :

Vous devrez soit utiliser le dernier contrat ERC1967 déployé, soit saisir l’adresse du contrat ERC1967 que vous souhaitez utiliser.