¿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);
davy.ai
El
address(0)
en la declaraciónemit 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 eventoTransfer
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 eladdress(0)
para representar una dirección vacía o sin propietario previo.