1

目前在练习 3 的 chainlink 训练营:部署到本地区块链。

使用 ganache 时,如果我在运行后有一个新的 chainlink-mix 文件夹

brownie run scripts/price_feed_scripts/01_deploy_price_consumer_v3.py

一切都编译得很好。但是当我关闭 ganache(ctrl+C) 并打开另一个 ganache 并运行相同的命令时,我得到了大量的错误。

如果我删除 chainlink mix 并获得一个新的克隆,我可以解决这个问题。我想知道如何解决这个问题,而无需每次都获得一个新文件夹。

编辑:我01_deploy_price_consumer再次运行该命令以查看是否可以将 eth 的默认 getLatestPrice 更改为 3000 而不是 2000

C:\Users\N\new\chainlink-mix>brownie run scripts/price_feed_scripts/01_deploy_price_consumer_v3.py
INFO: Could not find files for the given pattern(s).
Brownie v1.16.3 - Python development framework for Ethereum

ChainlinkMixProject is the active project.
  File "C:\Users\N\AppData\Local\Programs\Python\Python39\lib\site-packages\brownie\_cli\__main__.py", line 64, in main
    importlib.import_module(f"brownie._cli.{cmd}").main()
  File "C:\Users\N\AppData\Local\Programs\Python\Python39\lib\site-packages\brownie\_cli\run.py", line 43, in main
    network.connect(CONFIG.argv["network"])
  File "C:\Users\N\AppData\Local\Programs\Python\Python39\lib\site-packages\brownie\network\main.py", line 55, in connect
    p._load_deployments()
  File "C:\Users\N\AppData\Local\Programs\Python\Python39\lib\site-packages\brownie\project\main.py", line 357, in _load_deployments
    contract = ProjectContract(self, build, build_json.stem)
  File "C:\Users\N\AppData\Local\Programs\Python\Python39\lib\site-packages\brownie\network\contract.py", line 1292, in __init__
    _DeployedContractBase.__init__(self, address, owner, tx)
  File "C:\Users\N\AppData\Local\Programs\Python\Python39\lib\site-packages\brownie\network\contract.py", line 758, in __init__
    raise ContractNotFound(f"No contract deployed at {address}")
ContractNotFound: No contract deployed at 0xa1d97e44c6Ac5327DEa2deCAb5f9E1085b8Bcf38
4

1 回答 1

2

布朗尼连接到 3 种网络:

  • Ethereum
  • Ethereum Classic(我们可以忽略这个)
  • Development

您可以通过brownie networks list在终端中运行来查看它们。

Ethereum类别中创建网络时,brownie 将保存已部署的合约的地址,在这种情况下,您的本地 ganache 链在Ethereum类别中。它记得,但在build文件夹中存储地址。

因此,当您第一次将合约部署到本地 ganache 链时,brownie 将地址存储在其构建文件夹中。这些合约存在于你的 ganache 链上。但是,当您删除 ganache 链并创建一个新链时,这些合约也会被删除,但 brownie 仍然认为它们存在。

brownie networks list截断输出:

Ethereum
  ├─Mainnet (Infura): mainnet
  └─ganache: ganache (brownie will remember these)

Development
  ├─Ganache-CLI: development
  └─ganache-temp: ganache-temp (brownie won't remember these)

如果您希望 brownie 始终重新部署所需的体验,您可以在网络中创建您的 ganache 网络Development,这样 brownie 就不会记住它的部署,并且总是会重新部署。

但是,这意味着您将无法运行任何第二个脚本,就像brownie run scripts/price_feed_scripts/02_whatever_this_one_is.py因为 brownie 不记得那里有任何合同一样。

于 2021-09-19T01:37:12.317 回答