Ich entwickle eine DApp im Kovan-Netzwerk auf Remix und habe Schwierigkeiten, das Problem zu verstehen. Ich versuche, den Wrapped Ether-Vertrag (WETH: https://kovan.etherscan.io/address/0xd0a1e359811322d97991e03f863a0c30c2cf029c ) aus meinem eigenen Vertrag aufzurufen (um den Ether meiner Benutzereinlage automatisch zu verpacken / auszupacken).
Wenn ich den Vertrag von Etherscan über Metamask aufrufe, kann ich WETH problemlos einzahlen und abheben.
Das Problem tritt jedoch auf, wenn ich versuche, WETH durch meinen Vertrag zu „einzahlen“ (mit meiner WrapETH-Funktion) und dann „abzuheben“. Ich erkannte das Problem, als meine Auszahlungsversuche immer rückgängig gemacht wurden. Mir wurde klar, dass die Einzahlungstransaktion bei Remix immer ausstehend war, obwohl die Transaktion auf seiner Etherscan-Seite abgebaut wurde (zum Beispiel: https://kovan.etherscan.io/tx/0xe815da928878318b9e8eff18eb8ae353ebc0e8db9cd8fb2b39ca2b55f13d06f9 ), und dass ich das Ereignis sehen und meine überprüfen konnte Saldo auf der WETH-Seite. Die Transaktion selbst erschien auch nicht auf der WETH-Seite. Eine weitere seltsame Sache bei dieser ausstehenden Transaktion sind die „Eingabedaten“, die im Vergleich zu anderen Transaktionen nicht lesbar sind.
Weiß jemand, was passiert und warum es einen Unterschied zwischen dem Aufruf des WETH-Vertrags von Etherscan (wieder, wo die Transaktion direkt abgebaut und aufgezeichnet wird) und nicht von meinem Vertrag gibt?
Hier sind die Funktionen, die ich aufrufe (mit nur dem Nützlichen)
WETH9_ WETHContract = WETH9_(0xd0a1e359811322d97991e03f863a0c30c2cf029c);
function depositETH() public payable{
}
function wrapETH(uint256 _amount) public{
WETHContract.deposit.value(_amount)();
}
function withdrawETH(uint256 _amount) public{
WETHContract.withdraw(_amount);
}
Danke
Die Transaktion funktioniert wie erwartet.
Die Paritätsspur Ihres Vertrags zeigt, dass er den WETH-Vertrag aufruft. Ihre Transaktion löst auch das Deposit
Ereignis für den Wert der Transaktion aus. Wenn Sie auf die Seite Vertrag lesen des WETH-Vertrags gehen und das Guthaben von abfragen 0xf2a800fa540060384ed4d778db7cafdf477df2ec
, erhalten Sie ein entsprechendes WETH-Guthaben zurück.
Der einzige Unterschied wäre, wer die WETH erhält. Wenn Sie Metamask verwenden, um den WETH-Vertrag direkt aufzurufen, wird die WETH an das externe Konto gesendet, das die Transaktion initiiert hat.
Wenn Sie Ihren Vertrag durchgehen, wird Ihr WETH stattdessen Ihrem Vertrag gutgeschrieben, da es sich bei WETH um msg.sender
Ihren Vertrag handelt.
Sie sollten ein internes Hauptbuch in Ihrem Vertrag über Benutzersalden führen. Wenn Sie die Auszahlungsfunktion aufrufen, kommt der Ether zu Ihrem Kontrakt und Sie müssen ihn an den Benutzer weiterleiten.
Louis Fournier
Raghav Sood
Louis Fournier