ERC20-Token-Transaktion

Woher weiß Etherscan, dass eine bestimmte Transaktion eine ERC20-Token-Übertragung ist? Wenn Sie hier nachsehen: https://rinkeby.etherscan.io/tx/0xa8e4aa4f533e03bd8298f393d50d4ca41dba3368493c481e386d11389008353d etherscan weiß, dass Konto A Konto B 200 Token überträgt. Ich bin ziemlich vertraut mit dem Abfragen von Ethereum mit JSON RPC, also frage ich mich, ob diese Informationen irgendwo vorhanden sind.

Vielen Dank

Die Signaturen der Funktionen/Events von ERC20 sind aus dem Standard bekannt und können aus Transaktionsdaten oder Transaktionsquittung (für Events) dekodiert werden.

Antworten (2)

Es weiß, weil:

  1. Die Verträge implementieren die Standard-ERC20-Schnittstelle
  2. Die Adresse ruft die transfer(address to, uint amount)Funktion im ERC20-Vertrag auf
  3. Der Vertrag protokolliert das Standard-ERC20-EreignisTransfer(address to, uint amount)
Danke, wissen Sie, wie ich ein solches Ereignis mit JSON-RPC-Anforderungen erfassen kann? Ich interessiere mich für vergangene Ereignisse im Zusammenhang mit einem ICO

Etherscan weist zumindest darauf hin, dass die Transaktion ein begleitendes Ereignis mit der Signatur hatte Transfer(address,uint256). Ich bin mir nicht sicher, ob sie im Vertrag auch nach anderen ERC20-Kompatibilitäten suchen (z. B. a name, symbol, und totalSupply).

Danke, dieselbe Frage wie oben, wissen Sie, wie ich ein solches Ereignis mit JSON-RPC-Anforderungen erfassen kann? Ich interessiere mich für vergangene Ereignisse im Zusammenhang mit einem ICO
Was hast du bisher versucht und wo bist du hängen geblieben?
Ich kann den Kontostand (#of token) eines Kontos abrufen, indem ich eth_call verwende (und 0x70a08231 (das sha3 der oben geschriebenen Funktion) mit der Kontoadresse im Feld "data" und dem Vertrag im Feld "to" verkettet. Das funktioniert wie ein Zauber, aber um etwas Sinnvolles zu bekommen, müsste ich wissen, auf welche Konten es Überweisungen gab; ich könnte eine Liste der Konten aus den Transaktionen erhalten, aber das würde erfordern, dass ich die Blöcke für Blöcke parse ... was sein kann machbar, aber ich frage mich nur, ob es einen einfachen Weg gibt. Ich habe von den Ereignissen gehört, bin mir aber nicht sicher, ob sie mir in diesem Fall helfen würden. Danke
Ja, die Veranstaltungen würden helfen. Schau dir an eth_getLogs.
hast du ein beispiel woran ich mich orientieren kann? Ich bin mir nicht sicher, wie ich mit den eth_getLogs interagieren soll, und kann online keine guten Beispiele finden. Vielen Dank