Seria legal se await ethers.getContract ("Bar") quando executado no modo de bifurcação do hardhat deixasse o hardhat-deploy saber que --network hardhat também pode levar em consideração as implantações / de qualquer rede configurada no bifurcação
Referenciando este problema https://github.com/wighawag/hardhat-deploy-ethers/issues/6
implementado em 0.7.0-beta.29
via hardhat node --fork ... --fork-deployments <networkName>
Copiando de nosso bate-papo para referência:
É exclusivo da rede pela qual você passa --fork-deployments? Idealmente para mim, faria isso:
Desta forma, os testes podem misturar instâncias de contrato bifurcado de mainnet + mocked que você só pode querer implantar na rede de hardhat
ele funciona copiando as implantações da cadeia em localhost
então, seu script de implantação pode decidir substituir a implantação, se desejar
ah ok legal. como ele sabe de qual rede copiar as implantações? Ele analisa forking.url
?
Estou usando hardhat network
bifurcação na memória e não tenho uma instância de hardhat node
execução durante meus testes. Isso também funciona para testes usando bifurcação na rede de hardhat na memória?
ha não, bom ponto, este é apenas um parâmetro para a tarefa do nó.
Devo ser capaz de adicioná-lo à tarefa de teste. reabrindo
re 1.: o argumento para o parâmetro é o nome da rede a partir da qual copiar
Na verdade, @gitpusha , você tem um exemplo de repo sobre como isso é configurado, porque pensar nisso pode precisar de algumas mudanças em como as coisas são tratadas.
atualmente com a rede em memória, não há facilidade para ter informações de contrato pré-implantadas
Posso adicionar um parâmetro semelhante, mas preciso pensar mais
na verdade, você deve ser capaz de usar a configuração de implantações externas:
algo como :
hardhat.config.js
module.exports = {
...
external: {
deployments: {
hardhat: ['deployments/mainnet'],
},
},
}
na verdade, você deve ser capaz de usar a configuração de implantações externas
Isso seria fofo.
hardhat: ['deployments/mainnet']
A ferramenta entende que em hardhat
in deve então olhar tanto para deployments/mainnet
quanto para deployments/hardhat
? Em caso afirmativo, quais implantações têm precedência? Eu gostaria que deployments/mainnet
tivesse precedência se houver sobreposições entre os contratos, uma vez que configurei explicitamente.
Além disso, o diretório deployments/hardhat
será considerado por padrão?
Aqui está um exemplo de repo .
Não tenho certeza de como esse recurso é útil, já que você pode apenas usar
await hre.ethers.getContractAt(abi, address)
em forkmode
vez de acessar instâncias implantadas de uma rede específica.
Portanto, é realmente bom ter.
Tentei a sugestão que postei acima e parece funcionar bem.
As implantações especificadas em externo não terão precedência, mas isso não deve ser um problema, pois o nó por padrão redefinir o contrato em implantações / capacete e, a menos que você force a reimplantação do contrato já implantado, você obterá o de implantações / mainnet
Vou encerrar o problema, mas se você tiver problemas, sinta-se à vontade para reabrir