首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >safeTransferFrom如何在ERC721合同上使用接收函数?

safeTransferFrom如何在ERC721合同上使用接收函数?
EN

Ethereum用户
提问于 2022-12-21 18:15:07
回答 1查看 243关注 0票数 1

我有两个合同,contractA (一个ERC721合同)和contractB (一个从IERC721Receiver继承的合同)。我正在尝试将nft(contractA)从所有者转移到contractB。

最初,这两项合同都有后备和接收功能。我从合同A中删除了这些功能,因为我不需要合同A来接收任何东西。在从合同A中删除接收函数之前,我能够将contractA上的contractA调用为contractB。从contractA中移除接收函数后,这将不再起作用。

我假设这个流程是contractA.safeTransferFrom(tokenOwner,contractB,tokenId,data) ->令牌传输到contractB -> contractB.received -> contractB.onERC721Received

似乎在这个流程中的某个地方,contractA.received正在被调用。为什么合同上的接收方法会被调用?

EN

回答 1

Ethereum用户

发布于 2022-12-21 19:54:46

这是IERC721Receiver的一个必要条件,以防事务恢复。

编辑

为了澄清,为了从contractA发送,接收契约必须是IERC721Receiver,以防止令牌被锁定。

在流程流中,contractA将启动safeTransferFrom。然后,它检查接收合同是否与ERC721兼容。以下是两项成果:

支票通过,代币被转移。检查失败,tx被恢复,将令牌发送回contractA

…因此,contractA至少需要一个接收和/或回退函数来进一步防止令牌被锁定。

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

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

复制
相关文章

相似问题

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