簡體   English   中英

使用轉賬 function 發送 ERC20 代幣

[英]Sending ERC20 tokens using the transfer function

我對 Solidity 編程很陌生,我目前正在嘗試在 Remix 中運行一個簡單的智能合約,如下所示:

pragma solidity ^0.8.0;

import "github.com/OpenZeppelin/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol";

contract Swap  {
    address public owner;
    uint256 public balance;
    
    event TransferReceived(address _from, uint _amount);
    event TransferSent(address _from, address _destAddr, uint _amount);
    
    constructor() {
        owner = msg.sender;
    }
    
    receive() payable external {
        balance += msg.value;
        emit TransferReceived(msg.sender, msg.value);
    }    
    
    function withdraw(uint amount, address payable destAddr) public {
        require(msg.sender == owner, "Only owner can withdraw funds"); 
        require(amount <= balance, "Insufficient funds");
        
        destAddr.transfer(amount);
        balance -= amount;
        emit TransferSent(msg.sender, destAddr, amount);
    }
    
    function transferERC20(IERC20 token, address to, uint256 amount) public {
        require(msg.sender == owner, "Only owner can withdraw funds"); 
        uint256 erc20balance = token.balanceOf(address(this));
        require(amount <= erc20balance, "balance is low");
        token.transfer(to, amount);
        emit TransferSent(msg.sender, to, amount);
    }    
}

雖然我可以成功發送 BNB 並調用withdraw function 提供發送的值和我在 BSC 測試網中的錢包地址,但在運行transferERC20 function 時遇到問題。 我在調用此方法時得到的唯一 output 是以下消息:

氣體估計錯誤並顯示以下消息(見下文)。 事務執行可能會失敗。 是否要強制發送? 內部 JSON-RPC 錯誤。 {“代碼”:-32000,“消息”:“執行恢復”}

我嘗試了幾個在 testnet.bscscan 網站上為 BNB 找到的不同地址,同時確保合約有足夠的資金進行轉賬,但我沒有成功。

有人可以建議我的合同/設置可能出了什么問題嗎? 我是否正確進行此轉移?

  • 修復構造器

    constructor() { // payable allows payment of ether with a call. owner = payable(msg.sender); }
  • 確保滿足這些require語句

     require(msg.sender == owner, "Only owner can withdraw funds"); require(amount <= balance, "Insufficient funds");
  • 檢查您是否連接到正確的網絡

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM