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
Utilisez l'ID de chaîne de l'environnement cible à la place de <chain-id>. Si votre manifeste OpenZeppelin est stocké ailleurs, définissez la variable OZ_MANIFEST_PATH sur son chemin projet-local.
  1. 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.
    ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/erc7201" \
    SOLC_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/solc" \
    npx hardhat upload-contract-manifest --mode all
    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.
    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
    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.
  2. Sélectionnez les éléments à charger en choisissant l'un des modes suivants.
    # 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 immutable
    Les modes all et erc7201 nécessitent la variable ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT. Les modes all et immutable nécessitent la variable SOLC_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.
  3. Utilisez l'option --dry-run pour 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
  4. 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 variable UPLOAD_CONTRACT_MANIFEST_TIMEOUT_MS pour augmenter le délai d'expiration du téléchargement et définissez UPLOAD_CONTRACT_MANIFEST_VERBOSE=true pour 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.