Déployer un contrat
Après avoir compilé un contrat intelligent, vous pouvez le déployer dans un environnement Oracle Blockchain Platform Besu.
Le processus de déploiement crée les bibliothèques d'aide et les proxies UUPS requis, lie les contextes de jeton et de compte et définit le contexte de gouvernance. Le jeton et le compte sont déployés dans un état inactif. Ils deviennent actifs uniquement via le processus d'intention de déploiement.
Pour déployer un contrat compilé, obtenez l'adresse du contrat de gouvernance prédéployé et son UUID de stratégie auprès de l'administrateur de jetons de ressources numériques. Obtenez un compte avec l'autorisation de déploiement et, le cas échéant, de soumettre l'intention de déploiement. Le formulaire de déploiement requiert un contrat, un environnement, un ID de déploiement et des métadonnées de registre : ID de contrat intelligent, version, description et auteur. L'ID de déploiement identifie un état de déploiement qui peut être repris. Utilisez une valeur stable et unique lors d'une nouvelle tentative du même déploiement.
Cycle de vie du déploiement
- Compilez le projet.
- Déployez la pile de ressources numériques Oracle Blockchain Platform.
- Définir les contextes de compte/jeton et de gouvernance. (Les mandataires sont inactifs.)
- Vérifiez et soumettez l'intention de déploiement pour les deux composants proxy.
- Gouvernance No-Op : la proposition réussit, puis les composants sont activés.
- Régi : les approbations de stratégie requises sont terminées, puis les composants sont activés.
Remarque :
Les mandataires sont inactifs immédiatement après le déploiement. Un déploiement de contrat réussi ne signifie pas que le jeton est actif. L'activation est contrôlée par le contrat de gouvernance configuré pour le déploiement, et non par une mise à niveau UUPS.Création d'un environnement Besu Oracle Blockchain Platform
Un environnement Oracle Blockchain Platform Besu stocke l'hôte Oracle Blockchain Platform RPC, et non une adresse JSON-RPC complète. L'extension dérive de cet hôte les routes Besu et de gouvernance requises.
- Ouvrez la vue Environnements, puis sélectionnez Ajouter un environnement.
- Entrez un nom d'environnement descriptif. Par exemple, entrez obp-test.
- Sélectionnez Oracle Blockchain Platform Besu pour le type d'environnement.
- Entrez l'hôte d'URL RPC. Par exemple, entrez https://rpcproxy.example.com:443.
L'hôte d'URL RPC doit être une origine
httpouhttpsuniquement, et non un chemin d'adresse, une chaîne de requête, un fragment, un nom utilisateur ou un mot de passe. Par exemple, entrezhttps://rpcproxy.example.com:443, et nonhttps://rpcproxy.example.com:443/v1/besu/proxy. - Entrez l'ID de chaîne du réseau.
- Entrez le jeton d'autorisation requis par le proxy RPC.
- Vous pouvez éventuellement définir Gas Price Wei, Autoriser l'autosignation et un chemin de certificat CA pour une autorité de certification privée. Laissez le champ Comptes BESU vide, sauf si votre modèle de déploiement requiert spécifiquement une signature non privative de liberté. Les déploiements du service de portefeuille Oracle Blockchain Platform collectent les détails de signature par déploiement.
- Sélectionnez Créer.
Pour l'hôte Oracle Blockchain Platform stocké, l'extension dérive l'adresse proxy Besu et utilise l'adresse d'intention de gouvernance Oracle Blockchain Platform. L'environnement reste ainsi portable entre les opérations de déploiement, d'exécution et de gouvernance.
L'environnement Hardhat Local Node intégré est disponible pour le développement local et n'a pas besoin d'être enregistré. Il ne s'agit pas d'un environnement Oracle Blockchain Platform.
Déploiement vers un environnement Besu Oracle Blockchain Platform
- Dans le panneau Contrats, ouvrez le formulaire Déployer/exécuter du projet et sélectionnez l'onglet Déployer.
- Sélectionnez le package de contrats et l'environnement Besu.
- Entrez un ID de déploiement ou conservez l'ID de déploiement affiché.
- Renseignez les métadonnées de registre requises. Le nom du jeton de déploiement, le symbole, la description, l'URI et les ID d'administrateur sont facultatifs. Les valeurs vides utilisent les valeurs par défaut du script de déploiement.
- Entrez les informations de signature du service de portefeuille affichées pour l'environnement Oracle Blockchain Platform.
- URL de signature du service de portefeuille
- Comptes de service de portefeuille, tableau JSON d'objets address/wallet-ID
- Jeton d'authentification du service de portefeuille
- Sélectionnez Suivant.
- Dans Options de déploiement, entrez l'adresse du contrat de gouvernance et l'UUID de stratégie, puis sélectionnez Déployer.
Blockchain App Builder exécute le script de déploiement Hardhat généré via le réseau Oracle Blockchain Platform Besu, en utilisant les valeurs de service de portefeuille uniquement pour ce déploiement. Il déploie ou réutilise les composants requis, définit leurs contextes et renvoie les adresses proxy du jeton et du compte. Les deux proxies sont inactifs.
Soumettre l'intention de déploiement
Une fois le déploiement inactif terminé, la section de gouvernance est renseignée avec les valeurs Cible de jeton et Cible de compte déployées. Conservez les deux cibles dans l'intention. Chacun est un proxy EIP-1967 ; la gouvernance active le proxy par rapport à son adresse d'implémentation résolue et à son hachage de code d'exécution.
- Confirmez les cibles de jeton et de compte. Ne les remplacez que si vous proposez intentionnellement une paire de mandataires existante.
- Entrez une date limite de proposition future.
- Pour Oracle Blockchain Platform Besu, entrez l'adresse de l'expéditeur autorisée par la stratégie sélectionnée. L'environnement sélectionné doit avoir un hôte d'URL RPC et un jeton d'autorisation.
- Pour les autres environnements EVM, sélectionnez un compte d'appel ou entrez la clé privée de l'appelant. L'application dérive l'adresse de l'expéditeur de cette clé.
- Sélectionnez Réviser. L'extension résout le hachage de code d'implémentation et d'implémentation de chaque proxy, puis affiche l'intention proposée.
- Vérifiez l'UUID, la date limite, les cibles proxy, les adresses d'implémentation et les hachages de code.
- Sélectionnez Soumettre.
Pour un environnement Oracle Blockchain Platform, l'extension soumet l'intention vérifiée via l'adresse de gouvernance du service de portefeuille Oracle Blockchain Platform. Pour les autres environnements EVM, il envoie une transaction proposeDeployIntent signée directement au contrat de gouvernance via JSON-RPC.
Si vous modifiez l'adresse de gouvernance, l'UUID, les cibles proxy ou la date limite après vérification, l'aperçu est invalidé. Révisez à nouveau la proposition avant de la soumettre.
Activation de la gouvernance
Le même workflow d'intention est utilisé pour les deux types de gouvernance. La différence est ce qui se passe une fois que le contrat de gouvernance a accepté la proposition :
- No-Op : un appel
proposeDeployIntentréussi active immédiatement les composants inclus. Confirmez la transaction ou la réponse Oracle Blockchain Platform, puis vérifiez l'état actif du jeton. - Gouverné : l'intention soumise reste soumise à la stratégie configurée. Le jeton et le compte ne deviennent actifs qu'une fois que les approbations requises ont été reçues avant la date limite.
L'extension soumet l'intention ; elle n'emprunte pas l'identité des approbateurs de gouvernance ou ne la contourne pas. Pour une stratégie régie, utilisez le processus d'approbation de l'organisation et attendez que le contrat de gouvernance soit activé. Si la stratégie rejette ou expire l'intention, corrigez la cause, puis soumettez une nouvelle intention valide. Le déploiement seul n'activera pas les proxies.
Remarque :
Une fois que vous avez déployé un contrat, les fichiers manifestes sont générés dans le dossier.openzeppelin sous la racine du projet. Pour les réseaux de production (et non les réseaux de développement), validez ces fichiers dans le contrôle des sources. Pour plus d'informations, reportez-vous à la section Network Files dans la documentation OpenZeppelin.
Dépannage des erreurs de déploiement
| Condition | Résolution |
|---|---|
| Impossible d'enregistrer l'environnement Oracle Blockchain Platform | Entrez une origine HTTP ou HTTPS sans chemin d'adresse. Le champ Oracle Blockchain Platform attend uniquement l'hôte. |
| La revue de gouvernance indique que l'environnement Oracle Blockchain Platform a besoin d'un hôte d'URL RPC et d'un jeton d'autorisation | Mettez à jour l'environnement Oracle Blockchain Platform enregistré avec les deux valeurs, puis ouvrez-le ou sélectionnez-le à nouveau. |
| Le code exécutable d'exécution est manquant dans les rapports de vérification de la gouvernance | Vérifiez le réseau et les adresses de proxy/implémentation sélectionnés. Ne soumettez pas d'intention pour une cible qui n'est pas déployée. |
| Le déploiement réussit mais le jeton est inactif | Soumettez l'intention de déploiement. Pour la gouvernance régie, attendez toutes les approbations de politique ; pour la gouvernance sans opération, confirmez que la transaction de proposition a réussi. |
| La proposition ne peut pas être soumise après la modification des champs | Sélectionnez à nouveau Vérifier. L'application invalide délibérément un aperçu obsolète. |