BEARBEITEN Die Erlaubnis ist festgelegt, das Problem ist nur, dass die Metamaske keinen Token-Namen oder zulässigen Betrag erkennt.
In meinem HTML/JS
amount = parseInt(web3.toWei(amount, "ether" ));
tokeninstance.approve(mainadd,amount,function(error, transactionHash){
if (!error){
$("#allowanceresult").html("TX hash: "+transactionHash+"<br>")
toastr.success("Approval successfull!")
}else{
$("#allowanceresult").html("Error: "+error+"<br>")
toastr.error("Approval failed!");
}
Im Solidity-Interface
function approve(address guy, uint wad) public returns (bool);
Wenn ich die Genehmigungsfunktion in Remix manuell ausführe, bin ich auf Ropsten, aber wenn ich Metamask + die HTML / JS-Dapp-Funktion dort oben verwende, Benutzereingaben erhalte (richtig in wei anzeigen) und eine vordefinierte Adresse (korrektes Format) eingebe, zeigt Metamask mir dies , immer noch auf ropsten:
Übersehe ich etwas? Es ist immer so, dass ich meine send() web3.js-Funktionen gemacht habe, ich verwende die gleiche web3.js-Datei wie immer.
Wenn Sie beide Ereignisse nebeneinander überprüfen (von Remix und Metamask), werden eindeutig beide gleichen Daten eingegeben, gleiche Adresse und gleiche Wei-Menge. :(
Senden Sie beim Aufrufen einer Smart-Contract-Funktion aus Javascript das uint
Argument als BigNumber . Ich schätze, du kannst das versuchen?
amount = new BigNumber(web3.toWei(amount, "ether" ));
Sibiraj PR