【发布时间】:2021-12-26 18:17:25
【问题描述】:
我正在学习 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) 代表空地址。这是 Transfer 事件:
event Transfer(
address indexed from,
address indexed to,
uint256 indexed tokenId);
【问题讨论】:
标签: ethereum solidity smartcontracts nft erc721