如果在安全帽分叉模式下运行时 await ethers.getContract("Bar") 会让安全帽部署知道 --network 安全帽实际上也可以考虑部署/来自在分叉中配置的任何网络,那将会很酷
参考这个问题https://github.com/wigawag/hardhat-deploy-ethers/issues/6
在 0.7.0-beta.29 中实现
通过hardhat node --fork ... --fork-deployments <networkName>
从我们的聊天中复制以供参考:
它是您通过 --fork-deployments 传递的网络所独有的吗? 对我来说理想情况下它会这样做:
通过这种方式,测试可以混合来自主网的分叉合约实例 + 您可能只想部署到安全帽网络的模拟合约实例
它的工作原理是将部署从链复制到localhost
那么你的部署脚本可以决定覆盖部署,如果他们愿意
啊好酷。 它如何知道从哪个网络复制部署? 它解析forking.url
吗?
我正在使用hardhat network
内存分叉,并且在我的测试期间没有运行hardhat node
的实例。 这是否也适用于在内存安全帽网络上使用分叉的测试?
哈哈,好点,这只是节点任务的参数。
我应该能够将它添加到测试任务中。 重新开放
re 1. : param 的参数是要从中复制的网络的名称
实际上@gitpusha你有一个关于如何设置的 repo 示例,因为考虑它可能需要对事情的处理方式进行一些更改。
目前在内存网络中,没有设施可以预先部署合同信息
我也许可以添加一个类似的参数,但需要考虑更多
实际上你应该能够使用外部部署配置:
就像是 :
安全帽.config.js
module.exports = {
...
external: {
deployments: {
hardhat: ['deployments/mainnet'],
},
},
}
实际上你应该能够使用外部部署配置
那会很甜蜜。
hardhat: ['deployments/mainnet']
该工具是否理解在hardhat
上应该同时查看deployments/mainnet
和deployments/hardhat
? 如果是,哪些部署优先? 如果合同之间存在重叠,我希望deployments/mainnet
优先,因为我明确配置了它。
另外,默认情况下会考虑deployments/hardhat
目录吗?
这是一个示例repo 。
我不确定这个功能有多大用处,因为你总是可以使用
await hre.ethers.getContractAt(abi, address)
在forkmode
改为从特定网络访问已部署的实例。
所以它真的只是一个很好的拥有。
我尝试了我上面发布的建议,它似乎工作正常。
external 中指定的部署不会优先,但这不应该是一个问题,因为默认情况下节点会在部署/安全帽中重置合同,因此除非您强制重新部署已部署的合同,否则您将从部署/主网获得
我会关闭问题,但如果您有问题,请随时重新打开