【问题标题】:when trying to withdraw BUSD from a smart contract am gettting Gas Estimate Error - JSON-RPC : 32000当尝试从智能合约中提取 BUSD 时出现 Gas Estimate Error - JSON-RPC : 32000
【发布时间】:2023-02-26 04:39:54
【问题描述】:

我想将 BUSD 发送到智能合约,然后只有所有者才能从该智能合约中提取这些 BUSD。有人可以帮我编程吗?

我在下面尝试过,但认为它不会起作用。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "../IERC20.sol";

contract TestBUSD {

    IERC20 tokenContract;
    address private owner;
    uint bal;

    constructor() payable {
        tokenContract = IERC20(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56);
        owner = msg.sender;
    }

    receive() external payable {}

    modifier OnlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function Approvetokens(uint256 _tokenamount) public returns(bool){
       tokenContract.approve(address(this), _tokenamount);
       return true;
   }

    function GetUserTokenBalance() public view returns(uint256){ 
       return tokenContract.balanceOf(msg.sender);
   }

    function deposit(uint256 _tokenamount) payable public {
        tokenContract.transferFrom(msg.sender, address(this), _tokenamount);
        bal += msg.value;
    }

    function getOwner() public view returns (address) {    
        return owner;
    }
    
    function withdrawToken(address _tokenContract, uint256 _amount) payable external {
        require(msg.sender == owner, "Only owner can withdraw!");
        IERC20(_tokenContract);
        tokenContract.transfer(msg.sender, _amount);
    }
}

【问题讨论】:

  • 您在哪个网络上部署合同? BSC 主网,它的本地分支,非分支模拟器(例如 Remix VM),...?
  • 现在在 BSC 测试网上

标签: deployment solidity smartcontracts binance-smart-chain openzeppelin


【解决方案1】:

tokenContract 地址does not hold BSC 测试网上的任何智能合约(在主网上的同一地址上有BUSD token)。

您的 withdrawToken() 函数向 tokenContract 地址发送内部交易,尝试执行其函数 transfer(),并期望从该内部交易返回 bool(如在 IERC20 接口中声明的那样)。但是,由于该地址上没有合约,因此不会生成任何响应——内部交易失败,这也会导致主交易失败。

如果您想专门在 BSC 测试网上测试您的合约,您需要使用部署了 ERC20 代币的代币地址。据我所知,目前测试网上没有正式的 BUSD 版本,因此您可能不得不使用其他代币或您自己的虚拟代币。

或者,如果你只想在非主网网络上测试与 BSUD 交互的合约,我建议你在本地模拟器中访问fork the mainnet

【讨论】:

    【解决方案2】:

    我是初学者,我将 usdt bep20 发送到 busd-t 智能合约。我想撤回它,我该怎么办。谢谢。电子邮件- umoropeh@gmail.com

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-15
    • 2021-06-18
    • 2022-01-24
    • 2021-12-26
    • 2021-12-18
    • 2021-09-14
    • 2021-11-15
    • 2021-09-20
    相关资源
    最近更新 更多