You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mumbai测试网Aave闪电贷weth.balanceOf报Fallback not allowed

问题定位:Aave V2闪电贷脚本在Polygon Mumbai测试网运行报Fallback not allowed错误

问题背景

  • 运行目标:执行aave-flashloan-mix仓库下的run_flash_loan_v2.py脚本,目标网络为Polygon Mumbai测试网(对应Brownie配置中的polygon-test网络)
  • 已完成配置:修改brownie-config中polygon-test网络对应的合约地址,配置内容如下:
polygon-test:
    aave_lending_pool_v2: "0x178113104fEcbcD7fF8669a0150721e231F0FD4B"
    weth: "0xee9eE614Ad26963bEc1Bec0D2c92879ae1F209fA"
  • 已完成操作:领取WMATIC测试币,通过命令brownie run scripts/deployment_v2.py --network polygon-test完成合约部署
  • 报错场景:执行brownie run scripts/run_flash_loan_v2.py --network polygon-test运行闪电贷脚本时抛出异常,报错信息如下:
Getting Flashloan contract...
  File "brownie/_cli/run.py", line 51, in main
    return_value, frame = run(
  File "brownie/project/scripts.py", line 103, in run
    return_value = f_locals[method_name](*args, **kwargs)
  File "./scripts/run_flash_loan_v2.py", line 16, in main
    if weth.balanceOf(flashloan) < MINIMUM_FLASHLOAN_WETH_BALANCE:
  File "brownie/network/multicall.py", line 115, in _proxy_call
    result = ContractCall.__call__(*args, **kwargs)  # type: ignore
  File "brownie/network/contract.py", line 1751, in __call__
    return self.call(*args, block_identifier=block_identifier, override=override)
  File "brownie/network/contract.py", line 1542, in call
    raise VirtualMachineError(e) from None
VirtualMachineError: revert: Fallback not allowed
  • 已知信息:Mumbai网络中上述报错的weth.balanceOf(flashloan)逻辑实际需要查询WMATIC余额,使用的钱包地址0x7cc6FA028dffa310445af40C3abEea61F8534d97持有足额测试资金,需要定位问题根因。

根因分析

报错Fallback not allowed的触发逻辑是:调用目标地址上不存在的合约方法时,EVM会尝试路由到该地址的fallback函数处理请求,若该地址没有配置允许调用的fallback逻辑,就会直接触发回滚。具体到该场景,核心问题是配置文件中填写的weth字段对应地址错误:

  • 当前配置的0xee9eE614Ad26963bEc1Bec0D2c92879ae1F209fA不是Mumbai测试网的标准WMATIC合约地址,该地址要么是无合约代码的普通EOA钱包地址,要么是未实现balanceOf标准ERC20方法的非标准合约,调用balanceOf方法时必然触发fallback回滚。
  • Mumbai测试网的官方WMATIC合约地址为0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889,和填写的地址不匹配,是报错的根本原因。
  • 个人钱包持有足额测试资金和该报错无关:这行代码的逻辑是查询已部署的闪电贷合约地址的WETH/WMATIC余额,用于确认合约持有足够资产支付闪电贷手续费,和个人地址余额没有关联。

修复步骤

  • 修改brownie-config.yaml中polygon-test网络下的weth字段值为Mumbai测试网官方WMATIC地址0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889
  • 重新执行部署命令brownie run scripts/deployment_v2.py --network polygon-test,确保新部署的合约读取到正确的资产地址
  • 部署完成后给新部署的闪电贷合约转入少量WMATIC(金额大于配置中MINIMUM_FLASHLOAN_WETH_BALANCE要求的阈值即可,用于支付闪电贷手续费),再运行闪电贷脚本即可正常执行。

内容的提问来源于stack exchange,提问作者Siqueira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:36:36