我正在学习 nft 智能合约的工作原理。我不明白为什么发出事件会收到address(0)
。
这是来自Openzeppeling ERC721的 _mint 函数
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;
// i am stuck at here
emit Transfer(address(0), to, tokenId);
_afterTokenTransfer(address(0), to, tokenId);
}
当我们发出 Transfer 事件时,为什么要使用address(0)
. address(0)
代表空地址。这是转移事件:
event Transfer(
address indexed from,
address indexed to,
uint256 indexed tokenId);