Charger un manifeste de contrat dans le registre avec la ligne de commande
Vous pouvez utiliser la ligne de commande pour valider et publier les métadonnées de déploiement d'un projet Hardhat sélectionné vers des services de registre de contrats.
La tâche upload-contract-manifest Hardhat publie les manifestes de contrat pouvant être mis à niveau ou immuables du projet vers les services de registre configurés.
Exécutez la tâche à partir du répertoire racine du projet de contrat packagé après un déploiement réussi. La tâche lit les fichiers manifestes de déploiement à partir du projet. Les fichiers suivants sont les emplacements standard :
- Manifeste OpenZeppelin :
.openzeppelin/unknown-<chain-id>.json - Manifeste ERC-7201 :
.obp-da/.erc7201/deployedContracts-<chain-id>.json - Manifeste immuable/de consolidation :
.obp-da/.solc/deployedContracts-<chain-id>.json
OZ_MANIFEST_PATH sur son chemin projet-local.
- Configurez les adresses de registre. Définissez les variables d'adresse de registre pour les types de manifeste que vous prévoyez de télécharger. Utilisez le mécanisme sécurisé de variable d'environnement de votre shell ou le mécanisme de variable Hardhat configuré du projet ; ne validez pas les informations d'identification ou les adresses privées pour le contrôle des sources. Par exemple, un appel de shell unique peut fournir les valeurs de la tâche, comme indiqué dans l'exemple suivant.
Pour un environnement Oracle Blockchain Platform, fournissez également les informations sur la chaîne cible et le jeton d'autorisation de proxy RPC requis par la configuration de votre projet.ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/erc7201" \ SOLC_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/solc" \ npx hardhat upload-contract-manifest --mode all
Les valeurs d'adresse sont des configurations explicites. Ne supposez pas qu'une URL de registre peut être dérivée d'un nom d'hôte Oracle Blockchain Platform.BESU_CHAIN_ID="<chain-id>" \ BESU_RPX_PROXY_AUTH_TOKEN="<rpc-proxy-token>" \ ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/erc7201" \ SOLC_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/solc" \ npx hardhat upload-contract-manifest --mode all - Sélectionnez les éléments à charger en choisissant l'un des modes suivants.
Les modes# Upload both applicable manifest types. npx hardhat upload-contract-manifest --mode all # Upload the OpenZeppelin and ERC-7201 manifest content. npx hardhat upload-contract-manifest --mode erc7201 # Upload immutable/Solidity contract manifest content only. npx hardhat upload-contract-manifest --mode immutablealleterc7201nécessitent la variableERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT. Les modesalletimmutablenécessitent la variableSOLC_UPLOAD_REGISTRY_ENDPOINT. Pour les projets importés emballés ou les contrats d'actifs numériques générés par Blockchain App Builder, le mode ERC-7201 est suffisant. - Utilisez l'option
--dry-runpour valider les fichiers manifestes sélectionnés et télécharger la configuration sans la publier.npx hardhat upload-contract-manifest --mode all --dry-run - Après une exécution sèche réussie, exécutez la même commande sans l'option
--dry-runà publier. Si votre projet le prend en charge, définissez la variableUPLOAD_CONTRACT_MANIFEST_TIMEOUT_MSpour augmenter le délai d'expiration du téléchargement et définissezUPLOAD_CONTRACT_MANIFEST_VERBOSE=truepour une sortie de diagnostic supplémentaire. N'incluez pas de clés secrètes dans les journaux détaillés ou la sortie de terminal partagé.
Dépannage
| Condition | Résolution |
|---|---|
| Tâche non trouvée | Vérifiez que le module d'extension de téléchargement de manifeste est installé, importé par le fichier hardhat.config.ts et configuré avec la tâche de téléchargement.
|
| Manifeste requis manquant | Effectuez d'abord le déploiement vers l'environnement sélectionné, confirmez l'ID de chaîne et vérifiez l'emplacement de manifeste attendu. Pour un manifeste OpenZeppelin non standard, définissez la variable OZ_MANIFEST_PATH sur le fichier projet-local correct.
|
| L'adresse de registre est manquante ou non valide | Indiquez une adresse http ou https pour le mode que vous avez sélectionné. Les modes erc7201 et immutable utilisent différentes variables d'adresse.
|
| Téléchargement Oracle Blockchain Platform non autorisé | Vérifiez que l'environnement Oracle Blockchain Platform sélectionné et les variables BESU_CHAIN_ID et BESU_RPX_PROXY_AUTH_TOKEN correspondent tous au même environnement cible.
|