es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué el evento en el token NFT (ERC721) recibe la dirección(0) como primer argumento?

Estoy aprendiendo cómo funcionan los contratos inteligentes de NFT. No pude entender por qué emitir un evento recibe address(0).

Esta es la función _mint de Openzeppelin ERC721

function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;
        // Estoy atascado aquí
        emit Transfer(address(0), to, tokenId);
        _afterTokenTransfer(address(0), to, tokenId);
    }

Cuando emitimos el evento Transfer, ¿por qué usamos address(0)? address(0) representa una dirección vacía. Aquí está el evento Transfer:

event Transfer(
     address indexed from, 
     address indexed to, 
     uint256 indexed tokenId);
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El address(0) en la declaración emit Transfer de la función _mint indica que el token que está siendo creado no está siendo transferido desde ninguna dirección, ya que está siendo recién creado. El evento Transfer en el estándar ERC721 representa una transferencia de propiedad del token entre dos direcciones diferentes, y en el caso de la creación de un nuevo token, no existe un propietario previo. Por lo tanto, se utiliza el address(0) para representar una dirección vacía o sin propietario previo.

Comments are closed.