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
OZ_MANIFEST_PATH auf ihren projektlokalen Pfad.
- 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.
Geben Sie für eine Oracle Blockchain Platform-Umgebung auch die Zielketteninformationen und das RPC-Proxyautorisierungstoken an, das für Ihre Projektkonfiguration erforderlich ist.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.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 - Wählen Sie aus, was hochgeladen werden soll, indem Sie einen der folgenden Modi auswählen.
Für die Modi# 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 immutableallunderc7201ist die VariableERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINTerforderlich. Für die Modiallundimmutableist die VariableSOLC_UPLOAD_REGISTRY_ENDPOINTerforderlich. Für gepackte importierte Projekte oder Verträge mit digitalen Assets, die von Blockchain App Builder generiert werden, ist der ERC-7201-Modus ausreichend. - Mit der Option
--dry-runkönnen Sie die ausgewählten Manifestdateien validieren und die Konfiguration ohne Veröffentlichung hochladen.npx hardhat upload-contract-manifest --mode all --dry-run - Führen Sie nach einem erfolgreichen Trockenlauf denselben Befehl ohne die zu veröffentlichende Option
--dry-runaus. Wenn Ihr Projekt dies unterstützt, legen Sie die VariableUPLOAD_CONTRACT_MANIFEST_TIMEOUT_MSfest, um den Upload-Timeout zu erhöhen, und legen SieUPLOAD_CONTRACT_MANIFEST_VERBOSE=truefü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.
|