首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ERC721:传输呼叫者既不是所有者也不是被批准的

ERC721:传输呼叫者既不是所有者也不是被批准的
EN

Stack Overflow用户
提问于 2021-09-23 14:51:14
回答 1查看 12.1K关注 0票数 6

我有一个nftToken合同,它将造币券传递给msg.sender,然后我在市场合同中有一个函数,它将nft从所有者转移到市场契约。但是,我收到了一个错误: ERC721:传输调用者既不是所有者也不是批准者。

下面是我的nftContract (nft)函数片段:

代码语言:javascript
运行
复制
function createToken(string memory tokenURI) public returns (uint) {
  _tokenIds.increment();
  uint256 newItemId = _tokenIds.current();

  _mint(msg.sender, newItemId);
  _setTokenURI(newItemId, tokenURI);
  setApprovalForAll(contractAddress, true);
  return newItemId;
}

下面是我的市场代码(stripeMarket合同)函数片段:

代码语言:javascript
运行
复制
function createItem(
    address nftContract,
    uint256 tokenId
    ) public payable{
     address _owner = IERC721(nftContract).ownerOf(tokenId);
     IERC721(nftContract).transferFrom(_owner, address(this),tokenId);
      IERC721(nftContract).approve(address(this),tokenId);    
}

在这里,我试图用web3从前端调用它:

代码语言:javascript
运行
复制
const getItems=async()=>{
      await contracts.nft.methods.createToken("https://i.ytimg.com/vi/nYxGhQYi0s4/maxresdefault.jpg").send({from: accounts[0]});
      const owners = await contracts.nft.methods.ownerOf(1).call({from:accounts[0]});
      await contracts.stripeMarket.methods.createItem(contracts.nft._address,1).send({from: {owners}}); 
}

但我发现了错误:

ERC721:传输呼叫者既不是所有者也不是被批准的.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-26 08:28:28

nftContract**'s执行setApprovalForAll(contractAddress, true)时,它允许contractAddress (市场契约)操作所有的令牌**。

但是新铸造的令牌属于msg.sender -,而不是。因此,批准不适用于此令牌。

根据您的用例,您可以

  1. 将新的令牌复制到nftContract (而不是msg.sender),以便允许市场合同操作它。或者直接按照市场合约来做。

//所有者是nftContract _mint(地址(这里),newItemId);//市场合同允许操作nftContract的令牌setApprovalForAll(contractAddress,true);

  1. msg.sender (令牌所有者)在执行createItem()之前在nftContract上执行approve(marketAddress, tokenId)

这将使市场合同批准经营这一特定的令牌拥有的msg.sender。(假设它与_owner的地址相同,否则它将失败。)

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69302320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档