我有两个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令牌。