首页 > 解决方案 > 注意:如果您发送值并且您发送的值应该小于您当前的余额,则调用的函数应该是应付的

问题描述

我正在尝试使用 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 事务已恢复到初始状态。注意:如果您发送值并且您发送的值应该小于您当前的余额,则调用的函数应该是应付的。调试事务以获取更多信息。

标签: blockchainethereumerc20

解决方案


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

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

这是一篇描述如何使用 Ganache 分叉以太坊主网的文章。

根据文章一键解决:

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

然后,您可以在 Remix IDE 中选择自定义提供程序。

ganache-cli 正在侦听端口 8545,Ganache UI 在 7545 上。

选择 Web3Provider

8545输入带有端口号(ganache-cli) 或7545(Ganache UI)的本地“Web3 Provider Endpoint”地址。

本地 Web3 提供程序


推荐阅读