【问题标题】:brownie-token-tester: BrownieEnvironmentError: Functionality not available in local environmentbrownie-token-tester:BrownieEnvironmentError:功能在本地环境中不可用
【发布时间】:2022-08-18 17:46:57
【问题描述】:

我的代码:

from brownie_tokens import MintableForkToken
...
dai = MintableForkToken(dai_addr) 

在终端中我运行: brownie run scripts/stake.py --network mainnet-fork-dev

输出是:

Brownie v1.19.0 - Python development framework for Ethereum

CurveFiProject is the active project.

Launching \'ganache-cli --accounts 10 --fork https://eth-mainnet.alchemyapi.io/v2/c40U6PVX1zEFdcRfYVjXMC2X1RBpNKpx --mnemonic brownie --port 8545 --hardfork istanbul\'...

Running \'scripts/stake.py::main\'...
Account 0: 0x66aB6D9362d4F35596279692F0251Db635165871
Account 1: 0x33A4622B82D4c04a53e170c638B944ce27cffce3
Dai address: 0x6B175474E89094C44Da98b954EedeAC495271d0F
  File \"brownie/_cli/run.py\", line 55, in main
    _include_frame=True,
  File \"brownie/project/scripts.py\", line 110, in run
    return_value = f_locals[method_name](*args, **kwargs)
  File \"./scripts/stake.py\", line 21, in main
    dai = MintableForkToken(dai_addr)
  File \"brownie/network/contract.py\", line 884, in __init__
    build, sources = _get_deployment(alias=address_or_alias)
  File \"brownie/network/state.py\", line 603, in _get_deployment
    raise BrownieEnvironmentError(\"Functionality not available in local environment\") from None
BrownieEnvironmentError: Functionality not available in local environment

我的环境: 布朗尼版本:v1.19.0 brownie-token-tester 版本:0.3.2 ganache-cli 版本:v6.12.2 Python版本:3.8.13

我在 conda 环境中,我使用 pip 安装了 brownie-token-tester。

有什么方法可以避免错误并使用 MintableForkToken()? 谢谢....

    标签: python ethereum brownie


    【解决方案1】:

    我将.from_explorer(address) 添加到MintableForkToken 和Contract 对象,这解决了问题。请看下面:

    dai = MintableForkToken.from_explorer(dai_addr) #See here
    dai._mint_for_testing(accounts[0], amount)
    
    registry = Contract.from_explorer(registry_addr) #See here
    pool_addr = registry.find_pool_for_coins(dai_addr, usdc_addr)
    pool = Contract.from_explorer(pool_addr)
    
    dai.approve(pool_addr, amount, {"from": accounts[0]})
    pool.add_liquidity([amount, 0, 0], 0, {"from": accounts[0]})
    
    gauges = registry.get_gauges(pool_addr)
    gauge_addr = gauges[0][0]
    gauge_contract = interface.LiquidityGauge(gauge_addr)
    
    lp_token = MintableForkToken.from_explorer(gauge_contract.lp_token())
    lp_token.approve(gauge_addr, amount, {"from": accounts[0]})
    gauge_contract.deposit(lp_token.balanceOf(accounts[0]), {"from": accounts[0]})
    

    您需要将 Etherscan API 密钥添加到给定的网络:

    brownie networks modify mainnet-fork explorer=https://api.etherscan.io/api?apikey=_____________________
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 2021-01-22
      • 2019-04-18
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      相关资源
      最近更新 更多