Vertragsmanifest mit der Befehlszeile in die Registry hochladen

Mit der Befehlszeile können Sie Deployment-Metadaten aus einem ausgewählten Hardhat-Projekt validieren und in Contract Registry Services veröffentlichen.

Die upload-contract-manifest-Hardhat-Aufgabe veröffentlicht die aktualisierbaren oder unveränderlichen Vertragsmanifeste des Projekts in konfigurierten Registry-Services.

Führen Sie die Aufgabe nach einem erfolgreichen Deployment aus dem Root-Verzeichnis des im Package enthaltenen Vertragsprojekts aus. Die Aufgabe liest Deployment-Manifestdateien aus dem Projekt. Die folgenden Dateien sind die Standardspeicherorte:
  • OpenZeppelin Manifest: .openzeppelin/unknown-<chain-id>.json
  • ERC-7201 Manifest: .obp-da/.erc7201/deployedContracts-<chain-id>.json
  • Unveränderliches/Solidity-Manifest: .obp-da/.solc/deployedContracts-<chain-id>.json
Verwenden Sie die Ketten-ID der Zielumgebung anstelle von <chain-id>. Wenn Ihr OpenZeppelin-Manifest an anderer Stelle gespeichert ist, setzen Sie die Variable OZ_MANIFEST_PATH auf ihren projektlokalen Pfad.
  1. Registry-Endpunkte konfigurieren Legen Sie die Registry-Endpunktvariablen für die Manifesttypen fest, die Sie hochladen möchten. Verwenden Sie den Mechanismus der sicheren Umgebungsvariablen der Shell oder den konfigurierten Hardhat-Variablenmechanismus des Projekts. Schreiben Sie keine Zugangsdaten oder privaten Endpunkte zur Quellkontrolle fest. Beispiel: Ein einmaliger Shell-Aufruf kann die Werte für die Aufgabe bereitstellen, wie im folgenden Beispiel dargestellt.
    ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/erc7201" \
    SOLC_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/solc" \
    npx hardhat upload-contract-manifest --mode all
    Geben Sie für eine Oracle Blockchain Platform-Umgebung auch die Zielketteninformationen und das RPC-Proxyautorisierungstoken an, das für Ihre Projektkonfiguration erforderlich ist.
    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
    Die Endpunktwerte sind explizite Konfigurationen. Gehen Sie nicht davon aus, dass eine Registry-URL von einem Oracle Blockchain Platform-Hostnamen abgeleitet werden kann.
  2. Wählen Sie aus, was hochgeladen werden soll, indem Sie einen der folgenden Modi auswählen.
    # 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
    Für die Modi all und erc7201 ist die Variable ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT erforderlich. Für die Modi all und immutable ist die Variable SOLC_UPLOAD_REGISTRY_ENDPOINT erforderlich. Für gepackte importierte Projekte oder Verträge mit digitalen Assets, die von Blockchain App Builder generiert werden, ist der ERC-7201-Modus ausreichend.
  3. Mit der Option --dry-run können Sie die ausgewählten Manifestdateien validieren und die Konfiguration ohne Veröffentlichung hochladen.
    npx hardhat upload-contract-manifest --mode all --dry-run
  4. Führen Sie nach einem erfolgreichen Trockenlauf denselben Befehl ohne die zu veröffentlichende Option --dry-run aus. Wenn Ihr Projekt dies unterstützt, legen Sie die Variable UPLOAD_CONTRACT_MANIFEST_TIMEOUT_MS fest, um den Upload-Timeout zu erhöhen, und legen Sie UPLOAD_CONTRACT_MANIFEST_VERBOSE=true für zusätzliche Diagnoseausgabe fest. Schließen Sie keine Secrets in Verbose-Logs oder in der Ausgabe von gemeinsam genutzten Terminals ein.

Fehlerbehebung

Bedingung Lösung
Aufgabe wurde nicht gefunden Vergewissern Sie sich, dass das Manifest-Upload-Plug-in installiert, von der Datei hardhat.config.ts importiert und mit der Uploadaufgabe konfiguriert ist.
Erforderliches Manifest fehlt Stellen Sie zuerst in der ausgewählten Umgebung bereit, bestätigen Sie die Ketten-ID, und prüfen Sie den erwarteten Manifestspeicherort. Setzen Sie bei einem nicht standardmäßigen OpenZeppelin-Manifest die Variable OZ_MANIFEST_PATH auf die richtige projektlokale Datei.
Registry-Endpunkt fehlt oder ist ungültig Geben Sie einen http- oder https-Endpunkt für den ausgewählten Modus an. Die Modi erc7201 und immutable verwenden unterschiedliche Endpunktvariablen.
Oracle Blockchain Platform-Upload ist nicht autorisiert Stellen Sie sicher, dass die ausgewählte Oracle Blockchain Platform-Umgebung sowie die Variablen BESU_CHAIN_ID und BESU_RPX_PROXY_AUTH_TOKEN alle für dieselbe Zielumgebung gelten.