Warum Transfer(0x0, _to, _amount) nach Minting Tokens

Warum ist es in https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/ERC20/MintableToken.sol#L38 erforderlich, das Ereignis auszugeben?

Transfer(0x0, _to, _amount);

nach dem Prägen einiger Münzen? Kann mir bitte jemand diese Codezeile erklären? Übertragen Sie tatsächlich Münzen von 0x0 an die Adresse _to?

Antworten (3)

Das ist kein Übertragungsvorgang, sondern eine Ereignisbenachrichtigung.

Dies geschieht auf diese Weise, sodass 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 Problemumgehung, um diese Einschränkung zu umgehen, indem eine Übertragung von 0x0 generiert wird, um ein „Mint“-Ereignis zu simulieren, und eine Übertragung auf 0x0, um ein „Burn“-Ereignis zu simulieren.

Als ursprünglicher Autor dieser Codezeile dient sie dazu, das EIP-20-Transaktionsereignis in EtherScan anzuzeigen. Auf diese Weise können die Käufer des Token-Verkaufs sehen, dass sie die Token und den richtigen Betrag erhalten haben, wenn sie sich in den Token-Verkauf einkaufen.

Weitere Diskussionen finden Sie in der ursprünglichen Quellcodedatei:

https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol#L38

Die Übertragung ist nur ein vom ERC20Basic.sol-Vertrag geerbtes Ereignis.

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol

Was es tut, ist nur zu protokollieren, dass der Vertrag neue Münzen geprägt und an die Adresse _to gegeben hat.