[英]Access a smart contract that is deployed on the Ropsten network from an App
[英]when trying to withdraw BUSD from a smart contract am gettting Gas Estimate Error - JSON-RPC : 32000
我想将 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);
}
}
tokenContract
地址在 BSC 测试网上不持有任何智能合约(在主网上的同一地址上存在BUSD代币)。
您的withdrawToken()
function 向tokenContract
地址发送一个内部交易,试图执行它的 function transfer()
,并期望从此内部交易返回一个bool
(如IERC20
接口中所声明的)。 但是,由于该地址上没有合约,因此不会产生任何响应——内部交易失败,导致主交易也失败。
如果你想在 BSC 测试网上专门测试你的合约,你需要使用一个部署了 ERC20 代币的代币地址。 据我所知,目前测试网上没有正式的 BUSD 版本,所以你可能不得不使用其他代币或你自己的虚拟代币。
或者,如果您只想在非主网网络上测试与 BSUD 交互的合约,我建议您在本地模拟器中分叉主网。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.