Vertrag mit der Befehlszeile bereitstellen
Nachdem Sie einen Smart Contract kompiliert haben, können Sie ihn in einer Oracle Blockchain Platform Besu-Umgebung bereitstellen.
In den folgenden Schritten wird beschrieben, wie Sie das im Package integrierte Vertragsprojekt für tokenisierte Einzahlungen bereitstellen. Informationen zu anderen verpackten Verträgen finden Sie in der README-Datei, die im Vertragspaket enthalten ist.
Oracle Blockchain Platform Besu Network konfigurieren
Führen Sie die folgenden Befehle aus, um die Werte festzulegen, die von der Datei hardhat.config.ts des Projekts konsumiert werden.
npx hardhat vars set BESU_CHAIN_ID <chain-id>
npx hardhat vars set BESU_RPC_URL <rpc-proxy-url>
npx hardhat vars set BESU_RPX_PROXY_AUTH_TOKEN "Bearer <rpc-auth-token>"
npx hardhat vars set WALLET_SERVICE_BASE_URL <wallet-service-sign-url>
npx hardhat vars set WALLET_SERVICE_ENABLED true
npx hardhat vars set WALLET_SERVICE_ACCOUNTS '[{"address":"0x<address>","walletId":"0x<address>"}]'
npx hardhat vars set WALLET_SERVICE_AUTH_TOKEN "Bearer <wallet-service-auth-token>"Für das Projekt "Tokenisierte Einzahlung" ist der Wert BESU_RPC_URL der vollständig konfigurierte JSON-RPC-Proxyendpunkt, wie im folgenden Beispiel dargestellt.
https://rpcproxy.example.oracle.com/v1/besu/proxyDer Wert WALLET_SERVICE_BASE_URL ist der vollständige /transaction-Endpunkt, wie im folgenden Beispiel dargestellt.
https://rpcproxy.example.oracle.com/v1/besu/transactionInaktives Proxypaar bereitstellen
Führen Sie das ERC-5982-Deployment-Skript mit einer stabilen Deployment-ID aus, wie im folgenden Beispiel dargestellt. Das Skript stellt die ERC-20-Helperbibliotheken, den Kontoproxy und den Tokenized Deposit-Proxy bereit oder setzt sie fort. Es verknüpft auch den Account/Token-Kontext und legt Governance-Kontext auf beiden Proxys fest.
DEPLOYMENT_ID=<deployment-id> \
GOVERNANCE_ADDRESS=<governance-contract-address> \
GOVERNANCE_UUID=<governance-uuid> \
TOKEN_NAME="DepositToken" \
TOKEN_SYMBOL="DP" \
TOKEN_DESCRIPTION="DepositToken proxy contract" \
ADMIN_USER_ID="platformadmin1" \
ADMIN_ORG_ID="org1" \
CONTRACT_METADATA_SMART_CONTRACT_ID="DP123" \
CONTRACT_METADATA_VERSION="1.0.0" \
CONTRACT_METADATA_DESCRIPTION="DepositToken proxy contract" \
CONTRACT_METADATA_AUTHOR="Oracle" \
CONTRACT_METADATA_TAGS='{"assetType":"tokenized deposit","role":"proxy"}' \
npx hardhat run scripts/deploy/deposittoken/deploy-deposittoken-erc-5982.ts --network obp-besuDie Werte DEPLOYMENT_ID, GOVERNANCE_ADDRESS und GOVERNANCE_UUID sind erforderlich. Verwenden Sie dieselbe Deployment-ID erneut, um ein unterbrochenes Deployment fortzusetzen. Nachdem ein Deployment erfolgreich abgeschlossen wurde, wird der Lebenslaufcache gelöscht. Bei der erneuten Ausführung mit dieser ID wird ein neues Deployment gestartet.
Die CONTRACT_METADATA_*-Werte beschreiben den Proxy für die tokenisierte Einzahlung in der ERC-7201-Deployment-Registry. CONTRACT_METADATA_TAGS muss ein JSON-Objekt sein, dessen Werte Zeichenfolgen sind.
Der Befehl wird mit inaktivem Token und Accountproxys abgeschlossen. Behalten Sie die gedruckte DEPLOYMENT_SUMMARY_JSON bei, und notieren Sie beide Proxyadressen. Sie sind für das Governance-Intent erforderlich.
Deployment-Intent weiterleiten
Legen Sie im folgenden Skript einen zukünftigen Termin fest, indem Sie den Wert DEADLINE_SECONDS bearbeiten, wenn das standardmäßige einstündige Vorschlagsfenster für Ihre Umgebung nicht geeignet ist. Nehmen Sie jeden Proxy auf, dessen Governance-Kontext vom Deployment festgelegt wurde. Für das Tokenized Deposit-Paket bedeutet dies in der Regel sowohl den Token-Proxy als auch seinen Kontoproxy. Führen Sie für einen Oracle Blockchain Platform Besu-Vorschlag, der über den RPC-Proxy und die Wallet-Serviceroute weitergeleitet wurde, das folgende Skript aus.
GOVERNANCE_INTENT_MODE=obp-besu \
GOVERNANCE_ADDRESS=<governance-contract-address> \
GOVERNANCE_UUID=<governance-uuid> \
DEPLOY_TARGETS_JSON='["<token-proxy>","<account-proxy>"]' \
DEADLINE_SECONDS=3600 \
DEPLOY_INTENT_MANIFEST=.obp-da/governance/deploy-intent.json \
npx hardhat run scripts/deploy/deposittoken/governance/propose-deploy-intent.ts --network obp-besuDas Skript validiert jedes Ziel, löst den EIP-1967-Implementierungs- und Laufzeitcode-Hash auf, leitet den Vorschlag weiter und schreibt die geprüften Komponenten und das Vorschlagsergebnis in die von der Variablen DEPLOY_INTENT_MANIFEST angegebene Datei.
Verwenden Sie für eine direkte JSON-RPC-Governance-Übermittlung ein Hardhat-Netzwerk mit einem lokalen Unterzeichner, und ändern Sie nur den Vorschlagstransport und das Netzwerk, wie im folgenden Beispiel dargestellt.
GOVERNANCE_INTENT_MODE=json-rpc \
GOVERNANCE_ADDRESS=<governance-contract-address> \
GOVERNANCE_UUID=<governance-uuid> \
DEPLOY_TARGETS_JSON='["<token-proxy>","<account-proxy>"]' \
DEADLINE_SECONDS=3600 \
DEPLOY_INTENT_MANIFEST=.obp-da/governance/deploy-intent.json \
npx hardhat run scripts/deploy/deposittoken/governance/propose-deploy-intent.ts --network <direct-json-rpc-network>
Das direkte Netzwerk muss mit einem autorisierten nicht-verwahrenden Signaturgeber konfiguriert werden. Verwenden Sie JSON-RPC nicht mit einer Nur-Wallet-Service-Konfiguration.
Governance-Aktivierung
Das Weiterleiten des Deployment-Intents ist ein separater Prozess vom Deployment der Proxys.
- No-Op: Die enthaltenen Komponenten werden während der erfolgreichen
proposeDeployIntent-Verarbeitung aktiviert. Prüfen Sie die Transaktion oder Oracle Blockchain Platform-Antwort, und fragen Sie dann den aktiven Status ab. - Geregelt: Das Intent bleibt aus, bis die konfigurierte Policy die erforderlichen Genehmigungen vor Ablauf der Frist erhält. Token und Account werden erst nach Abschluss dieser Policy automatisch aktiviert.
Die CLI umgeht keine Governance-Genehmiger. Wenn der Vorschlag abläuft, abgelehnt wird oder den falschen Proxy-/Code-Hash verwendet, lösen Sie die Ursache, und leiten Sie ein neues Intent weiter, anstatt das anfängliche Deployment als aktiv zu behandeln.
Nachdem die Governance aktiviert wurde, prüfen Sie das Deployment. Verwenden Sie die generierten Postman- oder Wrapper-API-Assets, oder importieren Sie das Projekt in Blockchain App Builder for Besu, und verwenden Sie den Bereich Ausführen. Verwenden Sie die Proxyadressen aus der Deployment-Zusammenfassung als Aufrufziele. Verwenden Sie keine Helper-Library- oder Implementierungsadressen.
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.
Fehlerbehebung
| Meldung oder Bedingung | Lösung |
|---|---|
GOVERNANCE_ADDRESS and GOVERNANCE_UUID are required |
Geben Sie beide Werte für den Deployment-Befehl an, und prüfen Sie, ob der Bytecode der Governance-Adresse im ausgewählten Netzwerk vorhanden ist. |
| Deployment ist unvollständig | Führen Sie denselben Befehl mit demselben DEPLOYMENT_ID-Wert erneut aus, bevor das Deployment abgeschlossen wird.
|
DEPLOY_TARGETS_JSON ist ungültig
|
Übergeben Sie ein nicht leeres JSON-Array mit eindeutigen Proxyadressen, z.B. ["0x...token", "0x...account"].
|
| Ziel ist kein EIP-1967-Proxy | Verwenden Sie die bereitgestellten Token- und Accountproxyadressen aus der Datei DEPLOYMENT_SUMMARY_JSON, keine Implementierungs- oder Library-Adresse.
|
| Oracle Blockchain Platform-Intent-Weiterleitung nicht erfolgreich, weil keine Autorisierung vorhanden ist | Vergewissern Sie sich, dass der Wert BESU_RPX_PROXY_AUTH_TOKEN festgelegt ist und dass das konfigurierte Oracle Blockchain Platform-Netzwerk ihn als Autorisierungsheader verwendet.
|
| Deployment erfolgreich, aber das Token bleibt inaktiv | Senden Sie das Deployment-Intent. Warten Sie bei reglementierter Governance auf Policy-Genehmigungen. Bestätigen Sie bei No-Op-Governance, dass die Angebotsverarbeitung erfolgreich war. |