USDC预估gas“从零地址批准”

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

我正在尝试估计 USDC 智能合约上的 ERC20 批准所需的 Gas 费用,虽然我的实现在任何其他 ERC20 合约的主网和 Sepolia 上都有效,但当我在 USDC 上这样做时,它会失败。

有人知道使用 USDC 这样做有什么具体要求吗?

我正在使用 Ethers.js v5 和标准 ERC20 ABI。

我的实现如下所示:

const erc20Contract = new ethers.Contract(contractAddress, ERC20_ABI, this.provider);
return erc20Contract.estimateGas.approve(address, amount);

地点:

  • contractAddress
    是合约地址
  • this.provider
    是 Infura
  • address
    是目的地地址
  • amount
    是用适当的小数位数计算出的
    BigNumber

我得到的错误如下:

错误:无法估算gas;交易可能会失败或可能需要手动gas限制[请参阅:https://links.ethers.org/v5-errors-UNPREDICTABLE_GAS_LIMIT](reason =“执行恢复:ERC20:从零地址批准”,method =“estimateGas”,交易={“至”:“0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238”,“数据”:“0x095ea7b300000000000000000000000000000000000000000000000000000000000 000dead0000000000000000000000000000000000000000000000000de0b6b3a7640000","accessList":null}, error={"reason":"处理响应错误","code":"SERVER_ERROR","body" :"{"jsonrpc":"2.0","id":56,"错误":{"代码":3,"数据":"0x08c379a000000000000000000000000000000000000000000000000000000000000000020000000000 000000000000000000000000000000000000000000000000000002445524332303a20617070726f76652066726f6d20746865207a65726f2061646472 65737300000000000000000000000000000000000000000000000000000000","message":"执行恢复:ERC20:从零开始批准地址"}}","错误":{"代码":3,"数据":"0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000 0000000000000000000000000000000000002445524332303a20617070726 f76652066726f6d20746865207a65726f20616464726573730000000000000 00000000000000000000000000000000000000000000"},"requestBody":"{"method":"eth_estimateGas","params":[{"to": “0x1c7d4b196cb0c7b01d743fbc6116a902379c7238”,“数据”:“0x095ea7b300000000000000000000000000000000000000000000000000000000000000dead00 00000000000000000000000000000000000000000000000de0b6b3a7640000"}],"id":56,"jsonrpc":"2.0"}","requestMethod":"POST","url":"https://sepolia.infura .io/v3/d5ca672c9aa246ff9df442b72d89bc4a"},代码=UNPREDICTABLE_GAS_LIMIT,版本=providers/5.7.2)

鉴于错误提到“从零地址批准”,我尝试过硬编码

0x000000000000000000000000000000000000dead
0x000000000000000000000000000000000000dEaD
作为目标地址,但没有帮助。

我不确定我错过了什么。任何帮助将不胜感激。

ethereum smartcontracts erc20
1个回答
0
投票

无法估算gas;交易可能会失败或可能需要手动限制 Gas

以太坊智能合约钱包执行智能合约功能有两个步骤。首先,他们模拟交易,检查函数签名是否正确。如果正确,它将执行该函数,如果不正确,则会出现上述错误。话虽如此,您传递了错误的函数参数。

ERC20:从零地址批准

在 Solidity 中,每种类型都有默认值。

address
类型的默认值为零地址。由于某种原因,
from address
未正确设置,默认为零地址。

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