¿No es 0x0000000000000000000000000000000000000000
una dirección de grabación donde nadie tiene una clave privada? Si ese es el caso, ¿cómo puede esta dirección enviar tokens a otras direcciones? Si observa la pestaña ERC-20 Token de Etherscan, hay muchos registros OUT: https://etherscan.io/address/0x00000000000000000000000000000000000000000#tokentxns
Según el estándar ERC20 , los tokens ERC20 recién creados se envían desde 0x0000000000000000000000000000000000000000
la dirección a la que deben enviarse. Se hizo como una forma de registro y para evitar crear tokens de la nada.
El estándar ERC20 en realidad no define que los tokens se envíen desde 0x0000000000000000000000000000000000000000
. Los tokens se crean simplemente agregando al balances
mapeo del usuario deseado, emitiendo un Transfer()
evento y agregando ese valor al archivo _totalSupply
.
Si bien no está definido en el estándar, es una buena práctica emitir un Transfer()
evento con 0x0
una dirección al crear tokens. Permite a los clientes front-end leer eventos y mostrar datos basados en este evento. De esta publicación:
Esto se hace de esa manera para que los exploradores de bloqueo y las billeteras que solo interpretan el evento 'Transferir' puedan mostrar la operación al usuario. Hubo algunas quejas de los usuarios de que la transferencia falló porque no apareció en su billetera (o en el explorador de bloques).
Solo el evento 'Transfer' es parte del estándar ERC20, y los eventos 'Mint' y 'Burn' no lo son. Es una solución alternativa a esa limitación generar una transferencia desde 0x0 para simular un evento 'Mint' y una transferencia a 0x0 para simular un evento 'Burn'.
Cada una de esas transacciones que ve en la página que vinculó son la representación de Etherscan de una creación de token.
Para agregar a este punto, eche un vistazo a cualquier dirección que haya transferido un token ERC20 a otro lugar. Si hace clic en la pestaña "ERC20 Token Tx", verá transacciones que envían tokens de un usuario a otro. Lo que realmente está sucediendo es una transacción del remitente al contrato de token, que reduce el balances
mapeo del remitente, se suma al mapeo del receptor balances
y emite un Transfer()
evento. Lo que ve en esa pestaña es simplemente la lectura Etherscan de los Transfer()
eventos de los tokens.
Además, puede encontrar transacciones de ciertos tokens de direcciones que posiblemente no podrían enviarlos emitiendo eventos de transferencia falsos para engañar a etherscan para que lo reconozca como una transferencia de token. Estos ni siquiera son fichas reales.
Etherscan los marca como "tokens de SPAM" una vez que se les notifica.
tjaden hess
shane fontaine
0x0
se usa realmente en elTransfer()
evento al crear el token. He actualizado la respuesta en consecuencia.mikko ohtamaa
Transfer()
puede o no utilizar. Los tokens que he creado no lo usan. El evento es principalmente para soporte de EtherScan y otros exploradores de bloques, en ausencia de eventos estándar de mint y burn.