![](/img/trans.png)
[英]what is difference between transfer event of Mint function and Transfer function of ERC20 Smart Contract?
[英]Error when I call transfer function in ERC20 contract from other contract, But, can use mint/burn
我写了2份合同
当调用“marketBuy” function 时,它可以将 NFT 转移给买家,并可以从 ERC20 合约调用销毁。 但是当我将“burn”function 更改为“transfer / transferFrom”时出现这样的错误
交易到 NFT2.marketBuy 待处理...交易到 NFT2.marketBuy 错误:VM 错误:还原。
revert 交易已经恢复到最初的state。 注意:被叫function 应该是支付的,如果你发送价值并且你发送的价值应该小于你的当前余额。 调试事务以获取更多信息。
这是代码
...
function marketBuy(uint _tokenId) public returns (bool) {
address _buyer = msg.sender;
uint _price = marketItem[_tokenId].price;
IERC20(ERC20Token).approve(marketItem[_tokenId].seller, _price);
IERC20(ERC20Token).transferFrom(_buyer, marketItem[_tokenId].seller, _price);
transferFrom(marketItem[_tokenId].seller, _buyer, _tokenId);
marketItem[_tokenId].seller = _buyer;
marketItem[_tokenId].isSold = true;
return true;
}
....
我不知道如何解决这个问题。
对于这条线
IERC20(ERC20Token).approve(marketItem[_tokenId].seller, _price);
来电者是合同本身,而不是买方。
所以买方需要在ERC-20合约上手动调用transfer
function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.