EVM 与 USDC 交互恢复 Solidity 交易

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

我在 Solidity 中创建了一个与 USDC 交互的智能合约。但是,当我尝试执行事务时,我遇到了 EVM 恢复错误。我希望能得到一些帮助来了解可能导致此问题的原因。

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

interface IERC20 {
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}

contract USDCInteraction {
    IERC20 public USDC = IERC20(0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C);
   
    function approveUSDC(address spender, uint256 amount) external returns (bool) {
        return USDC.approve(spender, amount);
    }

    function transferUSDC(address recipient, uint256 amount) external returns (bool) {
        return USDC.transfer(recipient, amount);
    }

    function transferFromUSDC(address sender, address recipient, uint256 amount) external returns (bool) {
        return USDC.transferFrom(sender, recipient, amount);
    }

    function getAllowanceUSDC(address owner, address spender) external view returns (uint256) {
        return USDC.allowance(owner, spender);
    }
}

这是我看到的错误消息:

Transaction has been reverted by the EVM: 
{
  "blockHash": "0x3ba70ec628fa9d039f9e72d2afe2eea1f364abda33ce826f0ccaa4ffad8a486d",
  ...
  "status": false, 
  ...
  "type": "0x2", 
  "events": {}
}

问题:

我的合同是否存在任何可能导致此错误的明显问题? 与 USDC 或类似代币交互时,我是否应该注意其他检查或修改? 任何帮助或见解将不胜感激!

solidity smartcontracts web3js solana
1个回答
0
投票
"type": "0x2

这表示“创建”交易。部署新合约是一个

CREATE
交易。我认为初始化地址不正确

IERC20 public USDC = IERC20(0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C);

如果错误与任何函数调用相关,编译器将抛出正确的错误消息,因为

ERC20
合约在每个函数中有太多
require
检查。

© www.soinside.com 2019 - 2024. All rights reserved.