Hardhat-deploy: 功能请求:允许在分叉模式下从安全帽上的主网进行部署

创建于 2020-11-19  ·  10评论  ·  资料来源: wighawag/hardhat-deploy

如果在安全帽分叉模式下运行时 await ethers.getContract("Bar") 会让安全帽部署知道 --network 安全帽实际上也可以考虑部署/来自在分叉中配置的任何网络,那将会很酷

参考这个问题https://github.com/wigawag/hardhat-deploy-ethers/issues/6

enhancement

所有10条评论

在 0.7.0-beta.29 中实现
通过hardhat node --fork ... --fork-deployments <networkName>

从我们的聊天中复制以供参考:

它是您通过 --fork-deployments 传递的网络所独有的吗? 对我来说理想情况下它会这样做:

  1. 首先查看 —fork-deployments 部署文件夹 - 如果合同不在那里
  2. 查看 - 第二个网络部署文件夹

通过这种方式,测试可以混合来自主网的分叉合约实例 + 您可能只想部署到安全帽网络的模拟合约实例

它的工作原理是将部署从链复制到localhost
那么你的部署脚本可以决定覆盖部署,如果他们愿意

  1. 啊好酷。 它如何知道从哪个网络复制部署? 它解析forking.url吗?

  2. 我正在使用hardhat network内存分叉,并且在我的测试期间没有运行hardhat node的实例。 这是否也适用于在内存安全帽网络上使用分叉的测试?

哈哈,好点,这只是节点任务的参数。
我应该能够将它添加到测试任务中。 重新开放

re 1. : param 的参数是要从中复制的网络的名称

实际上@gitpusha你有一个关于如何设置的 repo 示例,因为考虑它可能需要对事情的处理方式进行一些更改。
目前在内存网络中,没有设施可以预先部署合同信息
我也许可以添加一个类似的参数,但需要考虑更多

实际上你应该能够使用外部部署配置:

就像是 :

安全帽.config.js

module.exports = {
 ...
  external: {
    deployments: {
      hardhat: ['deployments/mainnet'],
    },
  },
}

实际上你应该能够使用外部部署配置

那会很甜蜜。

hardhat: ['deployments/mainnet']

该工具是否理解在hardhat上应该同时查看deployments/mainnetdeployments/hardhat ? 如果是,哪些部署优先? 如果合同之间存在重叠,我希望deployments/mainnet优先,因为我明确配置了它。

另外,默认情况下会考虑deployments/hardhat目录吗?

这是一个示例repo

我不确定这个功能有多大用处,因为你总是可以使用

await hre.ethers.getContractAt(abi, address)

forkmode改为从特定网络访问已部署的实例。

所以它真的只是一个很好的拥有。

我尝试了我上面发布的建议,它似乎工作正常。
external 中指定的部署不会优先,但这不应该是一个问题,因为默认情况下节点会在部署/安全帽中重置合同,因此除非您强制重新部署已部署的合同,否则您将从部署/主网获得

我会关闭问题,但如果您有问题,请随时重新打开

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

tennox picture tennox  ·  4评论

gitpusha picture gitpusha  ·  6评论

jsidorenko picture jsidorenko  ·  3评论

freebyte picture freebyte  ·  9评论

jaypaik picture jaypaik  ·  13评论