Ich habe Probleme, eine solide Vertragsmethode zu finden, um ERC20-Token von Adresse A nach B zu übertragen, vorausgesetzt, B hat approve
außerhalb des Vertrags angerufen und allowance
für A ausreichend eingerichtet. Der allowance
Wert wird im Vertrag gut gedruckt, aber der transferFrom
Fehler schlägt fehl. Mir fehlt etwas bei der Einrichtung des Eigentums und der Signaturen. Ich habe eine Problemumgehung, bei der dasselbe transferFrom
außerhalb des Vertrags funktioniert, aber ich würde es gerne innerhalb tun.
Ich habe ein Beispiel-Repo mit Trüffeltests und einem Problem eingerichtet, um das Problem weiter zu beschreiben:
https://github.com/PulseBlockchain/oz-sample-app/issues/1
Dies ist ein Auszug aus einem größeren Projekt, wo ich ein ähnliches Problem habe.
Es sieht ähnlich aus wie diese Frage, ERC20 genehmigen und von einem Vertrag übertragen , außer dass ich approve
außerhalb tue und den Vertrag nur erledigen möchte transferFrom
. Es sieht so aus, als ob es einen Weg gibt, transfer
aus einem Vertrag wie diesem Open Zeppelin- CrowdSale
Vertrag herauszukommen , den ich in meinem Projekt habe. transfer
Ich möchte in der Lage sein, entweder oder aus meinem eigenen Vertrag heraus zu tun transferFrom
, und möchte die Eigentums- und Unterschriftsregeln darum besser verstehen.
Problem gelöst dank Debugging-Unterstützung von Gonçalo Sá . Hier ist das fixe Commit tl;dr: Du musst approve
zuerst allowance
an die Adresse des Vertrages anrufen tranferFrom
und dann den Wert an die endgültige Zieladresse überweisen.
Sie könnten unter dem Stapelüberlauffehler leiden. https://medium.com/@TokPie/erc20-tokens-under-attack-from-new-batchoverflow-bug-while-tokpie-remains-safe-b59dd716d469