Token mit Vertragsinteraktion in Remix senden
Ich bin mir bewusst, dass ich das Wertefeld in Remix verwenden muss, um die ETH in meine Funktionsaufruftransaktion aufzunehmen. Gibt es jedoch eine Möglichkeit, mit meiner Transaktion ein weiteres Token zu senden, z. B. LINK?
Zusätzlich möchte ich verlangen, dass eine bestimmte Menge an LINK gesendet wird, ähnlich wie für die ETH (msg.value == X) erforderlich. Ich habe die Token-Schnittstelle bereits importiert und initialisiert, bin mir aber nicht sicher, wohin ich von dort aus gehen soll, und weiß nicht, wie ich das Token in Remix senden soll, um es trotzdem zu testen.
import "https://github.com/smartcontractkit/chainlink/blob/develop/evm-contracts/src/v0.6/interfaces/LinkTokenInterface.sol";
LinkTokenInterface internal LINK;
//in constructor (kovan LINK token)
LINK = LinkTokenInterface(0xa36085F69e2889c224210F603D836748e7dC0088);
Antworten
Sicher, aber der Ablauf ist etwas kontraintuitiv und gewöhnungsbedürftig.
Sie können die ETH und / oder Daten an eine Vertragsfunktion senden. Die Daten können eine Vertragsfunktion anweisen, eine bestimmte Menge eines Tokens von jemandem zu beschlagnahmen, normalerweise vom msg.sender (aber nicht unbedingt).
Ihr Vertrag würde die ERC20- transferFrom(<funder>, <amount>)Funktion verwenden. Da nicht jeder sich nur um das Geld aller anderen kümmern kann, genehmigt der Benutzer zunächst eine Zulage für die approve(<yourContract>, <agreedAmount>)Funktion oder die increaseAllowance()Funktion.
z.B
token = LinkTokenInterface(0xa36085F69e2889c224210F603D836748e7dC0088)
...
token.transferFrom(msg.sender, msg.value);
- Alice => ERC20 "Lass den Vertrag meine Token haben"
- Alice => Vertrag "Nimm meine Token"
- Vertrag => ERC20 "Gib mir Alice's Token"
Ich hoffe es hilft.
Ich glaube, ich habe die Antwort tatsächlich gefunden: Rufen Sie eine Smart Contract Payable-Funktion auf, die erc20-Token sendet
Der Benutzer / ich muss zuerst die Genehmigungsfunktion im LINK-Vertrag aufrufen, dann kann mein Remix-Vertrag mithilfe der transferFrom-Funktion von LINK Token von msg.sender auf sich selbst übertragen.