【问题标题】:Note: The called function should be payable if you send value and the value you send should be less than your current balance注意:如果您发送值并且您发送的值应该小于您当前的余额,则调用的函数应该是应付的
【发布时间】:2021-11-04 15:08:09
【问题描述】:

我正在尝试使用 openzeppelin 的 ERC20 实现,但出现错误。 tokenAddress 是现有 ERC20 代币的地址,例如 USDC - 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0-solc-0.7/contracts/token/ERC20/ERC20.sol";

ERC20 token = ERC20(tokenAddress);
token.balanceOf(msg.sender);

一个错误

revert 事务已恢复到初始状态。笔记: 如果您发送值和值,则应支付被调用的函数 您发送的金额应少于您当前的余额。调试 交易以获取更多信息。

【问题讨论】:

  • 0xA0b8... 地址持有以太坊主网上的合约。错误是否发生在主网上?或者您是否尝试在不同的环境中执行它(例如 Remix JS VM 模拟器、测试网等)?
  • 我正在尝试在 Remix 上执行
  • 我正在寻找一种可以接受现有 ERC20 代币付款的解决方案
  • 地址0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48是基于ERC20接口的USDC币

标签: blockchain ethereum erc20


【解决方案1】:

Remix VM 模拟器无法访问部署在主网地址上的合约 - 它位于不同的环境中。

但是,您可以将主网 fork 到您的本地环境,然后将 Remix 连接到该本地环境。

这是一个article,描述了如何使用 Ganache 分叉以太坊主网。

根据文章一键解决:

ganache-cli --fork https://mainnet.infura.io/v3/{infura_project_id}

Ganache 默认使用端口 7545 进行 JSON-RPC,因此您可以在 Remix 配置中选择自定义提供程序

并使用7545 端口输入本地地址

http://127.0.0.1:7545

【讨论】:

  • 我设法实例化了代币,但我将如何获得其中的一些付款?
猜你喜欢
  • 2020-08-06
  • 2022-01-23
  • 2023-01-21
  • 2020-03-08
  • 2019-01-30
  • 1970-01-01
  • 2019-03-20
  • 2014-10-01
  • 1970-01-01
相关资源
最近更新 更多