Ich verwende Truffle-Contract für die Verbindung zwischen Frontend und Smart Contract. Derzeit kann ich die Methode Smart Contract aufrufen und Ether erfolgreich verbrauchen.
const result = await instance.adoptCreeptomas(
aquaQuantity,
firaQuantity,
aetherQuantity,
gaiaQuantity,
referrer,
{ from: accountAddress, value: ether(sendingEther) }
);
Aber vorher möchte ich zuerst die Methode testen. Also gehe ich zu dieser Methode über:
const data = await instance.adoptCreeptomas.call(
aquaQuantity,
firaQuantity,
aetherQuantity,
gaiaQuantity,
referrer,
{ from: accountAddress, value: ether(sendingEther) }
);
Aber wenn ich das aufrufe, treffe ich auf folgende Ausnahme:
errors.js:38 Nicht erfasster (versprochener) Fehler: Ungültige JSON-RPC-Antwort: {"id":6,"jsonrpc":"2.0","error":{"code":-32603}}
Ich verwende Ganache für die lokale Blockchain und Metamask für den Anbieter. Bitte helfen Sie mir herauszufinden, warum.
Danke
Bitte überprüfen Sie den Unterschied zwischen transaction
und call
.
Die Syntax .call()
in Truffle-Contract ist explizit für das Tätigen eines Aufrufs , während die Syntax des direkten Aufrufs mit dem Methodennamen :
Wir haben die sendCoin-Funktion der Abstraktion direkt aufgerufen. Dies führt standardmäßig zu einer Transaktion (dh Schreiben von Daten) anstelle eines Anrufs.
Ich kann Ihrer Methodensignatur entnehmen, dass adoptCreeptomas
einige Änderungen am Netzwerk bestehen bleiben. Also einfach loswerden .call
und schauen was passiert.
hqt
adoptCreeptomas
speichert einige Daten in der Blockchain (und verbraucht auch Ether). Deshalb denke ich, dass wir die Methode zuerst "testen" sollten. Ich habe darauf basierend: ethereum.stackexchange.com/questions/765/… (Empfehlung, zuerst anzurufen, dann sendTransaction)hqt
nämlich
nämlich
web3.eth.contract
er unterstützt wird.hqt
web3.eth.contract
ist vorhanden. Aber ich weiß nicht, wie man diese Methode anwendet. Danke.hqt
nämlich
nämlich