首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在不发出传输事件的情况下创建和分配任意数量的NFT?(ERC721)

是否可以在不发出传输事件的情况下创建和分配任意数量的NFT?(ERC721)
EN

Ethereum用户
提问于 2021-01-27 10:51:08
回答 1查看 220关注 0票数 0

我问这个问题是关于上面提到的ERC721规范/代码中的传输事件。

/ @dev --当任何NFT的所有权被任何机制改变时,这个值就会发出。/此事件在创建NFT (from == 0)和销毁/ (to == 0)时发出。例外情况:在合同创建期间,可以创建和分配任何数量的NFT/,而不需要发送传输。在/任何传输时,该NFT的批准地址(如果有的话)将重置为none。事件传输(地址索引_from、地址索引_to、uint256索引_tokenId);

因为这件事,我挠头好几天了。这怎麽可能?从技术上讲,我想不出任何解决方案来创建"n“令牌并将其分配给钱包地址,而无需在mint函数中的for循环中映射令牌in。为了实现这一点,应该绕过官方实现中的枚举函数。但是,这些代币在合同中是如何存在的呢?有关于这方面的实例实现吗?我到处找,但什么也找不到。能够在创建合同时创建"n“个NFT(不发出事件)对我有很大好处;我正在做一些实验,所以现在我忽略了这些事件。

谢谢!

EN

回答 1

Ethereum用户

发布于 2021-01-27 16:44:37

嗯,没有任何“官方”的执行。只有参考实现,只要遵循ERC-721标准,就可以以任何方式实现它。

此外,ERC-721标准能否强制传输事件的发出也是值得怀疑的。从技术上讲,它不能强制执行--无法确定合同X是否总是发出事件,以及它是否应该被认为是ERC-721。因此,“是合同X和ERC-721合同”的意义相当模糊。

如果您查看mint功能在https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol#L333上的一个引用实现,您可以看到它发出传输事件。因此,您可以做的就是简单地复制该代码并将其添加到没有Transfer事件的契约构造函数中,使用您想要的任何参数(即使使用循环(如果您愿意)。

或者,更好的是,对于您的测试,您可能并不关心您的合同是否真的与ERC-721兼容,所以您可以只包含测试所需的功能,而不需要其他功能。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/92809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档