Wie ist es möglich, dass 0x0000000000000000000000000000000000000 ERC-20-Token versendet?

Ist das nicht 0x0000000000000000000000000000000000000000eine Burn-Adresse, an der niemand einen privaten Schlüssel hat? Wenn dies der Fall ist, wie kann diese Adresse Token an andere Adressen senden? Wenn Sie sich die Registerkarte ERC-20 Token von Etherscan ansehen, gibt es viele OUT-Einträge: https://etherscan.io/address/0x0000000000000000000000000000000000000000#tokentxns

Antworten (2)

Gemäß dem ERC20-Standard werden neu erstellte ERC20-Token von 0x0000000000000000000000000000000000000000an die Adresse gesendet, an die sie gesendet werden sollen. Es wurde gemacht, um sich zu protokollieren und um zu vermeiden, Token aus dem Nichts zu erstellen.

Aktualisieren

Der ERC20-Standard definiert nicht wirklich, dass die Token von gesendet werden 0x0000000000000000000000000000000000000000. Token werden einfach erstellt, indem die balancesZuordnung des gewünschten Benutzers Transfer()hinzugefügt, ein Ereignis ausgegeben und dieser Wert zur _totalSupply.

Obwohl es nicht im Standard definiert ist, hat es sich bewährt, beim Erstellen von Token ein Transfer()Ereignis mit 0x0als Adresse auszugeben. Es ermöglicht Front-End-Clients, Ereignisse zu lesen und Daten basierend auf diesem Ereignis anzuzeigen. Aus diesem Beitrag:

Dies geschieht auf diese Weise, damit Block-Explorer und Wallets, die nur das „Transfer“-Ereignis interpretieren, dem Benutzer die Operation anzeigen können. Es gab einige Beschwerden von Benutzern, dass die Übertragung fehlgeschlagen ist, weil sie nicht in ihrer Brieftasche (oder ihrem Block-Explorer) angezeigt wurde.

Nur das Event „Transfer“ ist Teil des ERC20-Standards, die Events „Mint“ und „Burn“ nicht. Es ist eine Umgehung dieser Einschränkung, eine Übertragung von 0x0 zu generieren, um ein „Mint“-Ereignis zu simulieren, und eine Übertragung zu 0x0, um ein „Burn“-Ereignis zu simulieren.

Jede dieser Transaktionen, die Sie auf der von Ihnen verlinkten Seite sehen, ist Etherscans Darstellung einer Token-Erstellung.

Um diesen Punkt zu ergänzen, werfen Sie einen Blick auf jede Adresse, die einen ERC20-Token an eine andere Stelle übertragen hat. Wenn Sie auf die Registerkarte „ERC20 Token Tx“ klicken, sehen Sie Transaktionen, die Token von einem Benutzer an einen anderen senden. Was tatsächlich passiert, ist eine Transaktion vom Sender zum Token-Vertrag, die die Zuordnung des Senders reduziert, die balancesZuordnung des Empfängers ergänzt balancesund ein Transfer()Ereignis ausgibt. Was Sie auf dieser Registerkarte sehen, ist einfach Etherscan-Lesen der Transfer()Ereignisse von Token.

Ich sehe das nirgendwo im Standard, könnten Sie ein direktes Zitat geben?
Es ist tatsächlich nicht da. Die Interaktion mit 0x0wird tatsächlich im Transfer()Ereignis beim Erstellen des Tokens verwendet. Ich habe die Antwort entsprechend aktualisiert.
Beim Erstellen der Erstversorgung Transfer()kann verwendet werden oder nicht. Tokens, die ich erstellt habe, verwenden es nicht. Das Ereignis dient hauptsächlich der Unterstützung von EtherScan und anderen Block-Explorern, da es keine standardmäßigen Mint- und Burn-Ereignisse gibt.

Darüber hinaus können Sie Transaktionen bestimmter Token von Adressen finden, die sie möglicherweise nicht senden könnten, indem sie falsche Transfer-Ereignisse ausgeben, um Etherscan dazu zu bringen, sie als Token-Transfer zu erkennen. Dies sind nicht einmal echte Token.

Etherscan kennzeichnet diese als „SPAM-Token“, sobald sie darüber benachrichtigt werden.