Vertrag bereitstellen
Nachdem Sie einen Smart Contract kompiliert haben, können Sie ihn in einer Oracle Blockchain Platform Besu-Umgebung bereitstellen.
Der Deployment-Prozess erstellt die erforderlichen Helper-Librarys und UUPS-Proxys, verknüpft Token- und Accountkontexte und legt den Governance-Kontext fest. Token und Account werden inaktiv bereitgestellt. Sie werden nur über den Deployment-Intent-Prozess aktiv.
Um einen kompilierten Vertrag bereitzustellen, rufen Sie die Adresse des vorab bereitgestellten Governance-Vertrags und dessen Policy-UUID vom Tokenadministrator für digitale Assets ab. Besorgen Sie sich ein Konto mit der Berechtigung zur Bereitstellung und gegebenenfalls zur Übermittlung der Bereitstellungsabsicht. Für das Deployment-Formular sind Vertrags-, Umgebungs-, Deployment-ID- und Registry-Metadaten erforderlich: Smart Contract-ID, Version, Beschreibung und Autor. Die Deployment-ID gibt einen Deployment-Status an, der fortgesetzt werden kann. Verwenden Sie einen stabilen, eindeutigen Wert, wenn Sie dasselbe Deployment wiederholen.
Deployment-Lebenszyklus
- Kompiliere das Projekt.
- Stellen Sie den Stack der digitalen Assets von Oracle Blockchain Platform bereit.
- Kontexte für Account/Token und Governance festlegen. (Proxien sind inaktiv.)
- Prüfen Sie das Deployment-Intent für beide Proxykomponenten, und leiten Sie es weiter.
- No-Op Governance: Der Vorschlag ist erfolgreich und dann werden die Komponenten aktiviert.
- Geregelt: Die erforderlichen Richtliniengenehmigungen sind abgeschlossen, und die Komponenten werden aktiviert.
Hinweis:
Proxys sind unmittelbar nach dem Deployment inaktiv. Eine erfolgreiche Vertragsbereitstellung bedeutet nicht, dass das Token aktiv ist. Die Aktivierung wird durch den Governance-Vertrag gesteuert, der für das Deployment konfiguriert ist, nicht durch ein UUPS-Upgrade.Oracle Blockchain Platform Besu-Umgebung erstellen
In einer Oracle Blockchain Platform Besu-Umgebung wird der Oracle Blockchain Platform RPC-Host und kein vollständiger JSON-RPC-Endpunkt gespeichert. Die Erweiterung leitet die erforderlichen Besu- und Governance-Routen von diesem Host ab.
- Öffnen Sie die Ansicht Umgebungen, und wählen Sie Umgebung hinzufügen aus.
- Geben Sie einen aussagekräftigen Umgebungsnamen ein. Beispiel: Geben Sie obp-test ein.
- Wählen Sie Oracle Blockchain Platform Besu als Umgebungstyp aus.
- Geben Sie den RPC-URL-Host ein. Beispiel: Geben Sie https://rpcproxy.example.com:443 ein.
Der RPC-URL-Host muss nur ein
http- oderhttps-Ursprung sein, kein Endpunktpfad, keine Abfragezeichenfolge, kein Fragment, Benutzername oder Kennwort. Beispiel: Geben Siehttps://rpcproxy.example.com:443und nichthttps://rpcproxy.example.com:443/v1/besu/proxyein. - Geben Sie die NetzwerkChain-ID ein.
- Geben Sie das Autorisierungstoken ein, das vom RPC-Proxy benötigt wird.
- Legen Sie optional Gaspreis Wei, Selbstsigniert zulassen und einen CA-Zertifikatpfad für eine private Certificate Authority fest. Lassen Sie BESU-Accounts leer, es sei denn, Ihr Deployment-Modell erfordert speziell eine nicht-verwahrende Signatur. Die Oracle Blockchain Platform-Wallet-Servicebereitstellungen erfassen Signaturdetails nach Deployment.
- Wählen Sie Erstellen.
Für den gespeicherten Oracle Blockchain Platform-Host leitet die Erweiterung den Besu-Proxyendpunkt ab und verwendet den Governance-Intent-Endpunkt von Oracle Blockchain Platform. Dadurch bleibt die Umgebung zwischen Deployment-, Ausführungs- und Governance-Vorgängen portierbar.
Die integrierte Hardhat Local Node-Umgebung ist für die lokale Entwicklung verfügbar und muss nicht gespeichert werden. Es handelt sich nicht um eine Oracle Blockchain Platform-Umgebung.
Bereitstellung in einer Oracle Blockchain Platform Besu-Umgebung
- Öffnen Sie im Bereich Verträge das Formular Bereitstellen/Ausführen des Projekts, und wählen Sie die Registerkarte Bereitstellen aus.
- Wählen Sie das Vertragspaket und die Besu-Umgebung aus.
- Geben Sie eine Deployment-ID ein, oder behalten Sie die angezeigte Deployment-ID bei.
- Füllen Sie die erforderlichen Registrierungsmetadaten aus. Name, Symbol, Beschreibung, URI und Administrator-IDs für Deployment-Zeittoken sind optional. Leere Werte verwenden die Standardwerte des Deployment-Skripts.
- Geben Sie die Signaturinformationen des Wallet-Service ein, die für die Oracle Blockchain Platform-Umgebung angezeigt werden.
- Signatur-URL für Wallet-Service
- Wallet-Serviceaccounts, ein JSON-Array von Adress-/Wallet-ID-Objekten
- Wallet-Service-Authentifizierungstoken
- Wählen Sie Weiter.
- Geben Sie unter Deployment-Optionen die Governance-Vertragsadresse und die Policy-UUID ein, und wählen Sie Bereitstellen aus.
Blockchain App Builder führt das generierte Hardhat-Bereitstellungsskript über das Oracle Blockchain Platform Besu-Netzwerk aus und verwendet die Wallet-Servicewerte nur für dieses Deployment. Es stellt die erforderlichen Komponenten bereit oder verwendet sie wieder, legt deren Kontexte fest und gibt die Token- und Accountproxyadressen zurück. Beide Proxys sind inaktiv.
Deployment-Intent weiterleiten
Nachdem das inaktive Deployment abgeschlossen ist, wird der Governance-Abschnitt mit den bereitgestellten Werten für Tokenziel und Accountziel aufgefüllt. Behalten Sie beide Ziele im Intent. Jeder ist ein EIP-1967-Proxy; Governance aktiviert den Proxy anhand seiner aufgelösten Implementierungsadresse und des Laufzeitcode-Hashs.
- Bestätigen Sie das Token und die Accountziele. Überschreiben Sie sie nur, wenn Sie absichtlich ein vorhandenes Proxypaar vorschlagen.
- Geben Sie einen zukünftigen Vorschlagstermin ein.
- Geben Sie für Oracle Blockchain Platform Besu die Absenderadresse ein, die von der ausgewählten Policy autorisiert wurde. Die ausgewählte Umgebung muss über einen RPC-URL-Host und ein Autorisierungstoken verfügen.
- Wählen Sie für andere EVM-Umgebungen einen Caller-Account aus, oder geben Sie den Private Key des Aufrufers ein. Die Anwendung leitet die Absenderadresse aus diesem Schlüssel ab.
- Wählen Sie Prüfen aus. Die Erweiterung löst den Implementierungs- und Implementierungscode-Hash jedes Proxys auf und zeigt dann das vorgeschlagene Intent an.
- Prüfen Sie UUID, Deadline, Proxy-Ziele, Implementierungsadressen und Code-Hashes.
- Klicken Sie auf Weiterleiten.
Bei einer Oracle Blockchain Platform-Umgebung leitet die Erweiterung das überprüfte Intent über den Governance-Endpunkt des Oracle Blockchain Platform-Wallet-Service weiter. Bei anderen EVM-Umgebungen wird eine signierte proposeDeployIntent-Transaktion direkt über JSON-RPC an den Governance-Vertrag gesendet.
Wenn Sie die Governance-Adresse, die UUID, die Proxyziele oder den Termin nach der Prüfung ändern, wird die Vorschau invalidiert. Prüfen Sie den Vorschlag erneut, bevor Sie ihn weiterleiten.
Governance-Aktivierung
Für beide Governance-Typen wird derselbe Intent-Workflow verwendet. Der Unterschied ist, was passiert, nachdem der Governance-Vertrag den Vorschlag akzeptiert hat:
- No-Op: Bei einem erfolgreichen
proposeDeployIntent-Aufruf werden die enthaltenen Komponenten sofort aktiviert. Bestätigen Sie die Transaktion oder die Oracle Blockchain Platform-Antwort, und prüfen Sie dann den aktiven Status des Tokens. - Geregelt: Das weitergeleitete Intent unterliegt weiterhin der konfigurierten Policy. Token und Account werden erst aktiv, nachdem die erforderlichen Genehmigungen vor Ablauf der Frist eingegangen sind.
Die Erweiterung leitet das Intent weiter. Sie impersoniert oder umgeht keine Governance-Genehmiger. Verwenden Sie für eine gesteuerte Policy den Genehmigungsprozess der Organisation, und warten Sie, bis der Governance-Vertrag aktiviert wird. Wenn die Policy das Intent ablehnt oder abläuft, korrigieren Sie die Ursache, und leiten Sie dann ein neues gültiges Intent weiter. Das Deployment allein aktiviert die Proxys nicht.
Hinweis:
Nachdem Sie einen Vertrag bereitgestellt haben, werden Manifestdateien im Ordner.openzeppelin unter dem Projektstammverzeichnis generiert. Schreiben Sie diese Dateien für Produktionsnetzwerke (nicht für Entwicklungsnetzwerke) an die Quellkontrolle fest. Weitere Informationen finden Sie unter Netzwerkdateien in der OpenZeppelin-Dokumentation.
Deployment-Fehler beheben
| Bedingung | Lösung |
|---|---|
| Oracle Blockchain Platform-Umgebung kann nicht gespeichert werden | Geben Sie einen HTTP- oder HTTPS-Ursprung ohne Endpunktpfad ein. Das Feld "Oracle Blockchain Platform" erwartet nur den Host. |
| Laut Governance-Überprüfung benötigt die Oracle Blockchain Platform-Umgebung einen RPC-URL-Host und ein Autorisierungstoken | Aktualisieren Sie die gespeicherte Oracle Blockchain Platform-Umgebung mit beiden Werten, und öffnen Sie sie, oder wählen Sie sie erneut aus. |
| In Governance-Prüfungsberichten fehlt Laufzeitbytecode | Überprüfen Sie die ausgewählten Netzwerk- und Proxy-/Implementierungsadressen. Leiten Sie kein Intent für ein Ziel weiter, das nicht bereitgestellt ist. |
| Deployment erfolgreich, aber das Token ist inaktiv | Senden Sie das Deployment-Intent. Warten Sie für reglementierte Governance auf alle Richtliniengenehmigungen. Bestätigen Sie für No-op-Governance, dass die Vorschlagstransaktion erfolgreich war. |
| Vorschlag kann nach Änderung von Feldern nicht weitergeleitet werden | Wählen Sie erneut Prüfen aus. Die Anwendung invalidiert absichtlich eine veraltete Vorschau. |