Es wird versucht, Geld mit dem ERC20-Token-Handle zu überweisen und „transferFrom“ aufzurufen. Angenommen, der spezifische Betrag wird vom Eigentümerkonto für die Vertragsadresse „MyContract“ vorab genehmigt.
contract StandardToken {
function transferFrom(address from, address to, uint value);
}
contract MyContract{
address _addrToken;
function MyContract(address addrToken){
_addrToken = addrToken;
}
event FundAcquired(address owner, uint256 amount);
function acquireFund(address owner, uint256 amount){
StandardToken token = StandardToken(tokenAddr);
token.transferFrom(owner, this, amount);
FundAcquired(owner, amount);
}
}
Beim Aufruf über web3js ergibt die Funktion 'acquireFund' folgenden Fehler.
Ausnahme: Fehler: VM-Ausnahme beim Verarbeiten der Transaktion: Zurücksetzen
Kann mir jemand helfen, was das Problem ist?
Wechseln Sie tokenAddr
zu _addrToken
.
Ich denke, Sie sollten zuerst Token.Approve(MyContract.address) ausführen, um die Zulage festzulegen, damit der Vertrag Token vom Eigentümer ausgeben kann.
Benutzer19510
tokenAddr
. Sollte das_addrToken
stattdessen lauten? (Aber das kann nicht die Ursache für den Fehler sein, den Sie sehen, da es sich um ein Problem bei der Kompilierung handeln würde.) Ebenso sehe ichowner
überhaupt keine Definition für.Rob Magier