[英]Is is possible to call a ERC20 function inside a ERC721 contract?
[英]how to call a ERC20 contract fucntion inside ERC721 contract
我想要完成的是从 ERC721 合约调用 ERC20 合约中定义的 function,如下所示,特别是transferFrom
ERC20 合约中的 function 在同一个 ZC1C425268E48385D1AB507 中的 ERC20 合约中调用 function。
这不编译。 它最终所做的是,每次发生 erc721 NFT 转移时,版税都会以 erc20 代币的形式转移给创建者。
import "./myToken.sol" as erc20contract //This is my ERC20 contract
contract ERC721 is ERC721Interface, myToken {
function transferFrom(address _from, address _to, uint256 _tokenId) public payable {
address addr_owner = ownerOf(_tokenId);
require(
addr_owner == _from,
"_from is NOT the owner of the token"
);
require(
_to != address(0),
"Transfer _to address 0x0"
);
address addr_allowed = allowance[_tokenId];
bool isOp = operators[addr_owner][msg.sender];
require(
addr_owner == msg.sender || addr_allowed == msg.sender || isOp,
"msg.sender does not have transferable token"
);
//transfer : change the owner of the token
tokenOwners[_tokenId] = _to;
balances[_from] = balances[_from].sub(1);
balances[_to] = balances[_to].add(1);
//reset approved address
if (allowance[_tokenId] != address(0)) {
delete allowance[_tokenId];
}
erc20contract.transferFrom(_to, nftInfo[_from].creator, 10); // This is what I'd like to achieve
{
emit Transfer(_from, _to, _tokenId);
}
}
编辑:我刚刚注意到您的合同似乎同时实现了ERC721
和ERC20
标准。 您需要决定一个,但使用组合(如下所示)可能足以提供您所追求的所有必要功能。
除非我遗漏了什么,否则您似乎只缺少 ERC20 代币的实际实例。 例如:
contract YourToken is ERC721 {
ERC20 private immutable token;
constructor(ERC20 t) {
token = t;
}
function transferFrom(address _from, address _to, uint256 _tokenId) public payable {
// Your code here.
token.transferFrom(_from, _to, 10);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.