内部 JSON-RPC 错误。付费使用 safeTransferFrom 时“执行已恢复”

问题描述 投票:0回答:2

这是我用 Solidity 编写的智能合约。如果我不收取任何交易费用,它就 100% 有效。当我添加 2 条线路来收取费用时,我收到此错误。 这个智能合约的作用非常简单。它将 2 个代币(_tokenId1 和 _tokenId2)转移给客户,我们向他们收取交易费用。

// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";

contract SilverPack {

   event OperatorChanged (address previousOperator, address newOperator);
   event SilverPackTransferCompleted (address offerer, address receiver);

  
  address operator;

  constructor (address _operator) {
        operator = _operator;
    }

  

function saleBronce(address _offerer, address _hostContract, uint _tokenId1, uint _tokenId2, uint256 price) public payable {
    ERC1155 hostContract = ERC1155(_hostContract);
    require(msg.value >= price);     // this line causes the error
    payable(msg.sender).transfer(price); // this line also causes the error
    hostContract.safeTransferFrom(_offerer, msg.sender, _tokenId1, 1,"");
    hostContract.safeTransferFrom(_offerer, msg.sender, _tokenId2, 1,"");  
      
     emit SilverPackTransferCompleted(_offerer, msg.sender);
 }


  function changeOperator(address _newOperator) external {
        require(msg.sender == operator,"only the operator can change the current operator");
        address previousOperator = operator;
        operator = _newOperator;
        emit OperatorChanged(previousOperator, operator);
    }

}

我遇到的错误是。

Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending?
Internal JSON-RPC error. { "code": -32000, "message": "execution reverted" }

编译过程中没有报错。仅当我尝试运行 saleBronce 函数时才会出现此错误。

我的问题是,如何更改这两条线,以便我可以进行转账,同时收取费用?

    require(msg.value >= price);
    payable(msg.sender).transfer(price);
solidity transfer nft fee
2个回答
0
投票

如果您发送的交易价格参数低于价值。这两行不会有问题。问题可能取决于之后的行(safeTransferFroms),但为了准确分析,您可以在 require 语句中添加错误原因以查看问题所在。目前的信息还不足以决定恢复原因。


0
投票

当我尝试将加密货币从一个钱包发送到另一个钱包时,当我调查它时,我收到一个 json rpc 错误,它归结为这个错误。但在“听”了你们两个之后,我更加困惑了,我是H 帮助

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.