首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用onERC721Received恢复直接传输

用onERC721Received恢复直接传输
EN

Ethereum用户
提问于 2022-11-25 08:30:26
回答 1查看 99关注 0票数 0

在NFT市场上工作,我不允许直接传输,只允许通过本合同的自定义函数createSale()进行传输。

我就是这样来的:

代码语言:javascript
复制
    function onERC721Received( address operator, address from, uint256 tokenId,bytes calldata data ) external override returns (bytes4) {
        if(msg.sender != address(this) && tx.origin == operator) revert("direct transfer not allowed"); //disallow direct transfers
        emit NFTReceived(operator, from, tokenId, 1, "ERC721", data);
        return IERC721Receiver.onERC721Received.selector;
    }

到目前为止,它似乎是有效的,我所做的大量测试似乎还不错。

然而,

,我想知道是否有我没有看到的问题,这种方法完全安全吗?有什么潜在的隐患吗?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2022-11-28 16:34:58

我认为唯一可能的问题是,onERC721Received回调只在safeTransferFrom用于传输ERC721时才被调用。如果使用transferFrom,那么直接传输是可能的。因此,我认为这份明智的合同应该得到发展,事实上,直接转让仍然是可能的。

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

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

复制
相关文章

相似问题

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