【问题标题】:errors when running 01_deploy_price_consumer twice - killing ganache in brownie运行 01_deploy_price_consumer 两次时出错 - 在 brownie 中杀死 ganache
【发布时间】:2021-11-11 05:56:03
【问题描述】:

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

使用 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

【问题讨论】:

  • 在提出stackoverflow问题时,您必须粘贴错误,以便其他人可以通过网络搜索错误并与您的问题相匹配。您能否以文本形式而不是图片形式添加您遇到的错误代码?
  • 我知道这里发生了什么,但在我回答之前,我想确保我们提出的问题对其他人有帮助。你能看到上面的评论,编辑你的问题,然后在你粘贴代码时用评论通知我吗?
  • 谢谢,我将错误代码编辑到原帖中

标签: python solidity chainlink brownie


【解决方案1】:

brownie 连接到 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 始终重新部署所需的体验,您可以改为在 Development 网络中创建您的 ganache 网络,这样 brownie 就不会记住它的部署,并且始终会重新部署。

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

【讨论】:

  • @john9 如果这没有意义,请告诉我。
猜你喜欢
  • 2021-08-24
  • 2022-01-12
  • 2022-01-01
  • 1970-01-01
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多