blockchain - 注意:如果您发送值并且您发送的值应该小于您当前的余额,则调用的函数应该是应付的
问题描述
我正在尝试使用 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 事务已恢复到初始状态。注意:如果您发送值并且您发送的值应该小于您当前的余额,则调用的函数应该是应付的。调试事务以获取更多信息。
解决方案
Remix VM 模拟器无法访问部署在主网地址上的合约 - 它位于不同的环境中。
但是,您可以将主网分叉到您的本地环境,然后将 Remix 连接到该本地环境。
这是一篇描述如何使用 Ganache 分叉以太坊主网的文章。
根据文章一键解决:
ganache-cli --fork https://mainnet.infura.io/v3/{infura_project_id}
然后,您可以在 Remix IDE 中选择自定义提供程序。
ganache-cli 正在侦听端口 8545,Ganache UI 在 7545 上。
8545
输入带有端口号(ganache-cli) 或7545
(Ganache UI)的本地“Web3 Provider Endpoint”地址。
推荐阅读
- linux - 用 shell 脚本中的随机数替换 XML 属性值
- reactjs - React Native:重新渲染太多。React 限制渲染次数以防止无限循环
- c# - 如何在循环的每次迭代后将值传递给单独的变量,或传递给数组以供后续在循环中使用/使用?
- spring - 使用 JDBC 的 Spring Integration 消息传递应用程序
- python - 如何禁用 QWizard 所有页面的后退按钮?
- django - 如何创建表单控制部分?
- amazon-dynamodb - (DynamoDB 集合)集合查询是否需要 sortKey?
- django - 刷新页面时如何限制选择的选项(依赖选择)?
- reactjs - 在 React js 中调度异步操作时如何返回空操作?
- php - 如何在 Laravel 的模型中变异为布尔值?