如何在从智能合约B接收到的令牌ID上调用智能合约a中的函数



我有两个ERC721智能合约A和B。我已经成功地在合约A上铸造了一个令牌ID,并将其转移到合约B地址(为了将其转移至我使用IERC721Receiver的合约地址而非钱包地址(。从这里开始,有没有一种方法可以让以令牌ID为参数的合约的B函数对从a接收到的令牌ID进行调用,该令牌ID现在属于B?

例如,如果合同A是:

contract ContractA is ERC721 {
...
function mint(address _to, uint256 _mintAmount) public payable {
for (uint256 i = 1; i <= _mintAmount; i++) {
_safeMint(_to, supply + i);
}
}
}

合同B为:

contract ContractB is ERC721 {
...
function exampleFunction(uint256 tokenId) public payable {

// Do something with tokenId
}
}

如果令牌ID#6从ContractA转移到ContractB(而不是在ContractB上铸造(,我如何在ContractB中调用exampleFunction(6)

在我看来,没有办法在代币ID上使用ERC721合约中的方法,这些方法不是从实现这些方法的同一合约中生成的。

任何帮助,所以提前感谢!

我可以看到ContractB拥有ContractA转移给它的令牌,但只能使用ContractA的ownerOf()方法。我不能在ContractB的方法上使用该令牌做任何事情,即使它现在属于它。

您可以从onERC721Received((实现中调用exampleFunction((。

但是,您将无法对代币进行任何操作,因为它尚未转移给您。onERC721Received纯粹是为了检查合同是否支持接收ERC721令牌。

相关内容

  • 没有找到相关文章

最新更新