_safeMint() 在幕后做了什么?
what does _safeMint() do under the hood?
以下是一些精简的示例代码,我用它来表述我的问题。这与 Patrick Collins 的 Youtube 视频有关,标题为:如何使用 On-Chain 元数据制作 NFT 艺术 |完整的 HARDHART / JS 教程! (含 Polygon 和 Opensea)
contract RandomSVG is ERC721URIStorage, VRFConsumerBase {
....
....
function create() public returns (bytes32 requestId) {
requestId = requestRandomness(keyhash, fee);
...
...
}
function fulfillRandomness(bytes32 requestId, uint256 randomNumber)
internal
override
{
...
...
_safeMint(nftOwner, tokenId);
...
}
}
RandomSVG 是一个将创建随机 NFT 的合约。
问题 1:
我阅读了文档,但仍然无法理解。 _safeMint()
函数到底做了什么?
问题2:合约中的什么时候应该调用_safeMint()
函数?
在他的示例中,帕特里克在 fulfillRandomness()
回调中使用 _safeMint()
函数。为什么 _safeMint()
甚至在图像创建之前就被调用了?不应该在创建 TokenURI 之后调用它吗?
_safeMint() 与 IERC721Receiver 一起使用,检查您是否将铸造的令牌发送到能够管理 NFT 的合约。这是为了防止令牌丢失。
以下是一些精简的示例代码,我用它来表述我的问题。这与 Patrick Collins 的 Youtube 视频有关,标题为:如何使用 On-Chain 元数据制作 NFT 艺术 |完整的 HARDHART / JS 教程! (含 Polygon 和 Opensea)
contract RandomSVG is ERC721URIStorage, VRFConsumerBase {
....
....
function create() public returns (bytes32 requestId) {
requestId = requestRandomness(keyhash, fee);
...
...
}
function fulfillRandomness(bytes32 requestId, uint256 randomNumber)
internal
override
{
...
...
_safeMint(nftOwner, tokenId);
...
}
}
RandomSVG 是一个将创建随机 NFT 的合约。
问题 1:
我阅读了文档,但仍然无法理解。 _safeMint()
函数到底做了什么?
问题2:合约中的什么时候应该调用_safeMint()
函数?
在他的示例中,帕特里克在 fulfillRandomness()
回调中使用 _safeMint()
函数。为什么 _safeMint()
甚至在图像创建之前就被调用了?不应该在创建 TokenURI 之后调用它吗?
_safeMint() 与 IERC721Receiver 一起使用,检查您是否将铸造的令牌发送到能够管理 NFT 的合约。这是为了防止令牌丢失。