Vertrag ausführen
Mit Blockchain App Builder können Sie ein bereitgestelltes Token oder einen Account/Identitätsproxy abfragen oder eine zustandsverändernde Vertragsfunktion aufrufen.
Nachdem Sie ein Projekt kompiliert haben, können Sie die Registerkarte Ausführen im Formular Bereitstellen/Ausführen verwenden, um Funktionen abzufragen oder aufzurufen. Die Erweiterung liest den ausgewählten Vertrags-ABI, zeigt die verfügbaren Funktionen an, codiert die Parameter und sendet die Anforderung über den Transport, der für die ausgewählte Umgebung geeignet ist. Stellen Sie bei komponierten Projekten die Token- und Accountproxys bereit, und aktivieren Sie sie, bevor Sie zustandsverändernde Tokenvorgänge versuchen.
- Öffnen Sie die Ansicht Verträge.
- Wählen Sie das Hardhat-Projekt aus, und öffnen Sie Bereitstellen/Ausführen.
- Wählen Sie die Registerkarte Ausführen.
- Wenn das Formular einen Projektselektor enthält, wählen Sie das Projekt aus, das Eigentümer des Vertrags und seiner kompilierten Artefakte ist.
Sie müssen die folgenden Felder ausfüllen, um ein Ziel und eine Funktion auszuwählen, bevor Sie einen Aufruf ausführen.
- Token: Der kompilierte Tokenvertrag, dessen ABI Sie verwenden möchten.
- Aufrufziel: Wählen Sie Token aus, um den Tokenproxy aufzurufen, oder Account/Identität, um den gepaarten Accountproxy aufzurufen. Wählen Sie Token als Aufrufziel für Tokenverhalten wie Salden, Minting, Transfers, Konfiguration und Assetklassenvorgänge aus. Wählen Sie Account/Identität für die Identitäts-, Berechtigungs- oder Policy-Funktionen des zugehörigen Accountvertrags aus.
- Ziel-ABI: Die ABI, mit der Funktionen aufgelistet und verschlüsselt werden. Ein generiertes Manifest sperrt das gekoppelte Konto ABI; andernfalls wählen Sie eines manuell.
- toAddress: Die bereitgestellte Proxyadresse für das ausgewählte Ziel. Geben Sie keine Helper-Library- oder Implementierungsadresse ein.
- Umgebung: Die Umgebung, in der dieser Proxy bereitgestellt wird.
- Funktion: Die ABI-Funktion zum Abfragen oder Aufrufen. Die Liste enthält den Funktionsursprung, um geerbte Funktionen zu unterscheiden.
Ausführungspfad
Die Erweiterung wählt den verfügbaren Modus basierend auf der ausgewählten Umgebung aus oder schränkt ihn ein.
| Umgebungs- und API-Modus | Abfrageverhalten | Aufrufverhalten | Erforderliche Unterzeichnerinformationen |
|---|---|---|---|
| Lokaler Hardwareknoten oder andere EVM mit JSON-RPC | Ruft den Knoten mit dem ausgewählten lokalen Private Key als from auf.
|
Signiert und sendet direkt über JSON-RPC. | Ein konfiguriertes Anruferkonto oder manuell eingegebener 32-Byte-Private Key. |
| Oracle Blockchain Platform Besu mit JSON-RPC-APIs | Ruft den JSON-RPC-Endpunkt von Oracle Blockchain Platform mit der ausgewählten Wallet Service-Accountadresse als from auf.
|
Erstellt eine Transaktion, fordert eine Wallet-Servicesignatur an und überträgt sie dann über Oracle Blockchain Platform JSON-RPC. | Wallet-Service-Signatur-URL, Account-JSON, Autorisierungstoken und ausgewählter Wallet-Account. |
| Oracle Blockchain Platform Besu mit REST rpc-proxy-APIs | Posts an die Abfrage-API der Oracle Blockchain Platform. | Posts an die Transaktions-API der Oracle Blockchain Platform. | Absenderadresse; optional Gas- und Empfangswarteeinstellungen. In diesem Modus ist kein lokaler Private Key oder Wallet Service-Unterzeichner eingegeben. |
Der REST-rpc-proxy-Modus ist nur für eine Oracle Blockchain Platform Besu-Umgebung verfügbar. Für die REST-Aufrufe werden der RPC-URL-Host, das Authentifizierungstoken und die TLS-Einstellungen der Umgebung verwendet. Andere EVM- und lokale Hardhat-Umgebungen verwenden JSON-RPC mit lokaler Signatur.
Funktion abfragen
Verwenden Sie Abfrage für einen Leseaufruf oder um eine Funktion mit dem aktuellen Kettenstatus zu simulieren.
- Wählen Sie Ziel, Umgebung, Funktion und Parameter.
- Konfigurieren Sie die Aufrufer- oder Wallet-Informationen, die für den ausgewählten Ausführungspfad erforderlich sind.
- Klicken Sie auf Abfrage.
- Prüfen Sie das Feld Ausgabe. Die JSON-RPC-Ausgabe enthält das Rohaufrufergebnis und das entschlüsselte ABI-Ergebnis, wenn die Decodierung erfolgreich ist. Die REST-Ausgabe enthält die API-Antwort.
Abfragen verwenden eine Anrufanforderung. Sie senden keine Transaktion aus oder persistieren nicht. Eine Abfrage kann weiterhin zurückgesetzt werden, wenn die Bedingungen, Aufruferberechtigungen oder angegebenen Parameter der ausgewählten Funktion für den aktuellen Vertragsstatus nicht gültig sind.
Funktion abrufen
- Wählen Sie Ziel, Umgebung, Funktion und Parameter.
- Konfigurieren Sie die erforderliche Signaturmethode.
- Wählen Sie unter Sonstige EVM oder Lokaler Hardwareknoten ein konfiguriertes Anruferkonto aus, oder geben Sie den autorisierten Private Key ein.
- Geben Sie für Oracle Blockchain Platform Wallet Service die Sign-URL, das JSON-Account und das Autorisierungstoken an, und wählen Sie den Wallet-Account aus.
- Geben Sie unter REST rpc-proxy die Absenderadresse ein, und geben Sie bei Bedarf die Einstellungen für Gasgrenzwert und Empfangswartezeit ein.
- Wählen Sie Aufrufen aus.
- Warten Sie auf das Ergebnis in Ausgabe. Erfolgreiche JSON-RPC- und Wallet-Serviceaufrufe umfassen Transaktions-Hash, Blocknummer, verwendetes Gas, Absender, Ziel und Wareneingangsstatus.
Parameter eingeben
Wählen Sie die Schaltfläche … neben Parameter, um den Parametereditor zu öffnen. Es zeigt den ABI-Parameternamen, die verschachtelte Eigenschaft, den Typ und ein Eingabefeld an. Wählen Sie die Aktion "Anwenden" des Editors aus, um das JSON-Parameterarray zu generieren, das von der Funktion Ausführen verwendet wird.
Parameter werden als ein JSON-Array in derselben Reihenfolge gesendet wie die ABI-Eingaben der ausgewählten Funktion.
| ABI-Eingabe | Einfügbare Parameter-JSON |
|---|---|
| Keine Eingänge | [] |
balanceOf(address) |
["0x1111111111111111111111111111111111111111"] |
transfer(address,uint256) |
["0x1111111111111111111111111111111111111111", "1000"] |
| Ein Tupel | [{"fieldA":"value","fieldB":"1000"}] |
Eine eigenständige tuple[]-Eingabe
|
[[{"userAddress":"0x1111111111111111111111111111111111111111","approvalSequence":1}]] |
Geben Sie für ganzzahlige ABI-Felder eine Dezimalzeichenfolge wie "1000" ein, um einen Verlust der numerischen Genauigkeit von JavaScript zu vermeiden. Verwenden Sie JSON true oder false für boolesche Werte. Adressen müssen gültige 0x-Adressen sein.
Verwenden Sie für Tupel- und Tupelarrayeingaben benannte JSON-Objekte, deren Eigenschaftsnamen mit den ABI-Komponentennamen übereinstimmen. Verwenden Sie keine Solidity-Positionstupelsyntax im Parametereditor.
Beispiel: Wenn der Editor eine Eigenschaft approverDetails tuple[] mit den Komponenten userAddress und approvalSequence anzeigt, fügen Sie den folgenden Wert in den JSON-Editor dieser Eigenschaft ein:
[
{
"userAddress": "0x1111111111111111111111111111111111111111",
"approvalSequence": 1
}
]Der Parametereditor platziert diesen Wert innerhalb des äußeren Funktionsargumentarrays. Geben Sie für ein vollständiges Tupel jede Komponente ein, die von der ausgewählten ABI angezeigt wird. Die genauen Felder variieren je nach Vertragsversion. Verwenden Sie daher die im Parametereditor angezeigten Eigenschaften, anstatt eine Tupelform aus einem anderen Tokenprojekt zu kopieren.
Wallet-Service - Eingabeformat
Geben Sie für den JSON-RPC-Modus von Oracle Blockchain Platform Wallet-Serviceaccounts als JSON-Array ein. Jeder Eintrag muss eine Adresse haben und kann eine Wallet-ID enthalten, wie im folgenden Beispiel gezeigt.
[
{
"address": "0x1111111111111111111111111111111111111111",
"walletId": "0x1111111111111111111111111111111111111111"
}
]Wählen Sie eines der geparsten Konten in Wallet-Konto aus. Abfragen verwenden ihre Adresse als from. Aufrufe bitten den Wallet-Service, sich für diesen Account zu signieren. Das Wallet-Service-Autorisierungstoken ist nicht im gespeicherten Entwurf des Formulars gespeichert.
Eingaben speichern und wiederverwenden
Wählen Sie Eingabe speichern aus, um die aktuelle Nicht-Secret-Ausführungsauswahl und die Parameter-JSON für das Projekt beizubehalten. Wählen Sie Gespeicherte Eingabe löschen aus, um den gespeicherten Formularstatus zu entfernen. Prüfen Sie Proxyadressen, ausgewählte Funktionen und Parameter vor einem Aufruf erneut. Gespeicherte Eingaben belegen nicht, dass ein Ziel noch in der aktuell ausgewählten Umgebung bereitgestellt ist.
Fehlerbehebung
| Bedingung | Lösung |
|---|---|
| Nach einem Upgrade wird eine neu hinzugefügte Methode nicht in der ABI-Liste auf der Seite Ausführen aufgeführt. | Aktualisieren Sie die Blockchain App Builder-Manifestdatei (generated.manifest.json), um contractClassName und contractRelativePath so zu ändern, dass sie auf den neu aktualisierten Vertrag verweisen.
|
| Keine ABI-Funktionen gefunden | Kompilieren Sie das Projekt, und prüfen Sie, ob das ausgewählte Token-/Accountartefakt vorhanden ist. Wählen Sie für ein Accountziel ohne Manifest die korrekte Konto-ABI manuell aus. |
| Zieladresse hat keinen Vertragscode | Prüfen Sie die ausgewählte Umgebung, und geben Sie die bereitgestellte Proxyadresse ein, nicht eine Helper-Library oder Implementierungsadresse. |
| Ungültige Parameter-JSON | Verwenden Sie den Editor …, um das Argumentarray neu zu generieren. Stellen Sie sicher, dass Arrays und Objekte gültige JSON mit doppelten Eigenschaftsnamen verwenden. |
| Wallet-Serviceaccountauswahl ist erforderlich | Geben Sie ein gültiges JSON-Array für Konten ein, und wählen Sie ein Wallet-Konto aus. |
| REST-rpc-proxy-APIs erfordern eine Oracle Blockchain Platform-Umgebung | Wechseln Sie zu einer Oracle Blockchain Platform Besu-Umgebung mit einer Nur-Host-RPC-URL, oder verwenden Sie JSON-RPC für andere EVM/Hardhat. |
| Nicht autorisierter Aufrufer oder dekodierter benutzerdefinierter Fehler | Prüfen Sie den ausgewählten Aufrufer-/Wallet-Account, den Zielproxy, den aktiven Governance-Status, die Rollen-/Policy-Voraussetzungen und die ABI-Parameter. |
| Abfrage oder Aufrufen bleibt nicht verfügbar | Füllen Sie die erforderlichen Felder für Ziel, Umgebung, Funktion und Signaturgeber für den ausgewählten API-Modus aus. |