我需要有关后备功能的帮助(onERC721Received 和 Receive)

问题描述 投票:0回答:1

我正在为区块链 CTF 创建 POC。我发现了重入漏洞。问题是,我的合约获得了 NFT,所以我的后备函数是 onERC721Received 函数。不过这个函数是不需要付费的,但是如果我使用 Receive 函数作为后备函数,那么当我获得 NFT 时它就不会运行。您能帮忙吗?

我正在尝试 Remix IDE。我想在购买 NFT 时运行后备函数,在这个函数中,我将调用一个需要以太坊的函数。

security blockchain solidity
1个回答
0
投票

即使您的问题需要更多澄清,我仍然通过假设您可能犯的错误来添加答案。

onERC721Received
函数确实跟踪是否收到任何ERC721令牌,但该函数不会执行和恢复如果您尝试直接将 NFT 发送到合约。

可以从外部合约调用接收NFT,通过

safeTransferFrom
方法将NFT转移到该合约地址。

参考以下链接--> https://docs.openzeppelin.com/contracts/3.x/api/token/erc721#IERC721Receiver-onERC721Received-address-address-uint256-bytes-

您的问题也不清楚您到底计划如何以及在哪里使用以太坊!但我只是在这里澄清一件事,无论你的合约中的函数是接收 ETH 还是发送 ETH,在这两种情况下,该方法都需要付费,并且接收地址也需要

payable

© www.soinside.com 2019 - 2024. All rights reserved.