Senden Sie erc20-Token mit der json-rpc-API

Ich muss ERC20-Token (genauer gesagt Golem) automatisiert senden, also richte ich einen Geth-JSON-RPC-Server ein

./geth --fast --rpc

So kann ich die API problemlos aufrufen.

Die Dokumentation für eth_sendtransaction macht es einfach, Ethereum an eine andere Adresse zu senden, aber ich konnte nicht finden, wie man ERC20-Token sendet. Ich habe das Datenfeld gesehen, das es ermöglichte, Smart Contracts auszulösen. Ich nehme an, ich muss eine Funktion im Smart Contract des ERC20-Tokens auslösen, aber da ich Solidität lernen und den gesamten Golem Smart Contract durchlesen müsste, dachte ich, ich würde zuerst hier fragen.

Vielen Dank !

transfer()Da Golem ein ERC20-konformer Token ist, müssen Sie die Standardfunktion des Smart Contract aufrufen , um x Token an y Adresse zu übertragen. Die Funktion ist wie folgt: transfer(address _to, uint256 _value).

Antworten (3)

Um ein ERC20-konformes Token zu senden, müssen Sie die transferVertragsmethode aufrufen. Um dies mit geth zu tun, haben Sie korrekterweise eth_sendTransactionRPC Call ausgewählt.

Im dataParameter sollten Sie die ABI-codierte Funktion transfermit Parametern angeben, die wie hier beschrieben codiert sind (ABI-codiert).

Um Parameter zu kodieren, können Sie das Online-Tool https://abi.hashex.org verwenden . Sie geben den Namen der Funktion (Übergabe) ein und fügen Parameter mit Typen und Werten hinzu. Oder Sie können einfach das Token abi einfügen und die Funktion transferin der Dropdown-Liste "Funktionstyp" auswählen. Hier ist ein Beispiel für die Verwendung dieses Tools.

Geben Sie hier die Bildbeschreibung ein

Es gibt auch eine Javascript-Bibliothek zum Codieren von Parametern, wenn Sie dies automatisch tun möchten.

Nachdem Sie Ihre ABI-codierten Daten erhalten haben, setzen Sie sie dataim RPC-Aufruf von Geth auf das Feld, legen Sie andere Werte fest und Sie sind bereit, Geth aufzurufen und Token zu übertragen.

Achten Sie darauf, dass das Konto, von dem Sie Token senden ( fromParameter im RPC-Aufruf), in Geth entsperrt sein sollte, um die Transaktion zu signieren.

Danke, habe deine Methode ausprobiert und sie hat ETH und nicht das Token übertragen. Wie und wo definieren wir die Vertragsadresse (damit sie weiß, dass die ABI zum Vertrag gehört), damit wir den richtigen Token senden können.

<--BEARBEITEN-->

Habe gerade die Lösung gefunden: An: die Adresse des Tokenvertrags, da dies der Empfänger des Funktionsaufrufs ist.

Wert = 0 (zu sendende Menge an Ethereum.)

@R Tan, hilf mir. Ich schicke immer noch Ether. Ich habe To als Vertragsadresse aktualisiert

Wenn Sie mit der Verwendung einer REST-API zufrieden sind, können Sie Chaingateway.io verwenden , das es ermöglicht, jedes ERC20-Token automatisch zu senden und zu empfangen. Auf diese Weise müssen Sie Solidity nicht lernen und können sich auf Ihre Anwendung konzentrieren.

  • Ich bin nicht mit Chaingateway verbunden oder werde von Chaingateway bezahlt, bin aber seit einigen Monaten zufriedener Kunde und empfehle es gerne weiter.
Bitte hinterlassen Sie einen Offenlegungskommentar, wenn Sie Teil des Chaingateway-Teams sind oder von ihnen bezahlt werden.